S4A_Bluetooth 的主要特性如下:
- 針對 S4A firmware 而設計。
- 可以自訂每個按鈕要使用哪些 Arduino 的腳位及送出的值,包括 pin 10,11,12,13 (Digital:on/off)及 pin 5,6,9 (PWM: 0~255)。
- 自訂的值會自動儲存,打開程式時會自動載入。
使用方法
由於這個 App 發送的資料是依 S4A firmware 的需求來編碼的,所以 Arduino 要先安裝 S4A 網站中的 firmware ,不然就得下載 App Inventer 的 source (請參「檔案下載」中的連結) 自己改「setPinValue」的那個 block 發送符合您靭體的資料給 Arduino。
Android 下載並安裝完 S4A_BlueTooth.apk (請參「檔案下載」中的連結),首次啟動這個 App 後,先按「設定按鈕的功能」的按鈕,並由清單中點選想設定的按鈕,切換畫面後,即可設定按鈕欲連結的 Arduino 腳位,及按下去後要送出的值。設定好即可按「儲存設定值」來儲存設定值。
所有按鈕的功能都設定好了,就可以開啟 Android 的藍芽功能,並按「藍芽連線」來選取要連線的藍芽裝置。
2014.04.04 版 |
2014.04.05 版:增加顯示感應器數值的功能 |
確定藍芽已連線完畢,試試設定的按鈕功能是否正常。
程式原始碼
這個 App 使用到兩個 Screen,ScreenConfig 主要是處理設定按鈕時的畫面,它處理完會回傳按鈕的名稱及各位腳位的設定值(依序為 pin 10,11,12,13,5,6,9)。如果腳位未使用到,值會被改為負數( 0 則以 -9999 代替)。回傳的值會以按鈕的名稱為 tag 存入 TinyDB1 中,在啟動 App 時會被重新載入。
程式中的 Timer1 負責每隔一秒鐘由藍芽接收 Arduino 傳來的資料,Timer2 每隔 0.75 秒送出兩 bytes 的資料給 Arduino 以維持Arduino 腳位的設定值不會被 S4A firmware reset。
ToDo
- motor 4 逆時 : pin4=1, pin7=0
- motor 4 順時 : pin4=2, pin7=0
- motor 7 逆時 : pin4=0, pin7=1
- motor 7 順時 : pin4=0, pin7=2
- motor 停 : pin4=0, pin7=0
- motor 前 : pin4=1, pin7=2
- motor 後 : pin4=2, pin7=1
- motor 右 : pin4=1, pin7=1
- motor 左 : pin4=2, pin7=2
- motor 8 角度 : pin8=角度 (0~180)
檔案下載
相關文章
更新記錄
- 2014.04.05 顯示 Arduino 傳來 A0~A5, D2, D3 的數值。
- 2014.04.04 初版。
雄哥:你的內容真是太專業啦 ^_^ 閱讀你寫的文章每次都能學到很豐富的內容 :)Thank you!
回覆刪除您過獎了, 其實我也是初學者而已, 把心得記錄下來, 主要是怕自己久了會忘了。
刪除新手發問:
回覆刪除請問Arduino安裝完S4A網站中的firmware,
Android安裝完您的S4A_BlueTooth.apk,
Android設定好前進、後退、右轉、左轉、停止,
插完線用好馬達,確定藍芽已連線完畢,
使用apk就能使馬達動了!?
(這麼厲害!!?
Arduino都不用另外打程式?
(因為S4A網站中的firmware已經安裝到Arduino?
(還是其實需要?如需要能附範例藉看看...?
-------------------------------
另外我直接使用Motoduino(Arduino + L293D),
能與您的apk設定一起使用?
如果手上有相關硬體,行不行,能不能,試了便知結果囉!基本上,這種東西的趣味不就在 Learning by doing ?Motoduino 個人沒玩過,聽說它是根據 S4A 而設計的,在猜,應該可以用吧?您試了再幫忙回報一下。
刪除歡迎您來F B中找S4A,交流一些心得,台中市 昭漢邀請高手進場。於google play以s4a找,中市有上架app分享!
回覆刪除江老師您好:
刪除久仰大名,中教網的那個 App 我有用過哦!也在 blog 文章中推過。高手不敢當,玩 Arduino 我是初學者而已,還要多多跟各位前輩請益。
雄哥好,我是松山工農 恆誠老師
回覆刪除感謝您無私的分享,目前在藍芽應用上,較大的困擾是緩衝處理。
學生很快就會傳送一堆指令,讓buffer灌滿當機。
從您的aia看來,似乎並未處理。
還是您再S4A段有處理了。
感謝
蘇老師您好:
刪除buffer 灌爆的情形在我買的 HC-05 特別嚴重,為此困擾了很久,後來解決的方法是只截取最後送出的十幾個 bytes , 其它的通通丟棄不用,不然 App 玩沒幾下就掛點。
請問在app程式中要如何解決buffer灌爆的問題
刪除程式要怎麼寫
老師您好,想請問我都有照上面的步驟做,先設定好前進後退等,也連接好藍芽(我使用HC-06)但是連接好以後,A0-A5,D2D3的數值也都沒有跳,輸出的功能也沒有效果,這是為什麼呢? (使用S4AFirmware15韌體)
回覆刪除檢查一下您的 HC-06 有設定鮑率(Baud rate)為 38400 嗎? S4A firmware 通訊時是用 38400, 如果鮑率不同, 解碼可能會有誤。
刪除這串是S4AFirmware15 裡面的
刪除void setup()
{
Serial.begin(38400);
Serial.flush();
configurePins();
configureServomotors();
lastDataReceivedTime = millis();
}
第二句 Serial.begin(38400);應該就是設定Baud rate
是不是藍芽上RX TX的設定呢?
藍芽上的RX我接到UNO Pin 11
藍芽上的TX我接到UNO Pin 10
還請指教
要改藍牙模組的,因為 S4A UI 那裡的是 38400,這部分改不到。另外,藍牙接在 D0 & D1, 可以參考「魔法車」那一篇。
刪除老師您好:
刪除我上午已經照您HC-06設定一文中,把鮑率改成38400,系統也很給力的回我ok38400。但一把RX.TX改成D0.D1後連結手機藍芽,A0-A5的數據依然沒有反應,app也跳出error 516的警告。想請問老師這是什麼原因呢? 是燒錄進arduino的韌體有誤,還是藍芽鮑率修改沒有成功。懇請老師指教
ㄏ
回覆刪除您寫的真用心!
回覆刪除可以請教這篇Arduino的code嗎 ?
想做給小朋友玩得
謝謝您 ^^"
您好:
刪除本文中 Android App 需搭配的 Arduino code 是用別人寫的 S4A, 您可以用「s4a」google 到原始網站下載。
如果想用自己專用的, 我另外一篇中有類似的, 文中有附 source
雄 : Android : MeArm 藍芽遙控 App
有問題可以一起討論。
好的,我試試!!!
回覆刪除非常謝謝您~真的很用心
謝謝 ^^
超讚的文章,感謝分享 ^^
回覆刪除作者已經移除這則留言。
回覆刪除老師您好:
回覆刪除請問app invertor 2 如何才能同時連接數個hc-05 謝謝!
您好:
刪除抱歉!沒玩過一對多的。印象中 HC-05 client 對 client 只能一對一。
你好,我試了您的APP測試,按下前進之後過一秒之後都會停止是正常的媽
回覆刪除雄哥您好,上面S4A_BlueTooth.apk網址過期了可以再補上嗎,謝謝
回覆刪除