一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

怎樣使OLED和加速度計(jì)交互

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

掃碼添加小助手

加入工程師交流群

步驟1:介紹加速度計(jì)ADXL335

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

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

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

現(xiàn)在我們知道了OLED和加速度計(jì)的工作原理,現(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ā)生的事情。首先,我們包含了運(yùn)行該程序所需的所有庫。 JUGL庫包含繪制圓所需的功能,而JUGL_SSD1306_128x64庫用于初始化屏幕。最后一個(gè)庫還包含“ DrawPoint”和“ Flush”功能,以繪制圓的每個(gè)像素并將其顯示在屏幕上。 SPI和Wire庫用于通過SPI或I2C與設(shè)備通信。在這種情況下,我們正在使用I2C通信。由于該庫支持許多驅(qū)動(dòng)程序,因此需要指定我們正在使用的驅(qū)動(dòng)程序。第6行通過指定在128x64屏幕上使用驅(qū)動(dòng)程序SSD1306來解決此問題。以下是該庫支持的其他驅(qū)動(dòng)程序:

EPD 2.0

EPD 1.44

EPD 2.7

PCF8833

KS0107

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

接下來,我們轉(zhuǎn)到代碼的設(shè)置部分。在這里,我們引用了正在使用的驅(qū)動(dòng)程序?;趨⒖迹覀兂跏蓟聊?,并獲取其寬度和高度。最后,我們將函數(shù)稱為“圓形”。該函數(shù)清除屏幕并設(shè)置球的半徑和原點(diǎn)。我們使用庫中的“ FillCircle”和“ Flush”功能繪制球并顯示。這將在屏幕的左下角生成一個(gè)球,該球的半徑為5個(gè)像素,原點(diǎn)為(5,5)。

步驟5:動(dòng)作中的傳感器

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

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

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

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

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

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

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

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

責(zé)任編輯:wv

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

    關(guān)注

    120

    文章

    6286

    瀏覽量

    228127
  • 加速度計(jì)
    +關(guān)注

    關(guān)注

    6

    文章

    729

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

    ADXL345超低功耗3軸加速度計(jì)中文手冊

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

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

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

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

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

    MEMS加速度計(jì)的工作原理是什么

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

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

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

    具有TLV2772的3V加速度計(jì)

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

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

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

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

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

    e2studio開發(fā)三軸加速度計(jì)LIS2DW12(3)----檢測活動(dòng)和靜止?fàn)顟B(tài)

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

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

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

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

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