一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲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)不再提示

用Arduino和加速度傳感器制作數(shù)字滾球迷宮【前篇】

吳湛 ? 2023-02-20 13:24 ? 次閱讀

這次將為大家介紹一個(gè)使用Arduino制作的獨(dú)特電子作品,將會(huì)分【前篇】和【后篇】?jī)刹糠诌M(jìn)行介紹。為我們介紹這個(gè)非常有趣的電子制作項(xiàng)目的是平原真先生,他是一位以事物之間的關(guān)系為主題進(jìn)行探索的藝術(shù)家。平原先生同時(shí)也是大阪藝術(shù)大學(xué)的副教授,迄今為止,他使用計(jì)算機(jī)和電子器件制作了很多媒體藝術(shù)作品。在Device Plus上,平原先生也發(fā)表了一些極具意義的電子作品,例如“用Arduino制作的太陽(yáng)能電池板供電數(shù)字生態(tài)箱”和“用Arduino和TOF距離傳感器制作甜甜圈播放器”。下面,讓我們來(lái)看看這次會(huì)是什么樣作品。

前言

大家好!我叫平原。這個(gè)問(wèn)題可能有點(diǎn)突然:您有沒(méi)有玩過(guò)巨大的迷宮?這通常是一種景點(diǎn),玩家進(jìn)入一個(gè)由比人高的墻壁組成的迷宮,通過(guò)克服旋轉(zhuǎn)門和岔路等重重關(guān)卡,最后到達(dá)終點(diǎn)。這種游戲在1980年代風(fēng)靡日本全國(guó),但現(xiàn)在貌似只剩下屈指可數(shù)的幾處了。我在小時(shí)候曾經(jīng)玩過(guò),當(dāng)時(shí)曾經(jīng)想:“要是能從天上往下看就好了!”

這次我想制作一個(gè)能夠?qū)崿F(xiàn)這樣的童年夢(mèng)想的作品。希望制作出一個(gè)當(dāng)實(shí)物迷宮傾斜時(shí),屏幕中的迷宮也會(huì)傾斜并且小球會(huì)滾動(dòng)的裝置,玩家需要交互確認(rèn)和比較實(shí)物迷宮和屏幕中的迷宮才能到達(dá)終點(diǎn)!

本項(xiàng)目的組成

本項(xiàng)目共分為六個(gè)部分:

作品規(guī)劃和制作準(zhǔn)備

電子電路

Arduino程序

制作迷宮外殼

創(chuàng)建迷宮的3D模型

Unity程序

本文是前篇,將介紹1到3的內(nèi)容,最后我們會(huì)測(cè)試電子電路的工作情況。在后篇中,我們將使用激光加工機(jī)制作迷宮外殼,并使用Unity完成3D迷宮游戲。

1. 作品規(guī)劃和制作準(zhǔn)備

整體規(guī)劃

在這項(xiàng)作品中,如果您傾斜實(shí)物迷宮,屏幕中的迷宮也會(huì)傾斜,里面的小球也會(huì)隨之滾動(dòng)。這個(gè)項(xiàng)目的亮點(diǎn)在于,通過(guò)實(shí)物迷宮可以看到整個(gè)迷宮,但無(wú)法知道小球的位置,在屏幕上只能看到小球周圍的區(qū)域,所以必須交互確認(rèn)實(shí)物迷宮和屏幕中的迷宮。

盒子里面是包括用來(lái)檢測(cè)傾斜的加速度傳感器和微控制器開發(fā)板Arduino UNO,通過(guò)USB數(shù)據(jù)線連接到電腦。當(dāng)您傾斜盒子時(shí),傾斜數(shù)據(jù)會(huì)被發(fā)送到名為“Unity”的軟件,該軟件用來(lái)在電腦上顯示運(yùn)行的3D迷宮。Unity根據(jù)接收到的數(shù)據(jù)傾斜3D迷宮,小球會(huì)根據(jù)物理運(yùn)算滾動(dòng)。

另外,我還希望實(shí)現(xiàn)更換實(shí)物迷宮后3D迷宮也隨之切換這一目標(biāo),這樣可以使游戲更加富有妙趣。此外,當(dāng)玩家成功到達(dá)終點(diǎn)時(shí),還還需要通過(guò)振動(dòng)來(lái)表示一下喜悅之情。

