AppInventor - 圖形化Android【雙A計劃】Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅
續上篇 【雙A計劃】 Part0:App Inventor 傳送訊號給 Arduino,使用藍牙,本篇將簡單介紹如何用手機控制Arduino上的LED 亮滅,使用 digitalWrite() 來達成。
哇~我們的雙A計畫有好多篇呢,歡迎您一篇篇都看過喔!
操作影片
https://www.youtube.com/watch?v=_GhtpDEe5lY
硬體接線
請根據下圖,將藍牙發射器及LED接上Arduino (藍牙RX - Arduino D11, 藍牙TX - Arduino D10腳位)
[caption id="attachment_19411" align="aligncenter" width="352"]

藍牙TX: Arduino D10 (RX)。藍牙RX: Arduino D11 (TX) 定義於I2CBT(10,11); 語法中[/caption]
App Inventor 編寫簡易的藍牙訊息發送程式
畫面元件很簡單,點選 BT List 之後,會顯示藍牙配對裝置清單,點選您已經配對好的藍牙裝置之後,畫面中間的按鈕就可點選。反覆點選就會送出不同的字元給Arduino 來控制LED亮滅。
app 程式說明
STEP1:在 ListPicker1.BeforePicking事件中,將 BluetoothClient.AddressAndNames指令為 ListPicker1內容,代表點選將其內容連結到手機的已配對藍牙裝置清單。
STEP2:在 ListPicker1.AfterPicking事件中,確認連線成功之後,設定相關按鈕為 enabled/ disabled。
STEP3:本段程式重點當按下ON按鈕時,手機會透過 BluetoothClient元件的 SendText 指令發送一個 'a' 字元給Arduino,此時按鈕的字樣會變成 "LED Turn Off";同理當按下OFF按鈕時,手機會發送一個 'b' 字元給Arduino,此時按鈕的字樣會變成 "LED Turn On"。
最後按下 Disconnect 斷線按鈕則中止藍牙連線,並將個畫面元件回復到初始狀態等候下一次連線。如下圖:
Arduino CODE
[pastacode lang="c" manual="%23include%20%3CSoftwareSerial.h%3E%0A%23include%20%3CWire.h%3E%0A%0Aint%20LED%20%3D%2013%3B%0ASoftwareSerial%20I2CBT(10%2C11)%3B%20%2F%2F%E5%AE%9A%E7%BE%A9Arduino%20PIN10%E5%8F%8APIN11%E5%88%86%E5%88%A5%E7%82%BARX%E5%8F%8ATX%E8%85%B3%E4%BD%8D%0A%2F%2F%E8%AB%8B%E6%B3%A8%E6%84%8FArduino%E7%9A%84TX%E8%A6%81%E6%8E%A5%E8%97%8D%E7%89%99%E6%A8%A1%E7%B5%84%E7%9A%84RX%2C%20%E5%8F%8D%E4%B9%8B%E4%BA%A6%E7%84%B6%0A%0Avoid%20setup()%20%7B%0A%20%20Serial.begin(9600)%3B%0A%20%20I2CBT.begin(9600)%3B%2F%2Fbluetooth%20baud%20rate%20%20%0A%20%20pinMode(LED%2C%20OUTPUT)%3B%20%20%20%20%0A%7D%0A%0Avoid%20loop()%20%7B%0A%20%20byte%20cmmd%5B20%5D%3B%0A%20%20int%20insize%3B%0A%20%20while(1)%7B%0A%20%20%20%20%2F%2Fread%20message%20from%20bluetooth%0A%20%20%20%20if%20((insize%3D(I2CBT.available()))%3E0)%7B%0A%20%20%20%20%20%20Serial.print(%22input%20size%20%3D%20%22)%3B%20%0A%20%20%20%20%20%20Serial.println(insize)%3B%0A%20%20%20%20%20%20for%20(int%20i%3D0%3B%20i%3Cinsize%3B%20i%2B%2B)%7B%0A%20%20%20%20%20%20%20%20Serial.print(cmmd%5Bi%5D%3Dchar(I2CBT.read()))%3B%0A%20%20%20%20%20%20%20%20Serial.print(%22%5Cn%22)%3B%20%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%2F%2F%E6%A0%B9%E6%93%9A%E6%89%80%E6%94%B6%E5%88%B0%E8%A8%8A%E8%99%9F%E5%9F%B7%E8%A1%8C%E5%B0%8D%E6%87%89%E5%8B%95%E4%BD%9C%20%20%0A%20%20%20%20switch%20(cmmd%5B0%5D)%20%7B%0A%20%20%20%20%20%20%E3%80%80%2F%2F%E8%AE%80%E5%8F%96%E7%AC%AC%E4%B8%80%E5%80%8B%E5%AD%97%E5%85%83%0A%20%20%20%20case%2097%3A%20%2F%2F'a'%20%20%20%20%20%0A%20%20%20%20%20%20digitalWrite(LED%2CHIGH)%3B%0A%20%20%20%20%20%20break%3B%20%20%0A%0A%20%20%20%20case%2098%3A%2F%2F'b'%0A%20%20%20%20%20%20digitalWrite(LED%2CLOW)%3B%0A%20%20%20%20%20%20break%3B%0A%20%20%20%20%7D%20%2F%2FSwitch%0A%20%20%7D%20%2F%2Fwhile%0A%7D" message="App Inventor light up Arduino LED" highlight="" provider="manual"/]
執行
執行方式如 part 0 ,先燒錄好 Arduino 端程式,再從 app 端發起藍牙連線。連線成功之後就可以點選 app 畫面按鈕來控制 LED 亮滅,操作完畢記得斷線喔。
留言 💬 (0)
還沒有留言,來當第一個。