99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣使OLED和加速度計交互

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-19 10:54 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:介紹加速度計ADXL335

在本教程中,我們將展示如何使用庫顯示球并使用加速度計使其在屏幕上移動。我們將使用的加速度計是ADXL335。

傳感器可以測量x,y和z軸上的加速度,就像重力引起的加速度一樣。因此,如果傳感器在靜止狀態(tài)下與地面平行,則只有一根軸會感覺到重力加速度。傾斜設(shè)備時,其他軸也會開始感覺到重力加速度。這樣,就有可能分析設(shè)備的移動方式。

步驟2:將加速度計添加到OLED設(shè)置

現(xiàn)在我們知道了OLED和加速度計的工作原理,現(xiàn)在該創(chuàng)建設(shè)置了。

首先,我們需要按照上圖所示的以下方式將傳感器添加到OLED設(shè)置中。

傳感器的針腳如下所示連接到Arduino

VCC – 5V

GND – GND

X – A3

Y – A2

Z和ST保持未連接狀態(tài)

步驟3:代碼

設(shè)置好連線后,我們可以使用以下代碼創(chuàng)建游戲:

#include

#include

#include

#include

using namespace JUGL;

SSD1306_128x64 driver;

const int xpin = A3; //Assign pin A3 to x

const int ypin = A2; //Assign pin A2 to y

int x, y, x1, y1, r, varx, vary, width, height; //Define variables

int xy [2]; //Array to hold (x,y) coordinate

//Declaration of functions

void Circle(IScreen& scr);

void move_right(IScreen& scr);

void stop_right(IScreen& scr);

void move_left(IScreen& scr);

void stop_left(IScreen& scr);

void move_up(IScreen& scr);

void stop_up(IScreen& scr);

void move_down(IScreen& scr);

void stop_down(IScreen& scr);

void setup(){

IScreen& screen = driver; //Make reference to driver

screen.Begin(); //Initialize screen

width = screen.GetWidth(); //Get width of screen (128)

height = screen.GetHeight(); //Get height of screen (64)

Circle(screen); //Draw circle

}

