工程筆記本 / AppInventor - 圖形化Android

AppInventor - 圖形化Android

【雙A計劃】Part2:App Inventor 經由藍牙控制 Arduino LED 漸明漸暗

徐 豐智📅 2013-11-20👁 155
本篇將簡單介紹如何用手機的 Slider 滑桿元件來控制Arduino上的LED燈漸明漸暗,當然就是用到 analogWrite的 PWM效果囉。

雙A計畫文章總覽:

中文系列文章

English version
 
作者/攝影   偉和
難度

★★★☆☆

材料表 【推薦套件】自學者的天堂|Arduino 入門到雲端基本套件包
下載

範例影片如下:

https://www.youtube.com/watch?v=yUivJNQ_hXM 先由下圖將藍牙發射器及LED接上Arduino (藍牙RX - Arduino D10, 藍牙TX - Arduino D11腳位)

App Inventor 編寫簡易的藍牙訊息發送程式

畫面元件很簡單,點選 BT List 之後,會顯示藍牙配對裝置清單,點選您已經配對好的藍牙裝置之後,就可藉由畫面中間的滑桿元件(自定義數值範圍為0~80,您也可以偷懶直接就定義為0~255)。App Inventor 會每隔按鈕就可點選。反覆點選就會送出不同的字元給Arduino 來控制LED亮滅。 螢幕快照 2014-04-04 上午12.28.35  

程式說明:

STEP1:在 ListPicker1.BeforePicking事件中,將 BluetoothClient.AddressAndNames指令為 ListPicker1內容,代表點選將其內容連結到手機的已配對藍牙裝置清單。  STEP2:在 ListPicker1.AfterPicking事件中,確認連線成功之後,設定相關按鈕為 enabled/ disabled。 螢幕快照 2014-04-04 上午12.29.00 STEP3:本程式重點在於使用 CLock.Timer事件每 0.01 秒將 Slider 的當下數值透過 BluetoothClient元件的 SendText 指令送出。最後按下 Disconnect 斷線按鈕則中止藍牙連線,並將個畫面元件回復到初始狀態等候下一次連線。 ffff

Arduino的CODE

[pastacode lang="c" message="App Inventor PWM LED" highlight="" provider="manual" manual="%23include%20%3CSoftwareSerial.h%3E%0A%23include%20%3CWire.h%3E%2F%2F%E5%BC%95%E7%94%A8%E4%BA%8C%E5%80%8B%E5%87%BD%E5%BC%8F%E5%BA%ABSoftwareSerial%E5%8F%8AWire%0A%0ASoftwareSerial%20I2CBT(10%2C11)%3B%2F%2F%E5%AE%9A%E7%BE%A9PIN10%E5%8F%8APIN11%E5%88%86%E5%88%A5%E7%82%BARX%E5%8F%8ATX%E8%85%B3%E4%BD%8D%0A%0Abyte%20cmmd%5B20%5D%3B%0Aint%20insize%2C%20a%3B%0A%0Avoid%20setup()%20%7B%0A%0A%C2%A0%20%C2%A0Serial.begin(9600)%3B%20%2F%2FArduino%E8%B5%B7%E5%A7%8B%E9%AE%91%E7%8E%87%EF%BC%9A9600%0A%0A%C2%A0%20%C2%A0I2CBT.begin(57600)%3B%20%2F%2F%E8%97%8D%E7%89%99%E9%AE%91%E7%8E%87%EF%BC%9A57600(%E6%B3%A8%E6%84%8F%EF%BC%81%E9%AE%91%E7%8E%87%E6%AF%8F%E5%80%8B%E8%97%8D%E7%89%99%E6%99%B6%E7%89%87%E4%B8%8D%E4%B8%80%E5%AE%9A%E7%9B%B8%E5%90%8C%EF%BC%8C%E8%AB%8B%E5%8B%99%E5%BF%85%E7%A2%BA%E8%AA%8D%0A%0A%C2%A0%20%C2%A0pinMode(9%2C%20OUTPUT)%3B%20%C2%A0%2F%2F%E8%AB%8B%E6%B3%A8%E6%84%8F%E6%82%A8%E4%BD%BF%E7%94%A8%E7%9A%84Arduino%20%E8%A9%B2%E8%85%B3%E4%BD%8D%E6%98%AF%E5%90%A6%E6%94%AF%E6%8F%B4%20PWM%20(%E6%9C%83%E6%9C%89~%E7%AC%A6%E8%99%9F%EF%BC%89%EF%BC%8C%E5%90%A6%E5%89%87%E6%9C%83%E7%9C%8B%E4%B8%8D%E5%88%B0%E6%95%88%E6%9E%9C%0A%0A%7D%0A%0Avoid%20loop()%20%7B%0A%0Awhile(1)%7B%0A%0A%C2%A0%20%C2%A0%2F%2F%E8%AE%80%E5%8F%96%E8%97%8D%E7%89%99%E8%A8%8A%E6%81%AF%0A%C2%A0%20%C2%A0if%20((insize%3D(I2CBT.available()))%3E0)%7B%0A%C2%A0%20%C2%A0%20%C2%A0%20Serial.print(%22input%20size%20%3D%20%22)%3B%0A%C2%A0%20%C2%A0%20%C2%A0%20Serial.println(insize)%3B%0A%C2%A0%20%C2%A0%20%C2%A0%20for%20(int%20i%3D0%3B%20i%3Cinsize%3B%20i%2B%2B)%7B%0A%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%C2%A0Serial.print(cmmd%5Bi%5D%3Dchar(I2CBT.read()))%3B%0A%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20Serial.print(%22%20%22)%3B%0A%C2%A0%20%C2%A0%20%C2%A0%20%7D%2F%2F%E6%AD%A4%E6%AE%B5%E8%AB%8B%E5%8F%83%E8%80%83%E4%B8%8A%E4%B8%80%E7%AF%87%E8%A7%A3%E9%87%8B%0A%0A%C2%A0%20%C2%A0%7D%0A%0A%20if(insize%3D%3D4)%7B%20%20%0A%20%20%20%20%20%20a%20%3D%20(cmmd%5B0%5D-48)*10%3B%0A%20%20%20%20%20%20a%3Da%2B(cmmd%5B1%5D-48)%3B%0A%20%7D%0A%20if(insize%3D%3D3)%7B%0A%20%20%20%20%20%20a%3D(cmmd%5B0%5D-48)%3B%0A%20%7D%0A%20Serial.println(a)%3B%0A%20analogWrite(9%2Cmap(a%2C0%2C80%2C0%2C255))%3B%20%20%20%2F%2F%E4%BD%BF%E7%94%A8%20a%20%E8%AE%8A%E6%95%B8%E6%8E%A7%E5%88%B6%20LED%20%E4%BA%AE%E5%BA%A6%20%20%0A%20%7D%20%2F%2Fwhile%0A%7D"/]

相關文章 📎

留言 💬 (0)

還沒有留言,來當第一個。