pYYBAGPyzrGAOOOMAADfII2g_hg526.png

系統(tǒng)構(gòu)成

下面,我們繪制一個(gè)實(shí)現(xiàn)整體規(guī)劃所需設(shè)備的簡(jiǎn)圖,并構(gòu)思整體的設(shè)備構(gòu)成。

首先,需要用加速度傳感器來(lái)讀取傾斜度。然后,還需要用來(lái)讀取迷宮切換情況的反射式光電傳感器和用來(lái)產(chǎn)生振動(dòng)的振動(dòng)電機(jī)。另外,還需要通過(guò)微控制器開發(fā)板Arduino來(lái)控制這些電子器件并與電腦進(jìn)行通信。用USB數(shù)據(jù)線連接Arduino和電腦,在電腦上運(yùn)行Unity,并與Arduino通信和顯示迷宮。

poYBAGPyzrOAYAIhAAEY7N9ZM1c649.png

接下來(lái),需要根據(jù)電壓、耗電量、所使用的引腳、通信方式、實(shí)物尺寸、作品的炫酷程度等因素,來(lái)選擇具體部件。如果您從主要部件和選項(xiàng)較少的部件開始著手,會(huì)更容易理清思路。

加速度傳感器

加速度傳感器包括將加速度輸出為電壓的模擬類型,以及通過(guò)I2C等進(jìn)行通信的數(shù)字類型。最近,數(shù)字型加速度傳感器已成為主流。這次,我們將使用ROHM的加速度傳感器模塊“KX224-1053”和可以通過(guò)Arduino輕松使用的傳感器擴(kuò)展板“SHIELD-EVK-001”。

羅姆傳感器評(píng)估套件

pYYBAGPyzraAPNLsAAJ0sAwTX2Q979.jpg

反射式光電傳感器

反射式光電傳感器是一種照射紅外線并讀取對(duì)象物反射光線的裝置。在這里,我們利用光反射量會(huì)因?qū)ο笪锏念伾兓@一特點(diǎn),來(lái)讀取迷宮的類型。如果有兩個(gè)反射式光電傳感器,那么就可以分辨出四種迷宮。這次我們將使用常用的“RPR-220”。

poYBAGPyzrmAE2KZAACB9EKWvXw320.jpg

振動(dòng)電機(jī)

振動(dòng)電機(jī)是一種通過(guò)使偏心塊旋轉(zhuǎn)而產(chǎn)生振動(dòng)的裝置,也稱為“偏心電機(jī)”。這次為了簡(jiǎn)化電路,我們將使用工作電壓在2.0v ?3.0v,工作電流在大約50mA、可直接通過(guò)Arduino控制的振動(dòng)電機(jī)。

pYYBAGPyzruAWFdSAACAskxIbiY968.jpg

Serial Port Utility Pro

Unity與Arduino之間的通信僅通過(guò)標(biāo)準(zhǔn)功能也能實(shí)現(xiàn),但這次我們將使用名為“Serial Port Utility Pro (SPUP)” 的工具。使用SPUP進(jìn)行通信時(shí),您可以不必?fù)?dān)心運(yùn)行環(huán)境的差異。這個(gè)工具在資源商店的售價(jià)為79美元,不過(guò)您可以從其官網(wǎng)下載試用版。試用版需要在通信量達(dá)到一定程度時(shí)重新啟動(dòng)Unity。我們可以在開發(fā)過(guò)程中使用試用版,在想長(zhǎng)期使用時(shí)購(gòu)買它。

迷宮外殼結(jié)構(gòu)

根據(jù)整體規(guī)劃和所需功能來(lái)考慮外殼的結(jié)構(gòu)。比較有效率的做法是先手繪草圖,等大框架定好后再用CAD等進(jìn)行設(shè)計(jì)。這次是一個(gè)簡(jiǎn)單的盒子,所以我是用Illustrator設(shè)計(jì)的。

這次要考慮的要點(diǎn)是:適合用雙手拿著的尺寸、可以更換迷宮、可以用反射式光電傳感器讀取迷宮的背面。我決定設(shè)計(jì)成盒狀,將電路收納在盒子中,將迷宮配置在盒蓋上。在盒蓋的背面做黑色和白色標(biāo)記,用反射式光電傳感器來(lái)讀取標(biāo)記。

