1. S4A Sensor Board基礎~SMD LED - 紅綠燈篇

由台灣廠商慧手科技公司(Motoduino Lab.)所出品的S4A Sensor Board,是一款可直接安裝在Arduino UNO上的擴充板,此擴充板的特色為其原先便已配置數種感測器(例如光敏、聲音感測器)與輸出裝置(例如LED、蜂鳴器)在擴充板上面,此友善的設計讓使用者可以大幅降低一開始需要耗費在硬體接線上的時間,初學者可直接利用程式軟體來操控Sensor Board上的這些感測器與輸出裝置。而在使用者藉由軟體漸漸熟悉相關的硬體知識後,此擴充板亦可支援使用者再利用RJ11或杜邦線外接其他的零組件來擴充其功能。而本節首先會由淺入深地來教導大家如何來控制Sensor Board上的三顆SMD LED。



此款Sensor Board既然稱為Arduino UNO擴充板,想當然爾得需插在Arduino UNO上才能使用。請先將Sensor Board依下圖指示的方式與Arduino UNO組合,完成後再以USB線與電腦連線。


在完成Sensor Board與Arduino的組裝後,如下圖所示,我們可以看到本節所要操控的硬體裝置:Sensor Board左上方三個小小的SMD LED燈。LED為Arduino的輸出裝置,這三顆LED與Arduino連接的腳位均為數位腳位(Digital Pin),其在Arduino的對應腳位由左至右分別是D12、D11、D10,而其顏色由左至右分別是綠、黃、紅三色~剛好就是紅綠燈的顏色。在了解這些硬體基礎之後,我們就可以來寫程式控制這些LED了。


由於慧手科技的Sensor Board可同時支援S2A、S4A、Transformer、mBlock、ArduBlock與慧手科技自己開發的motoBlockly等數套Arduino程式開發軟體,所以之後的Sensor Board教學程式,我們主要會以宇宙機器人的Transformer與慧手科技的motoBlockly這兩套圖控式程式開發軟體作為範例來教學。

首先我們先使用Transformer來編寫程式控制LED,在將Arduino以USB線與電腦連接之後,請用Transformer依下面的設定開啟Scratch ~
1.選擇S4A Plus模式。
2.選擇與Arduino連接的介面並選擇自動燒錄S4A韌體與開啟Scratch。


由於此Sensor Board有針對S4A這套軟體特別設計過,所以使用S4A控制Sensor Board上的LED非常簡單,只需使用如下圖所示位在"更多積木"積木群組裡的"digital 腳位 on""digital 腳位 off"兩塊程式積木,便可根據使用者所選擇的數位腳位(13、12、11、10),來對該腳位上的裝置做開啟(on)或關閉(off)的動作。


在知道Transformer控制Sensor Board上LED的程式積木後,接下來我們就可以利用這些程式積木來實作一些控制LED的範例了~首先不知大家有沒有注意到,在半夜萬籟俱寂的時候,交通比較不繁忙的路口紅綠燈也會進入所謂的休眠的狀態,此時休眠的紅綠燈可能只是會不停的閃爍著黃燈...而接下來,我們便來寫一個可讓Sensor Board上黃色的LED(腳位為數位腳位D11)反覆閃爍(間隔時間為1秒)的程式吧。


完成黃燈反覆閃爍的暖身程式後,接下來我們再以Transformer的S4A來模擬實際紅綠燈運作的樣子~
1. 首先先點亮綠燈(D12)10秒鐘。
2. 綠燈點亮10秒後,閃爍5次後熄滅,點亮黃燈(D11)。
3. 黃燈點亮2秒後熄滅,點亮紅燈(D10)。
4. 紅燈點亮10秒後熄滅。
5. 持續重複執行步驟1~4。



由於Transformer的程式一定得在Arduino板連接電腦的狀況下才能執行,倘若此時Arduino有脫機(脫離電腦)執行的需求,則可利用慧手科技自行開發的圖控式程式寫作軟體motoBlockly先產生Arduino Sketch的程式碼,再利用Arduino IDE將程式碼上傳至Arduino中,如此日後Arduino板只需接上電源便可達到脫機運行的效果了。