void loop(){

x1 = analogRead(xpin); //Read x analog data

y1 = analogRead(ypin); //Read y analog data

IScreen& screen = driver; //Make reference to driver

if(x1《500){ //Check if sensor is tilted to the right

move_right(screen); //Move ball right

if(varx》=width-1-r ){ //Check if ball reached end of screen

stop_right(screen); //Stop moving

}

}

if(x1》520){ //Check if sensor is tilted to the left

move_left(screen); //Move ball left

if(varx=height-1-r){ //Check if ball reached end of screen

stop_up(screen); //Stop moving

}

}

if(y1》510){ //Check if sensor is tilted down

move_down(screen); //Move ball down

if(varyr){ //Check if ball is within boundaries

scr.Flush(); //Display on screen

}

}

void stop_left(IScreen& scr){

scr.Clear(); //Clear screen

varx = r; //Update varx

xy[0] = varx; //Store new varx value

scr.FillCircle(Point(5,xy[1]),r); //Draw circle

scr.Flush(); //Display on screen

}

void move_up(IScreen& scr){

scr.Clear(); //Clear screen

vary += 10; //Move ball 10 pixels up, assign value to vary

xy[1] = vary; //Store new vary value

scr.FillCircle(Point(xy[0],vary),r); //Draw circle

if(varyr){ //Check if ball is within boundaries

scr.Flush(); //Display on screen

}

}

void stop_down(IScreen& scr){

scr.Clear(); //Clear screen

vary = r; //Update vary

xy[1] = vary; //Store new vary value

scr.FillCircle(Point(xy[0],5),r); //Draw circle

scr.Flush(); //Display on screen

}

第4步:代碼說明

所以這是代碼中正在發(fā)生的事情。首先,我們包含了運行該程序所需的所有庫。 JUGL庫包含繪制圓所需的功能,而JUGL_SSD1306_128x64庫用于初始化屏幕。最后一個庫還包含“ DrawPoint”和“ Flush”功能,以繪制圓的每個像素并將其顯示在屏幕上。 SPI和Wire庫用于通過SPI或I2C與設(shè)備通信。在這種情況下,我們正在使用I2C通信。由于該庫支持許多驅(qū)動程序,因此需要指定我們正在使用的驅(qū)動程序。第6行通過指定在128x64屏幕上使用驅(qū)動程序SSD1306來解決此問題。以下是該庫支持的其他驅(qū)動程序:

EPD 2.0

EPD 1.44

EPD 2.7

PCF8833

KS0107

在代碼的下一部分,我們將Arduino的模擬輸入A3和A2分別分配給傳感器的x和y引腳。我們還定義了將要使用的變量,并創(chuàng)建一個數(shù)組來保存x和y坐標(球的原點)。然后,對將在此程序中使用的功能進行前向聲明。

接下來,我們轉(zhuǎn)到代碼的設(shè)置部分。在這里,我們引用了正在使用的驅(qū)動程序。基于參考,我們初始化屏幕,并獲取其寬度和高度。最后,我們將函數(shù)稱為“圓形”。該函數(shù)清除屏幕并設(shè)置球的半徑和原點。我們使用庫中的“ FillCircle”和“ Flush”功能繪制球并顯示。這將在屏幕的左下角生成一個球,該球的半徑為5個像素,原點為(5,5)。

步驟5:動作中的傳感器

現(xiàn)在我們有了球,我們可以使用傳感器使其移動。

在程序的循環(huán)部分中,我們引用了我們再次使用的驅(qū)動程序。然后,我們從引腳x和y讀取數(shù)據(jù),并將值分別分配給變量x1和y1。上表顯示了每個引腳的值,具體取決于設(shè)備的傾斜度。

通過將這些值與“靜止”值進行比較,我們可以確定設(shè)備是否向右,向左傾斜,等。讓我們以程序中的第一種情況為例。

我們知道,如果設(shè)備向右傾斜,則“靜止”值將減小。發(fā)生這種情況時,程序?qū)⒄{(diào)用函數(shù)“ move_right”。該函數(shù)清除屏幕,然后將值10添加到變量“ varx”(在這種情況下為零)。這表示我們要在x軸上移動球原點的像素數(shù)。然后,我們將新值“ varx”存儲在數(shù)組的第一個位置。最后,我們調(diào)用“ FillCircle”和“ Flush”函數(shù)在屏幕上顯示一個新的圓,該新圓與x軸上的上一個圓相距10個像素。只要引腳X的值小于510,該過程就會不斷重復(fù),從而擦除上一個圓,并在每次迭代時將新的像素畫出10個像素。這給人一種錯覺,那就是球在向右移動。

但是,如果球到達屏幕末端,則會調(diào)用“ stop_right”功能。此函數(shù)清除屏幕,將varx設(shè)置為126,并將此值存儲在數(shù)組的第一個位置。然后調(diào)用函數(shù)“ FillCircle”和“ Flush”繪制并顯示一個球,球的原點為(126,xy [1])。換句話說,該程序?qū)⑼V箤⑶蛳蛴乙苿?0個像素,而是將在屏幕y所在的任何位置繼續(xù)在屏幕右側(cè)的邊緣繪制相同的圓。

當設(shè)備向左,向上或向下傾斜時,使用相同的想法。

步驟6:傳感器在起作用-繼續(xù)

每次我們在屏幕上移動球時,都需要跟蹤x和y軸的變化。如前所述,這是通過在每次球的原點發(fā)生變化時將新的x和y值存儲在數(shù)組中來完成的。例如,如果我們將球向右移動并停止,以使繪制的最后一個球的原點為(30,5),則要從那里向上移動球,則必須考慮到球的變化。 x軸,以便在繪制新球時,其原點位于(30,15)。換句話說,數(shù)組中保存的值用作下一個要繪制的球的參考位置。