材質(zhì)采用椴木單板,用激光加工機(jī)切割,用木材專用膠粘合。如果想要看得見內(nèi)部,也可以使用透明的亞克力板。請(qǐng)根據(jù)自己的喜好選擇。

poYBAGPyzr2AAUxYAACxhnMroVs763.png

poYBAGPyzr-AK4N8AADoXsKX5kM294.png

零部件清單

我在下面匯總了要使用的物料,價(jià)格和購(gòu)買網(wǎng)址為截至撰寫本文時(shí)的數(shù)據(jù)。運(yùn)費(fèi)另計(jì)。

產(chǎn)品名稱 購(gòu)買鏈接 數(shù)量 參考價(jià)格(日元)
Arduino UNO http://akizukidenshi.com/catalog/g/gM-07385/ 1 ¥2,940
USB數(shù)據(jù)線A-B http://akizukidenshi.com/catalog/g/gC-07605/ 1 ¥130
傳感器擴(kuò)展板(SHIELD-EVK-001) https://www.rohm.co.jp/distribution/-/dinventory/SHIELD-EVK-001/sample/0 1 ¥5,523
加速度傳感器模塊(KX224-1053) https://www.rohm.co.jp/sensor-shield-support/accelerometer 1 ¥2,740
面包板 http://akizukidenshi.com/catalog/g/gP-00315/ 1 ¥270
振動(dòng)電機(jī) http://akizukidenshi.com/catalog/g/gP-15315/ 1 ¥110
電阻器(39Ω) http://akizukidenshi.com/catalog/g/gR-14274/ 1 ¥100
反射式光電傳感器(RPR-220) http://akizukidenshi.com/catalog/g/gI-11401/ 2 ¥100
電阻器(150Ω) http://akizukidenshi.com/catalog/g/gR-25151/ 2 ¥100
電阻器(10kΩ) http://akizukidenshi.com/catalog/g/gR-25103/ 2 ¥100
跳線(公對(duì)公) http://akizukidenshi.com/catalog/g/gC-05371/ 適宜 ¥180
椴木單板(450m x 300m x 4m) https://shop.woodworks-marutoku.com/products/shinafree/item/shina002.php 2 ¥360
Serial Port Utility Pro(串口通信庫(kù)) https://assetstore.unity.com/packages/tools/utilities/serial-port-utility-pro-125863?locale=ja-JP 1 $79

分發(fā)文件

創(chuàng)建示例所需的數(shù)據(jù)請(qǐng)從以下鏈接下載。其中包括Arduino程序和用于切割椴木單板的形狀數(shù)據(jù)等。
>> 數(shù)據(jù)下載(50.4MB)

CutBox.ai
外殼盒體部分的激光加工用數(shù)據(jù)

CutMaze.ai
外殼迷宮部分的激光加工用數(shù)據(jù)

ArduinoApp
Arduino用程序

UnityApp
Unity的項(xiàng)目

BreadboadHolder.stl
用來(lái)提高面包板高度的部件

MazeLv1.obj、MazeLv2.obj、MazeLv3-A.obj、MazeLv3-B.obj
迷宮的3D模型

2. 電子電路

布線圖與電路圖

我們需要一邊確認(rèn)電子部件的技術(shù)規(guī)格書一邊設(shè)計(jì)電路。同時(shí),在考慮實(shí)際物體的大小和位置關(guān)系的同時(shí),還要考慮布線的長(zhǎng)度等因素。

加速度傳感器模塊可以安裝在傳感器擴(kuò)展板上并固定在Arduino UNO上面,因此布線很簡(jiǎn)單:將反射式光電傳感器和振動(dòng)電機(jī)配置在面包板上。

布線圖

pYYBAGPyzsCAPlTSAAFy4DzXeWU957.png

電路圖是表示電氣連接關(guān)系的圖,布線圖是考慮到表示實(shí)際尺寸和位置關(guān)系等因素而繪制的接線圖。在您還不能熟練使用的階段,完全按照布線圖制作更容易一些,但是當(dāng)您習(xí)慣于制作并能夠自己繪制電路或嵌入他人的電路時(shí),通過(guò)電路圖進(jìn)行思考更容易理解。