由於motoBlockly目前(2017/2)只有線上版(網址為 www.motoblockly.com ),所以使用者利用瀏覽器便可以在各作業系統上開啟使用,不過目前慧手官方建議使用Google Chrome來操作會比較穩定,因此我們還是依其建議,使用Chrome瀏覽器來操作motoBlockly。


而在使用motoBlockly控制Sensor Board上的LED時,我們得先知道有哪些程式積木可供使用。Transformer的S4A控制LED的明滅只需兩個程式積木,但是motoBlockly卻更為精簡、僅需一個程式積木便可以來控制LED的亮暗。還記得之前我們說過這三顆Sensor Board上的LED對於Arduino是屬於數位腳位的輸出嗎?所以motoBlockly這塊控制LED程式積木便放置在如下圖所示的"腳位輸入/輸出"積木群組的"數位"選項裡面...


一樣在知道了motoBlockly控制LED的程式積木後,接下來我們就可以來實作之前的範例了。首先是模擬半夜休眠紅綠燈不停閃爍的黃燈,其中閃爍的間距和之前一樣是1秒鐘,只是motoBlockly這邊的時間延遲程式積木單位是1/1000秒的毫秒,所以這邊"延遲毫秒"積木後面的數字要填上1000(毫秒)才會等於1秒鐘。


完成motoBlockly程式積木的堆疊後,整個動作還沒完成喔,因為要支援Arduino脫機執行,因此我們得在完成以下的步驟將程式碼上傳至Arduino上才可以~
1. 將motoBlockly切換至程式碼模式,將程式積木轉成程式碼。
2. 將motoBlockly轉換的程式碼全部圈選起來。
3. 複製步驟2所圈選的所以有程式碼。
4. 開啟Arduino IDE。
5. 將步驟3複製的程式碼貼上取代原本IDE裡的程式碼。
6. 上傳程式碼至Aduino。
7. IDE視窗左下角出現"上傳完畢"即為程式上傳成功,此後只需提供Arduino電源便可脫機運作。 


完成第一個範例後,最後我們再使用motoBlockly來模擬一般時間紅綠燈運作的情況,完成程式積木的堆疊後一樣要記得將積木轉成程式碼上傳至Arduino,接下來Arduino只要有接上電源,即使沒有連接電腦也可以自己照著程式運行了。



ą
Mark Hsu,
2017年2月22日 下午4:34
ċ
BlocklySample1_YellowLEDBlink.xml
(1k)
Mark Hsu,
2017年2月22日 下午6:45
ą
Mark Hsu,
2017年2月22日 下午8:04
ċ
BlocklySample2_TrafficLight.xml
(2k)
Mark Hsu,
2017年2月22日 下午8:43
ą
Mark Hsu,
2017年2月21日 下午6:27
ą
Mark Hsu,
2017年2月20日 下午11:39
ą
PlugIn.jpg
(150k)
Mark Hsu,
2017年2月21日 下午6:19
ą
Mark Hsu,
2017年2月21日 下午6:51
ċ
Sample1_YellowLEDBlink.sb2
(91k)
Mark Hsu,
2017年2月22日 下午6:39
ċ
Sample2_TrafficLight.sb2
(91k)
Mark Hsu,
2017年2月22日 下午6:39
ą
Mark Hsu,
2017年2月19日 下午10:37
ą
Mark Hsu,
2017年2月19日 下午9:28
ą
Mark Hsu,
2017年2月22日 下午5:19
ą
Mark Hsu,
2017年2月19日 下午10:56
ą
Mark Hsu,
2017年2月22日 下午6:30
ą
Mark Hsu,
2017年2月22日 下午5:37
ą
Mark Hsu,
2017年2月21日 下午10:36
ą
Mark Hsu,
2017年2月21日 下午10:25
Comments