責任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • OLED
    +關(guān)注

    關(guān)注

    120

    文章

    6286

    瀏覽量

    228108
  • 加速度計
    +關(guān)注

    關(guān)注

    6

    文章

    728

    瀏覽量

    46885
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Analog Devices Inc. ADXL373微功耗3軸MEMS加速度計數(shù)據(jù)手冊

    Analog Devices Inc. ADXL373微功耗3軸MEMS加速度計是一款超低功耗、±400g微機電系統(tǒng)(MEMS)加速度計,以2560Hz輸出數(shù)據(jù)速率 (ODR) 工作時功耗為19μA
    的頭像 發(fā)表于 06-26 14:30 ?194次閱讀
    Analog Devices Inc. ADXL373微功耗3軸MEMS<b class='flag-5'>加速度計</b>數(shù)據(jù)手冊

    Analog Devices Inc. ADXL367 MEMS加速度計數(shù)據(jù)手冊

    Analog Devices Inc. ADXL367 MEMS加速度計是一款超低功耗、3軸微機電系統(tǒng) (MEMS) 加速度計,在100Hz輸出數(shù)據(jù)速率下功耗為0.89μA,在運動觸發(fā)喚醒模式下功耗
    的頭像 發(fā)表于 06-20 15:02 ?257次閱讀
    Analog Devices Inc. ADXL367 MEMS<b class='flag-5'>加速度計</b>數(shù)據(jù)手冊

    ADXL382 低噪聲密度、低功耗、3 軸加速度計數(shù)據(jù)手冊和產(chǎn)品介紹

    Analog Devices ADXL382 加速度計具有低噪聲密度和低功耗,可在高振動環(huán)境中進行精確測量 Analog Devices ADXL382 低噪聲密度、低功耗、3 軸加速度計支持
    的頭像 發(fā)表于 04-07 15:07 ?1105次閱讀
    ADXL382 低噪聲密度、低功耗、3 軸<b class='flag-5'>加速度計</b>數(shù)據(jù)手冊和產(chǎn)品介紹

    高性能石英加速度計,滿足最嚴苛應(yīng)用需求

    在精度、可靠性和環(huán)境適應(yīng)性至關(guān)重要的行業(yè)中,ER-QA-02A高性能石英加速度計無疑是一款顛覆性的產(chǎn)品。專為最具挑戰(zhàn)性的環(huán)境設(shè)計,這款先進的加速度計以無與倫比的精度和穩(wěn)定性,成為航空航天、國防、工業(yè)以及地震監(jiān)測等領(lǐng)域的理想選擇。
    的頭像 發(fā)表于 02-19 17:41 ?529次閱讀

    ADXL345超低功耗3軸加速度計中文手冊

    電子發(fā)燒友網(wǎng)站提供《ADXL345超低功耗3軸加速度計中文手冊.pdf》資料免費下載
    發(fā)表于 01-06 16:35 ?5次下載

    十軸姿態(tài)傳感器模塊 | 集成加速度計、陀螺儀、磁力,自帶BLE5.0藍牙

    海凌科全新推出HLK-AS2001十軸姿態(tài)傳感器模塊,集成加速度計、陀螺儀和磁力,自帶BLE5.0藍牙,開發(fā)簡單,應(yīng)用廣泛。什么是十軸姿態(tài)傳感器模塊?HLK-AS2001十軸姿態(tài)傳感器模塊是海凌科
    的頭像 發(fā)表于 01-06 12:47 ?1019次閱讀
    十軸姿態(tài)傳感器模塊 | 集成<b class='flag-5'>加速度計</b>、陀螺儀、磁力<b class='flag-5'>計</b>,自帶BLE5.0藍牙

    ADS1258 AVSS 5ms內(nèi)電壓跳變后,讀取加速度計的值變?yōu)樵瓉淼囊话胧菫槭裁矗?/a>

    時,ADS1258輸出為正常情況下的一半(正常情況下測得加速度計為1G,故障發(fā)生時為0.5左右,且無論如何移動加速度計,轉(zhuǎn)換后的值只發(fā)生小幅度變化)。測量過IX IY IZ及VX VY VZ在電源波動時的值未發(fā)生變化。CPU為TMS320F28335.
    發(fā)表于 11-22 07:42

    MEMS加速度計的工作原理是什么

    MEMS加速度計的工作原理主要基于牛頓第二定律,即力等于質(zhì)量乘以加速度。以下是對其工作原理的介紹: 一、核心部件與結(jié)構(gòu) MEMS加速度計的核心部件包括一個微小的質(zhì)量塊、彈性元件(如彈簧梁)以及檢測器
    的頭像 發(fā)表于 11-20 10:09 ?2413次閱讀

    PCB Piezotronics推出357A67型三軸電荷輸出加速度計

    據(jù)麥姆斯咨詢報道,近期,PCB Piezotronics推出了357A67型三軸電荷輸出加速度計,以滿足高溫應(yīng)用需求。這款新型號是PCB Piezotronics目前最小的三軸電荷輸出加速度計,可
    的頭像 發(fā)表于 11-09 11:03 ?1916次閱讀
    PCB Piezotronics推出357A67型三軸電荷輸出<b class='flag-5'>加速度計</b>

    具有TLV2772的3V加速度計

    電子發(fā)燒友網(wǎng)站提供《具有TLV2772的3V加速度計.pdf》資料免費下載
    發(fā)表于 10-11 11:00 ?0次下載
    具有TLV2772的3V<b class='flag-5'>加速度計</b>

    EPSON工業(yè)級加速度計選型

    愛普生加速度計(Accelerometers)是一種工業(yè)級三軸輸出壓電式加速度傳感器,采用具有專利技術(shù)的雙音叉式石英傳感器元件和Quarts光刻技術(shù),通過壓電效應(yīng)來計算出諸如此類的內(nèi)容物體運動的方向
    的頭像 發(fā)表于 09-19 15:31 ?699次閱讀
    EPSON工業(yè)級<b class='flag-5'>加速度計</b>選型

    e2studio開發(fā)三軸加速度計LIS2DW12(4)----測量傾斜度

    本文將介紹如何驅(qū)動和利用LIS2DW12三軸加速度計的傾斜檢測理論和傾斜角測量方法。一般來說,這里描述的程序也可以應(yīng)用于三軸模擬或數(shù)字加速度計,這取決于它們各自的規(guī)格。
    的頭像 發(fā)表于 08-09 16:00 ?1159次閱讀
    e2studio開發(fā)三軸<b class='flag-5'>加速度計</b>LIS2DW12(4)----測量傾斜度

    e2studio開發(fā)三軸加速度計LIS2DW12(3)----檢測活動和靜止狀態(tài)

    本文將介紹實時獲取和處理加速度數(shù)據(jù)。程序的核心流程包括初始化硬件接口、配置加速度計的參數(shù),以及通過輪詢檢查中斷信號來不斷讀取加速度數(shù)據(jù)。
    的頭像 發(fā)表于 08-09 15:53 ?1030次閱讀
    e2studio開發(fā)三軸<b class='flag-5'>加速度計</b>LIS2DW12(3)----檢測活動和靜止狀態(tài)

    e2studio開發(fā)三軸加速度計LIS2DW12(2)----基于中斷信號獲取加速度數(shù)據(jù)

    本文將介紹實時獲取和處理加速度數(shù)據(jù)。程序的核心流程包括初始化硬件接口、配置加速度計的參數(shù),以及通過輪詢檢查中斷信號來不斷讀取加速度數(shù)據(jù)。
    的頭像 發(fā)表于 08-09 15:43 ?1022次閱讀
    e2studio開發(fā)三軸<b class='flag-5'>加速度計</b>LIS2DW12(2)----基于中斷信號獲取<b class='flag-5'>加速度</b>數(shù)據(jù)

    e2studio開發(fā)三軸加速度計LIS2DW12(1)----輪詢獲取加速度數(shù)據(jù)

    本文將介紹如何驅(qū)動和利用LIS2DW12傳感器,實現(xiàn)精確的運動感應(yīng)功能。 IS2DW12是一款高性能、超低功耗的三軸線性加速度計,屬于“femto”系列,利用了成熟的微機械加速度計制造工藝。這個
    的頭像 發(fā)表于 08-09 14:54 ?2380次閱讀
    e2studio開發(fā)三軸<b class='flag-5'>加速度計</b>LIS2DW12(1)----輪詢獲取<b class='flag-5'>加速度</b>數(shù)據(jù)