電路圖

pYYBAGPyzsKAbF_qAABtZelXPv8634.png

組裝

下面我們組裝電子電路。這次我沒(méi)有采用焊接的方式,而是用跳線將其連接到面包板上,因此無(wú)需擔(dān)心失敗。在作業(yè)的時(shí)候,請(qǐng)對(duì)照布線圖和照片進(jìn)行。作業(yè)步驟如下:

加速度傳感器模塊和傳感器擴(kuò)展板

反射式光電傳感器

振動(dòng)電機(jī)

布線

步驟1:加速度傳感器模塊和傳感器擴(kuò)展板

傳感器擴(kuò)展板自帶的插座可以安裝共8個(gè)傳感器模塊。加速度傳感器模塊適用“I2C”的通信標(biāo)準(zhǔn),因此請(qǐng)將其插入標(biāo)有“I2C_1”的插座。請(qǐng)調(diào)整角度,使模塊處于水平狀態(tài)。

poYBAGPyzsaAAnGFAALRr8bTs6o593.jpg

接下來(lái),將傳感器擴(kuò)展板連接到Arduino UNO。請(qǐng)確保所有引腳都牢牢地插入內(nèi)部,以便使加速度傳感器模塊處于水平狀態(tài)。另外,請(qǐng)垂直施加力量,以防止長(zhǎng)引腳彎曲。雖然后續(xù)也可以拔除,但由于長(zhǎng)引腳容易彎曲,所以還請(qǐng)謹(jǐn)慎處理。

pYYBAGPyzsuAYcvgAAKYSg2A5gI544.jpg

步驟2:反射式光電傳感器

反射式光電傳感器有4根引腳。由于4根引腳的長(zhǎng)度不同,所以請(qǐng)按照最短的引腳切齊。用鉗子切斷時(shí),切除掉的余腳的可能會(huì)飛濺,請(qǐng)注意防護(hù)。

poYBAGPyzsyAG3EgAACfH2adlE0230.jpg

將電阻器從根部彎曲成直角,并在距離根部約1厘米處切割。

pYYBAGPyzs6AHlu0AAERxQzmPl4360.jpg

接下來(lái),請(qǐng)參考布線圖將其插入面包板。注意反射式光電傳感器按45度切割時(shí)的角度位置。如果切角在右上方,則反射式光電傳感器的左半部分是紅外LED,右半部分是光電晶體管。紅外LED側(cè)(左側(cè))的電阻為 150Ω,光電晶體管側(cè)(右側(cè))的電阻為10kΩ。由于電阻器沒(méi)有極性,因此它的朝向無(wú)所謂。跳線如果使用硬跳線,布局效果會(huì)給人清爽的感覺(jué)。跳線的顏色可以是任意顏色,但為了使布線圖清晰易懂,通常電源(5V)用紅色,地線(GND)用黑色。

pYYBAGPyztKADSIRAAJbVEmKqRA972.jpg

步驟3:振動(dòng)電機(jī)

將振動(dòng)電機(jī)的引出線皮膜剝?nèi)ゼs1厘米,然后將其插入面包板。如果導(dǎo)線很細(xì)而且難以插入,請(qǐng)將電阻引腳切掉的部分焊接到引出線上。用兩面膠將振動(dòng)電機(jī)牢固地固定在面包板上。這個(gè)振動(dòng)電機(jī)的標(biāo)準(zhǔn)電壓是3V,標(biāo)準(zhǔn)電流是55mA,電源是來(lái)自Arduino的5V電源,所以按照(5v-3v)/0.055A=36.4Ω,使用的電阻是39Ω。

poYBAGPyztWASwPCAAKAQh2-ZR4916.jpg

步驟4:布線

用跳線連接配置在Arduino UNO上的傳感器擴(kuò)展板與面包板。如果在您將其放入盒子里時(shí)跳線造成干涉,將端部的引腳彎曲90度就可以整齊地收納在盒子里面了。

pYYBAGPyztmATAjYAAMBaWi3yrs618.jpg

pYYBAGPyztuAeEiwAAMohb42L4s303.png

3. Arduino程序

現(xiàn)在讓我們看一下Arduino程序。這次的項(xiàng)目需要以下四個(gè)功能:

