小小云提示:教程作者caterpillar是來自臺灣的programmer榄融,所以在一些專有名詞的使用上會和我們這邊使用的不太一樣啦,不過作者也有標(biāo)注出英文名稱志衍,大家自行轉(zhuǎn)換喲(?????????)
在〈mBlock & Arduino(20)探討 Me-Baseboard 與各模組相容性〉中崭倘,已經(jīng)看過 Me 超音波感應(yīng)器了,如果使用 Makeblock Baseboard Orion悦析,那么只要通過RJ25寿桨,連接 Me 超音波感應(yīng)器,就可以開始使用了强戴。
Me 七段顯示器與超音波感應(yīng)器
例如亭螟,將 Me 七段顯示器接至端口?3,將 Me 超音波感應(yīng)器接至端口?4骑歹,然后撰寫以下程式:
執(zhí)行程式预烙,你就可以看到七段顯示器不斷顯示超音波感應(yīng)器量得的距離了。
連接線路如此之方便道媚,目的是為了讓我們可以集中心力在想法的實(shí)現(xiàn)與程式的撰寫上扁掸,作些有趣或?qū)嶋H的應(yīng)用。
雷達(dá)繪圖 API
既然沒有連接線路的困擾了最域,那么谴分,就來做些數(shù)學(xué)應(yīng)用吧!使用舵機(jī)轉(zhuǎn)動超音波感應(yīng)器镀脂,將量得的距離資訊畫成以下的雷達(dá)圖如何呢牺蹄?
這時,超音波感應(yīng)器或者是舵機(jī)如何連接與控制薄翅,在這個應(yīng)用當(dāng)中并不是重點(diǎn)钞馁,重點(diǎn)是如何畫出雷達(dá)圖了虑省,我們需要有那半圓形的雷達(dá)圖,每個半圓的間距表示是 50 公分僧凰,不用急著打開繪圖軟體開始畫,我們要使用 mBlock 來畫熟丸!
首先训措,建立繪圖 API!我們要能畫直線光羞,因此绩鸣,我建立了一個“畫線”的自訂方塊,可以指定座標(biāo) (x1, y1) 至 (x2, y2) 來畫線:
接著纱兑,要能指定圓心座標(biāo)呀闻、半徑與角度畫圓弧,方式是從 0 度開始潜慎,每走一小段長度捡多,就轉(zhuǎn)一個角度,直到指定的角度為止铐炫,每次要走的長度就是半徑乘上tan(旋轉(zhuǎn)角度)垒手,這個過程,我定義為“畫圓弧”自訂方塊:
基本上倒信,應(yīng)該是轉(zhuǎn)一度就劃一次直線科贬,不過這樣速度會很慢,因此鳖悠,圖中我設(shè)定為轉(zhuǎn) 3 度就劃一次直線榜掌,效果也還不錯。
接下來就是“畫雷達(dá)底圖”自訂方塊了乘综,我們的圓心設(shè)定在座標(biāo) (0, -150):
后面會看到憎账,每次跑完 180 度的掃描后,會清除整個畫面瘾带,你可以每次重清之后鼠哥,再跑一次“畫雷達(dá)底圖”自訂方塊,不過看政,你可以直接將畫出來的雷達(dá)底圖存為圖檔朴恳,再上傳至 mBlock 直接設(shè)為場景的背景圖,這樣允蚣,就可以省去每次畫雷達(dá)圖的時間:
我們還剩一個繪圖 API于颖,將反彈超音波的點(diǎn)以不同顏色畫出,這很簡單:
Makeblock 舵機(jī)與超音波感應(yīng)器
接下來嚷兔,就是使用舵機(jī)來轉(zhuǎn)動超音波感應(yīng)器了森渐,Makeblock 本身提供有舵機(jī)做入,你可以直接將之連接至 Me RJ25 轉(zhuǎn)接器的 S1 或 S2 插頭:
可以看到,Makeblock 舵機(jī)跟 SG90 舵機(jī)是一樣的同衣,你也可以使用 SG90竟块,注意 VCC 與 GND 對應(yīng)好就可以了,搭配 Me RJ25 轉(zhuǎn)接器耐齐,Makeblock 的“設(shè)置舵機(jī)”方塊可以指定連接端口與插頭:
你可以將舵機(jī)接至端口?3浪秘,超音波感應(yīng)器接至端口?4,接下來埠况,設(shè)計一個“設(shè)定回波 XY 座標(biāo)”自訂方塊:
每次量得的距離耸携,乘上cos(轉(zhuǎn)動角度),就是 X 座標(biāo)辕翰,因?yàn)槲覀兊膱A心要設(shè)置在 (0, -150)夺衍,因此,每次量得的距離喜命,乘上sin(轉(zhuǎn)動角度)再減去 150沟沙,就是 Y 座標(biāo)。
接著渊抄,就是不斷地轉(zhuǎn)動舵機(jī)尝胆,并進(jìn)行繪圖處理了,我們每一次轉(zhuǎn)動 2 度:
因?yàn)槲覀儾恍枰@示貓咪护桦,因此一開始將之隱藏起來了含衔!這個程式每 180 度會重新回到 0 度開始掃描,你也可以修改一下二庵,讓它能從 180 度倒回來掃描贪染!
感謝CodeData用戶:caterpillar的貢獻(xiàn) 著作權(quán)歸作者所有
整理:寧波家電物聯(lián)網(wǎng)云平臺,中科極動云
CONTACT US: http://www.iot-jd.com/