從加速度傳感器模塊讀取值

讀取反射式光電傳感器的值

通過(guò)串行通信發(fā)送讀取到的傳感器值

接收和處理來(lái)自Unity的命令

在對(duì)每一個(gè)功能進(jìn)行解說(shuō)后,將會(huì)給出整個(gè)程序。

從加速度傳感器模塊讀取值

為了與加速度傳感器模塊“KX224-1053”進(jìn)行通信,需要使用專用的庫(kù)。首先,請(qǐng)從產(chǎn)品介紹頁(yè)面的軟件部分下載ZIP文件。然后,從Arduino IDE菜單中選擇 [Sketch] > [Include Library] > [Add .ZIP Library],并選擇下載的ZIP文件。

另外,您也可以從這個(gè)頁(yè)面下載產(chǎn)品手冊(cè)供參考。

>>加速度傳感器模塊產(chǎn)品介紹

在Arduino程序中,首先加載I2C庫(kù)和加速度傳感器模塊的庫(kù)。
然后創(chuàng)建KX224類的對(duì)象(Object)??梢詮脑搶?duì)象讀取加速度傳感器的值。

#include //I2C庫(kù)
#include //加速度傳感器庫(kù)
KX224 kx224(KX224_DEVICE_ADDRESS_1E);//創(chuàng)建加速度傳感器的對(duì)象

在setup函數(shù)中,啟動(dòng)I2C庫(kù)并初始化KX224對(duì)象,如果失敗,則通過(guò)串行通信發(fā)送消息。。

byte rc;//啟動(dòng)檢查變量
Wire.begin();//I2C庫(kù)啟動(dòng)

rc = kx224.init();//加速度傳感器對(duì)象的初始化
if (rc != 0) {//加速度傳感器對(duì)象的啟動(dòng)檢測(cè)
  Serial.println(F("KX224 initialization failed"));
  Serial.flush();
}

當(dāng)將float數(shù)組傳遞給KX224對(duì)象的get_val函數(shù)時(shí),傳感器的值將會(huì)輸入。如果返回值為0,則讀取成功。

byte rc;//用于確認(rèn)傳感器讀數(shù)。
float acc[3];//
rc = kx224.get_val(acc);//將加速度代入acc,如果可以讀取則返回 0。

讀取反射式光電傳感器的值

將反射式光電傳感器連接到引腳A0和A1并通過(guò)analogRead函數(shù)讀取。盒子背面的標(biāo)記是白色和黑色的,通過(guò)Unity軟件更改模擬讀取閾值。

int photoRef1 = analogRead(A0);//讀取反射式光電傳感器
int photoRef2 = analogRead(A1);

通過(guò)串行通信發(fā)送讀取到的傳感器值

將加速度傳感器的三個(gè)值和兩個(gè)反射式光電傳感器的值用逗號(hào)分隔并作為字符串發(fā)送。最后,發(fā)送換行代碼。Unity將接收到的字符串以逗號(hào)分隔并返回到數(shù)組中使用。

Serial.print(acc[0]);//X軸
Serial.print(",");
Serial.print(acc[1]);//Y軸
Serial.print(",");
Serial.print(acc[2]);//Z軸
Serial.print(",");
Serial.print(photoRef1);//反射式光電傳感器1
Serial.print(",");
Serial.print(photoRef2);//反射式光電傳感器2
Serial.println("");

接收和處理來(lái)自Unity的命令

當(dāng)來(lái)自Unity的命令發(fā)送過(guò)來(lái)時(shí),將執(zhí)行串行通信接收事件。連接接收到的字符串,當(dāng)收到換行代碼時(shí),將接收完成標(biāo)志設(shè)置為True。

void serialEvent() {//接收到串行通信的事件
  while (Serial.available()) {
    char inChar = (char)Serial.read();    // 將接收到的數(shù)據(jù)轉(zhuǎn)換為字符串
    inputString += inChar;    // 添加到inputString
    if (inChar == 'n') {// 當(dāng)接收到換行代碼時(shí),設(shè)置接收完成標(biāo)志。
      stringComplete = true;
    }
  }
}

檢查loop函數(shù)中的接收完成標(biāo)志,如果為True,則檢查命令的內(nèi)容并進(jìn)行相應(yīng)的處理。在這次的項(xiàng)目中,當(dāng)字符串是“start”時(shí),振動(dòng)電機(jī)旋轉(zhuǎn),當(dāng)字符串是“stop”時(shí),則電機(jī)停止。

if (stringComplete) {//設(shè)置了接收完成標(biāo)志時(shí)的處理
  String is = inputString;//復(fù)制接收到的字符串
  is.trim();//刪除換行代碼

  if ( is.equals("start") ) //當(dāng)收到start 時(shí)
  {
    digitalWrite(2, HIGH);//使電機(jī)運(yùn)轉(zhuǎn)
  }

  if ( is.equals("stop") ) //當(dāng)接收到stop時(shí)
  {
    digitalWrite(2, LOW);//使電機(jī)停止
  }

  inputString = "";//清除接收到的字符串
  stringComplete = false;//清除接收到的標(biāo)志
}

整體草圖

請(qǐng)?jiān)贏rduino IDE中輸入以下源代碼并將其寫入Arduino UNO

#include ///I2C庫(kù)
#include //加速度傳感器庫(kù)
KX224 kx224(KX224_DEVICE_ADDRESS_1E);//創(chuàng)建加速度傳感器的對(duì)象

String inputString = "";//保存接收數(shù)據(jù)的變量
bool stringComplete = false;  //判斷接收是否完成的標(biāo)志


void setup() {
  byte rc;

  Serial.begin(57600);//串行通信開始
  while (!Serial);

  Wire.begin();//I2C庫(kù)啟動(dòng)

  rc = kx224.init();//加速度傳感器對(duì)象的初始化
  if (rc != 0) {//加速度傳感器對(duì)象的啟動(dòng)檢測(cè)
    Serial.println(F("KX224 initialization failed"));
    Serial.flush();
  }

  pinMode(2, OUTPUT);
  pinMode(A0, INPUT);
  pinMode(A1, INPUT);
}


void loop() {

  // ============================================
  // 加速度傳感器的讀取和發(fā)送
  // ============================================
  byte rc;//用于確認(rèn)傳感器讀數(shù)。
  float acc[3];//

  int photoRef1 = analogRead(A0);//反射式光電傳感器的讀取
  int photoRef2 = analogRead(A1);

  rc = kx224.get_val(acc);//將加速度代入acc,如果可以讀取則返回 0。
  if (rc == 0) {
    Serial.print(acc[0]);//X軸
    Serial.print(",");
    Serial.print(acc[1]);//Y軸
    Serial.print(",");
    Serial.print(acc[2]);//Z軸
    Serial.print(",");
    Serial.print(photoRef1);//反射式光電傳感器1
    Serial.print(",");
    Serial.print(photoRef2);//反射式光電傳感器2
    Serial.println("");
  }


  // ============================================
  // 處理接收到的命令
  // ============================================
  if (stringComplete) {//設(shè)置了接收完成標(biāo)志時(shí)的處理

    String is = inputString;//復(fù)制接收到的字符串
    is.trim();//刪除換行代碼

    if ( is.equals("start") ) //當(dāng)收到start 時(shí)
    {
      digitalWrite(2, HIGH);//使電機(jī)運(yùn)轉(zhuǎn)
    }

    if ( is.equals("stop") ) //當(dāng)接收到stop時(shí)
    {
      digitalWrite(2, LOW);//使電機(jī)停止
    }

    inputString = "";//清除接收到的字符串
    stringComplete = false;//清除接收到的標(biāo)志
  }

  delay(10);
}


// ============================================
// 串行通信的接收
// ============================================
void serialEvent() {//接收到串行通信的事件
  while (Serial.available()) {
    char inChar = (char)Serial.read();    // 將接收到的數(shù)據(jù)轉(zhuǎn)換為字符串
    inputString += inChar;    // 添加到inputString
    if (inChar == 'n') {// 當(dāng)接收到換行代碼時(shí),設(shè)置接收完成標(biāo)志。
      stringComplete = true;
    }
  }
}

工作測(cè)試

我們已經(jīng)創(chuàng)建了電子電路和Arduino程序,現(xiàn)在讓我們確認(rèn)一下工作情況。用USB數(shù)據(jù)線連接Arduino UNO和電腦后,請(qǐng)打開Arduino IDE的串口監(jiān)視器,將通信速度設(shè)置為57600bps。先會(huì)顯示消息“KX224_WHO_AMI Register Value = 0x2B”,從下一行開始會(huì)出現(xiàn)用逗號(hào)分隔的五個(gè)數(shù)字。

前三個(gè)是加速度傳感器模塊的X、Y、Z值。當(dāng)傳感器模塊水平放置時(shí),X和Y輸出0,Z輸出1。當(dāng)傳感器模塊傾斜時(shí),值在-1~1的范圍內(nèi)變化。請(qǐng)傾斜Arduino UNO并確認(rèn)值的變化情況。
后兩個(gè)數(shù)值是反射式光電傳感器得值。當(dāng)附近沒(méi)有任何東西時(shí),輸出個(gè)位數(shù)的值,當(dāng)物體接近至距離5mm左右時(shí),該值會(huì)超過(guò)500。請(qǐng)用手指等確認(rèn)實(shí)際的反應(yīng)情況。

pYYBAGPyzt2AchyBAACq--2yvK4083.png

接下來(lái),確認(rèn)接收命令后振動(dòng)電機(jī)是否工作。在串口監(jiān)控器的輸入字段中輸入“start”,然后按回車鍵。如果振動(dòng)電機(jī)工作,則意味著成功了。如果電機(jī)不動(dòng),請(qǐng)確認(rèn)面包板接線和接收程序命令的位置是否有錯(cuò)誤。然后請(qǐng)鍵入“stop”來(lái)確認(rèn)電機(jī)是否停止。

poYBAGPyzuCANV1-AAC3UTJ6J4M994.png

如果可以確認(rèn)加速度傳感器模塊、反射式光電傳感器、振動(dòng)電機(jī)的工作都沒(méi)問(wèn)題,那么第一部分(前篇)就完成了。大家辛苦了!在后篇中,我們將完成實(shí)物迷宮的制作,并用Unity創(chuàng)建一個(gè)3D迷宮,敬請(qǐng)期待!

本系列連載一覽

前篇:用Arduino和加速度傳感器制作數(shù)字滾球迷宮(本章)
后篇:用Arduino和加速度傳感器制作數(shù)字滾球迷宮

審核編輯黃宇

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

    關(guān)注

    143

    文章

    9217

    瀏覽量

    147922
  • 加速度傳感器
    +關(guān)注

    關(guān)注

    12

    文章

    478

    瀏覽量

    55620
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6485

    瀏覽量

    189749
收藏 人收藏

    評(píng)論

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

    什么是加速度傳感器?加速度傳感器如何工作

    。但是剛開始的時(shí)候,你會(huì)發(fā)現(xiàn)光測(cè)量?jī)A角和加速度好像不是很有用。但是,現(xiàn)在工程師們已經(jīng)想出了很多方法獲得更多的有用的信息。加速度傳感器可以幫助你的機(jī)器人了解它現(xiàn)在身處的環(huán)境。是在爬山?還是在走下坡,摔倒
    發(fā)表于 02-02 15:30

    arduino學(xué)習(xí)筆記12 - ADXL345加速度傳感器實(shí)驗(yàn)

    中就是使用加速度傳感器與陀螺儀進(jìn)行卡爾曼濾波進(jìn)行姿態(tài)矯正。本次試驗(yàn)使用的ADXL345數(shù)字傳感器,通過(guò)I2C或者SPI接口直接輸出數(shù)字信號(hào)。
    發(fā)表于 10-24 09:39

    加速度傳感器的應(yīng)用詳解

    幾個(gè)例子,更好的認(rèn)識(shí)加速度傳感器?! ∮螒蚩刂啤 ?b class='flag-5'>加速度傳感器可以檢測(cè)上下左右的傾角的變化,因此通過(guò)前后傾斜手持設(shè)備來(lái)實(shí)現(xiàn)對(duì)游戲中物體的前后左右的方向控制,就變得很簡(jiǎn)單。  圖像自動(dòng)翻
    發(fā)表于 12-07 15:30

    加速度傳感器應(yīng)用詳解

    例子,更好的認(rèn)識(shí)加速度傳感器。 游戲控制 加速度傳感器可以檢測(cè)上下左右的傾角的變化,因此通過(guò)前后傾斜手持設(shè)備來(lái)實(shí)現(xiàn)對(duì)游戲中物體的前后左右的方向控制,就變得很簡(jiǎn)單。 圖像自動(dòng)翻轉(zhuǎn)
    發(fā)表于 11-07 16:15

    加速度傳感器的原理

    加工方法制造的加速度傳感器難以全面滿足這些要求。于是應(yīng)用新興的微機(jī)械加工技術(shù)制作的微加速度傳感器應(yīng)運(yùn)而生。這種
    發(fā)表于 11-08 15:46

    加速度傳感器原理

    加工方法制造的加速度傳感器難以全面滿足這些要求。于是應(yīng)用新興的微機(jī)械加工技術(shù)制作的微加速度傳感器應(yīng)運(yùn)而生。這種
    發(fā)表于 11-09 10:39

    如何測(cè)量汽車剎車踏板的位移和加速度

    要求測(cè)量汽車剎車踏板的位移和加速度,然后用VB上位機(jī)顯示,單片機(jī)是STC08S2,已有最小系統(tǒng),加速度準(zhǔn)備用3軸加速度傳感器測(cè)量,位移傳感器
    發(fā)表于 07-19 05:56

    加速度傳感器的選型

    由于傳感器應(yīng)用十分廣泛,類型多種多樣,在各行各業(yè)都有應(yīng)用。因此,在這里主要介紹用于振動(dòng)測(cè)試的振動(dòng)傳感器的選型。按測(cè)量振動(dòng)參量分類可分為三大類:位移傳感器、速度
    發(fā)表于 08-11 07:49

    加速度傳感器的工作原理解析

    滿足這些要求。于是應(yīng)用新興的微機(jī)械加工技術(shù)制作的微加速度傳感器應(yīng)運(yùn)而生。這種傳感器體積小、重量輕、功耗小、啟動(dòng)快、成本低、可靠性高、易于實(shí)現(xiàn)數(shù)字
    發(fā)表于 05-17 07:00

    陀螺儀傳感器和加速度傳感器的區(qū)別是什么?

    陀螺儀傳感器和加速度傳感器有什么不同?
    發(fā)表于 05-18 06:55

    單片機(jī)和加速度傳感器的跌倒監(jiān)測(cè)系統(tǒng)設(shè)計(jì)

    本文介紹了單片機(jī)和加速度傳感器的跌倒監(jiān)測(cè)系統(tǒng)設(shè)計(jì)方案。
    發(fā)表于 06-05 08:00 ?13次下載

    三軸加速度傳感器原理_三軸加速度傳感器應(yīng)用

    本文首先介紹了三軸加速度傳感器原理,其次介紹了三軸加速度傳感器優(yōu)點(diǎn),最后介紹了三軸加速度傳感器應(yīng)
    發(fā)表于 10-17 15:19 ?1.9w次閱讀

    如何選擇合適的加速度傳感器

    這個(gè)是最先需要考慮的。這個(gè)取決于你系統(tǒng)中和加速度傳感器之間的接口。一般模擬輸出的電壓和加速度是成比例的,比如2.5V對(duì)應(yīng)0g的加速度,2.6V對(duì)應(yīng)于0.5g的
    發(fā)表于 01-17 16:44 ?1973次閱讀

    Arduino和加速度傳感器制作數(shù)字滾球迷宮【后篇】

    Arduino和加速度傳感器制作數(shù)字
    的頭像 發(fā)表于 02-20 11:54 ?2028次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>Arduino</b><b class='flag-5'>和加速度</b><b class='flag-5'>傳感器</b><b class='flag-5'>制作數(shù)字</b><b class='flag-5'>滾球迷宮</b>【后篇】

    使用Arduino和加速度計(jì)陀螺儀傳感器MPU9250制作指南針

    電子發(fā)燒友網(wǎng)站提供《使用Arduino和加速度計(jì)陀螺儀傳感器MPU9250制作指南針.zip》資料免費(fèi)下載
    發(fā)表于 06-26 10:24 ?1次下載
    使用<b class='flag-5'>Arduino</b><b class='flag-5'>和加速度</b>計(jì)陀螺儀<b class='flag-5'>傳感器</b>MPU9250<b class='flag-5'>制作</b>指南針