[雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

續上篇 [雙A計劃] Part0:App Inventor 傳送訊號給 Arduino,使用藍牙本篇將簡單介紹如何用手機控制Arduino上的LED 亮滅,使用 digitalWrite() 來達成。

挖,我們的雙A計畫有好多篇呢,歡迎您一篇篇都看過喔

[雙A計畫] 常見問題整理

[雙A計劃] Part0:App Inventor 透過藍牙傳送訊號給 Arduino

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

[雙A計劃] Part3:Android 手機透過藍牙接收 Arduino 類比腳位狀態

[雙A計劃] Part4:App Inventor 藍牙遙控 Arduino 雙輪機器人

[雙A計劃] Part5:Paperduino 藍牙控制 LED 閃爍

[雙A計畫]Part6:Arduino 傳兩筆資料到 Android 手機

[雙A計劃] Part7:Arduino超音波感測距離回傳數值給Android手機

[雙A計劃] Part8:Android 手機對 Arduino 同時進行資料收發

English version

Arduino LED Blink

Arduino LED PWM

Arduino LED Blink (Arduino 101 with BLE)

Arduino LED PWM (Arduino 101 with BLE)

範例程式請點我下載(App Inventor中文學習網檔案庫)

材料清單:

1 Android系統智慧型手機

2.Arduino相容開發板 (本文使用 Arduino MEGA2560)

3.藍牙收發接收器(本系列使用JY-MCU04 或 JY-MCU05)

4.麵包板

5.1個220歐姆色碼電阻

6.1顆LED

先由下圖將藍牙發射器及LED接上Arduino (藍牙RX – Arduino D11, 藍牙TX – Arduino D10腳位)

bt

藍牙TX: Arduino D10 (RX)。藍牙RX: Arduino D11 (TX) 定義於I2CBT(10,11); 語法中

 

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

畫面元件很簡單,點選 BT List 之後,會顯示藍牙配對裝置清單,點選您已經配對好的藍牙裝置之後,畫面中間的按鈕就可點選。反覆點選就會送出不同的字元給Arduino 來控制LED亮滅。

螢幕快照 2014-04-04 上午12.06.35

程式說明:

STEP1:在 ListPicker1.BeforePicking事件中,將 BluetoothClient.AddressAndNames指令為 ListPicker1內容,代表點選將其內容連結到手機的已配對藍牙裝置清單。
 
STEP2:在 ListPicker1.AfterPicking事件中,確認連線成功之後,設定相關按鈕為 enabled/ disabled。

螢幕快照 2014-04-04 上午12.07.05 

STEP3:

本段程式重點當按下ON按鈕時,手機會透過 BluetoothClient元件的 SendText 指令發送一個 ‘a’ 字元給Arduino,此時按鈕的字樣會變成 “LED Turn Off”;同理當按下OFF按鈕時,手機會發送一個 ‘b’ 字元給Arduino,此時按鈕的字樣會變成 “LED Turn On”。

最後按下 Disconnect 斷線按鈕則中止藍牙連線,並將個畫面元件回復到初始狀態等候下一次連線。如下圖:

螢幕快照 2014-04-04 上午12.07.18

Arduino的CODE

#include <SoftwareSerial.h>
#include <Wire.h>

int LED = 13;
SoftwareSerial I2CBT(10,11); //定義Arduino PIN10及PIN11分別為RX及TX腳位
//請注意Arduino的TX要接藍牙模組的RX, 反之亦然

void setup() {
  Serial.begin(9600);
  I2CBT.begin(9600);//bluetooth baud rate  
  pinMode(LED, OUTPUT);    
}

void loop() {
  byte cmmd[20];
  int insize;
  while(1){
    //read message from bluetooth
    if ((insize=(I2CBT.available()))>0){
      Serial.print("input size = "); 
      Serial.println(insize);
      for (int i=0; i<insize; i++){
        Serial.print(cmmd[i]=char(I2CBT.read()));
        Serial.print("\n"); 
      }
    }
    //根據所收到訊號執行對應動作  
    switch (cmmd[0]) {
       //讀取第一個字元
    case 97: //'a'     
      digitalWrite(LED,HIGH);
      break;  

    case 98://'b'
      digitalWrite(LED,LOW);
      break;
    } //Switch
  } //while
}
App Inventor light up Arduino LED

 

About CAVEDU 阿吉 - 雜工 (2520 Articles)
CAVEDU 教育團隊 打雜
Contact: Website

202 Comments on [雙A計劃] Part1:App Inventor 經由藍牙控制 Arduino LED 亮滅

  1. 測試Arduino呈現錯誤?不知哪裡出錯!

  2. 您好~這篇文章對我來說受益良多,非常的易懂!!

    所以我也參考了您的文章做了測試,但是碰到了問題:

    在app連接藍芽後點擊LED開關後,燈沒有亮滅

    在電路上與code上完全是參考您的

    也測試過變換arduino板和藍芽模組(鮑率有修改成該板數據)

    想請問說是否有遇到過此種情況?

    謝謝!!

    • 您好, 我們確定範例 code 是可以執行的 (因為我們也好怕誤導大家, 所以幾乎兩三天就重新從網頁上直接下載來執行一次). 只能請您試試看囉.

  3. 您好此程式碼運作後 提示錯誤
    sketch_may20a:24: error: stray ‘\’ in program
    sketch_may20a:24: error: stray ‘\’ in program
    sketch_may20a:29: error: missing terminating ” character
    sketch_may20a:39: error: stray ‘\’ in program
    sketch_may20a:39: error: missing terminating ” character
    sketch_may20a.ino: In function ‘void loop()’:
    sketch_may20a:24: error: ‘u201cinput’ was not declared in this scope
    sketch_may20a:30: error: expected primary-expression before ‘}’ token
    sketch_may20a:30: error: expected `;’ before ‘}’ token
    sketch_may20a:39: error: ‘u201cGet’ was not declared in this scope

    請問該如何解決呢 …

  4. 您好,我目前已下載好您所附上的app程式controlLED,Arduino的程式也燒錄成功,可以用serial monitor輸入a b來控制Arduino
    但在使用controlLED時,無法連接上裝置,顯示””Error 507: Unable to connect. Is the device turned on?”
    想請問是什麼原因呢??

  5. 您好,我現在點選配對之後app就沒有反應了! 不知道是不是我沒有設定ListPicker的問題? 我是直接下載那個app來用得 不知如何設定?

  6. 藍芽晶片使用hc-06 除了改鮑率還要改什麼嗎?
    需要用到繼電器嗎?

    • 您好 使用預設鮑率就可以使用了 也不需要接其他裝置 HC-06與HC-05最大差別是一個是單一模式(主機或從機) 另一個是主從一體

  7. 請問一下 Code跟APP 都照你的寫法做,可是監控視窗秀出來的都是
    input size = 1
    0 input size = 1
    0 input size = 1

    一直重複循環~,不管按亮或暗,請問這問題是出在哪?

  8. 你好,我是邊初學的、請問的作用是什麼,謝謝

  9. 您好
    請問在Arduino 的 Serial Monitor 顯示的 “a” 跟 “b” , 為什麼不是按一下 ,顯示一次, 而是一直吳線循環的顯示呢?
    謝謝

  10. 請問一下點選 BT List 之後,我沒顯示藍牙配對裝置清單.. 已開藍芽 請問是甚麼問題??

  11. 請問一下,我用的板子是 Arduino uno , 藍芽 是HC-05,藍芽也配對了,
    執行on跟off, 板子上的TX的LED燈會閃,但是LED燈卻沒有動作
    還有1個220歐姆色碼電阻,請問有用到嗎??

  12. 你好 請問我執行 Arduino 做確認跑完的時後下面框框跑出這段
    bytes.
    Global variables use 523 bytes (25%) of dynamic memory, leaving 1,525 bytes for local variables. Maximum is 2,048 bytes.
    該怎麼解決?

  13. 傷腦筋,我手機上點選BT LIST時,出現Error 507:Unable to Connect. Is the device turn on?

  14. 謝謝您的說明,Error 507問題解決了,但把程式Upload到Arduino時,出現以下訊息:
    sketch_oct08a:2: error: stray ‘#’ in program
    sketch_oct08a:2: error: expected unqualified-id before ‘<' token
    謝謝您用心的說明!!! 謝謝!!

  15. 請問要怎麼改成arduino內建的led

  16. avrdude:stk500_getsync(): not in sync : resp=0x00
    這個是發生甚麼問題?
    如何解決?

  17. 我測試了很多次還是沒亮
    TX LED 有反應而已
    鮑率也改了

    • 您好,有幾個地方可以檢查:1. 是否有上傳程式到Arduino 2. Arduino 是否有執行程式(Serial Monitor 要有東西). 3. 手機是否有與藍牙發射器配對(ListPicker中要看到這片藍牙) 4. 手機點選後, 藍牙LED有沒有變為恆亮

  18. 可以給我ARDUINO的寫好程式嗎
    因為我怎麼血都錯誤

  19. 請問一下Q1 STEP1中的 “事件中”是如何去設定?
    Q2 在BLOCK中並沒有找到”call”的指令 是因為我沒設置STEP1嗎?

  20. 你好,請問為何我在執行程式時Serial monitor完全沒有顯示任何東西
    Android手機確定有連結上藍芽模組(HC-06,模組上的紅燈也從閃爍轉為恆亮),Baud Rate在Arduino程式碼中也設定了9600
    App Inventor的程式我用過自己寫的(比照此教學文章寫出) 跟文章所附的範例程式皆發生一樣的情形
    Arduino的程式是從這邊複製過去,只有修改Baud Rate為9600

  21. 那個….如果是用HC-06的話
    REX接11
    TEX接10
    這個很重要喔,剛剛去找其他網頁才發現的

  22. 請問
    APP INVENTOR support bluetooth ble(bluetooth low energy) 4.0 嗎?

    謝謝

  23. 我知道了, 我把57600改為9600就解決囉!!!

  24. 可是每隔大約30秒,輸出就會開關開關好幾次… 這是怎麼情形ㄚ??

  25. 想請問您,不是用ARDUINO模組是否可行,我自己已經做出 用藍芽串口可控制,現在想用APP取代串口
    也想請您可不可以提供設計頁面,謝謝

  26. 你好,請問藍牙連接上,每次按turnon,turnoff 板子上TX燈都會閃,但是LED不亮滅,怎麼回事monitor顯示
    input size = 1
    255 input size = 1
    255 input size = 1
    255 input size = 1
    255 input size = 1

  27. “將 BluetoothClient.AddressAndNames指令為 ListPicker1內容” 這步驟我不太清楚怎麼叫出他來
    抱歉初學者

  28. 請問LED燈會隨著相容版上的L燈閃爍 而TX燈卻沒有亮要如何改善

  29. 你好,有個問題請教,我看到別的例子時?他們沒有用 SoftwareSerial 定義藍的鮑率,是用Rx/Tx來定義,但我嘗試是沒有反應,謝謝

  30. 請問一下 我的code全部都是複製大大的 但是LED卻不能亮 是否是因為appinventor不支援HC系列藍芽呢?
    小弟有試過 Serial monitor 但是還是空白

  31. sketch_dec29a.ino:2:12: error: stray ‘#’ in program
    sketch_dec29a.ino:2:1: error: expected unqualified-id before ‘<' token
    請問這是甚麼問題?

  32. 就是 小弟藍芽有連到(藍芽的燈有持續亮著,然後手機有配對到藍芽),但是arduino好像沒動作一樣 我LED登在收到藍芽後 我手機程式按下led on 沒有反應 不知道是哪裡出錯了

  33. input size = 2
    224 0 input size = 1
    224

    serial monitor這樣顯示

  34. 大大你好!! 因為這學期專題要利用 手機app inventor2來控制搭配藍芽連結ArduinoUNO控制方向燈,左閃爍跟右閃爍.
    目前Android手機APP Inventor 2做為控制器 以藍芽連結在ArduinoUNO上作為方向燈控制.
    有照大大的範例做成功LED亮跟滅. 想請教大大 APP的拼圖製作 和Arduino程式哪邊還要修改一下. 以手機APP經過藍牙控制Arduino控制方向燈左閃爍跟右閃爍.
    跪求大大幫助 感恩你

  35. 請問一下, 我有下載 這檔案apk, 安裝置手機上,但是 bt list ,作連接藍芽動作,整各畫面都會是黑的?類似當機
    我確認我有連接上,不然會出現 err507:……….相關字串,請問這怎回事,謝謝!!!!

  36. 請問大大
    對應的程式碼再複製一組 是Arduino還是手機APP
    感恩大大 ^^

  37. 你電阻用在哪阿??

  38. 我是新手
    想請問一下,可以去哪下載手機app

  39. 如果一個按鈕要發送兩個字 如 SENT TEXT “TL”
    arduino 那邊 兩個字要怎麼寫ASCII CODE數字

  40. 還有如果 要不斷送出文字 APP怎麼寫???

  41. 你好,請問如果將LED換成電子門閂(陰極鎖) 程式碼將會有變動嗎?

  42. 想請問一下
    我一次傳送4個byte
    會有錯誤
    第二個byte開始都會有問題

  43. 不好意思我按bt list時候 出現
    Error 507:Unable to Connect. Is the device turn on?
    已經確認hc06上led恆亮 且我也沒按錯裝置…

  44. 220歐姆色碼電阻要接哪

  45. 請問HC-05 有規定要藍芽幾版以上嗎

  46. 請問我的手機配對完成後,BT_LIST也有出現我的藍芽模塊,但是點了連接之後沒辦法回到點TURN ON的那個畫面
    藍芽模塊連線後手機畫面就整個黑屏了,也沒有任何錯誤訊息。

  47. 請問
    sketch_mar16e.ino:1:12: error: stray ‘#’ in program
    sketch_mar16e.ino:1:1: error: expected unqualified-id before ‘<' token
    這錯誤在哪?

  48. 你好,有個問題請教,我下載APK 到手機之後安裝,但手機出現(Error 515: Not connected to a Bluetooth device),連接藍牙後也出現,不知是什麼問題,謝謝

  49. 你好,先謝謝,那就先配對藍牙之後才開啟 App?

    • 是的,配對之後才能在下拉式選單中看到您的藍牙裝置名稱與位址喔

      • 你好,但我已預先配對好,開啟APP之後出現(Error 515: Not connected to a Bluetooth device),是否我在 App Inventor 2 build app 的問題還是手機,謝謝

        • 您好,請問是一開啟 app 就出現這個訊息嗎?這樣有點奇怪,因為這個 app 會在您點選 ListPiceker 之後才會去連線。請把這個 app 徹底關閉之後再重新啟動一次看看好嗎?

          • 你好,我在網上下載和你們都沒有問題,但我的有問題(Error 515: Not connected to a Bluetooth device),應該不是手機問題?謝謝

          • 您好, App Inventor 在少數的Android 上會無法取得藍牙權限(這不代表手機的藍芽是壞的), 如果可以的話, 請換一支手機交叉測試看看, 如果確定是手機的問題的話, 就只好請您換一隻了. 我之前有一隻 HTC 就是這樣

  50. 您好,我在自己新建專案實作藍牙控制時遇到問題,請問在Blocks下的When LED Turn On.Click do 的if then else 這個圖形方塊在app-inventor2裡我找不到說有什麼方法還是替代作法嗎??感恩,謝謝!!

  51. 您好
    我在複製Arduino的CODE的時候 發生編譯錯誤 可以請教您一下 為甚麼會出現以下錯誤嗎? 感謝你=ˇ=
    _01.ino:1:12: error: stray ‘#’ in program
    _01.ino:1:1: error: expected unqualified-id before ‘<' token
    編譯時發生錯誤

  52. 不好意思 請問App inventor上面的 when LEDTurnOn .Click 這塊拼圖在哪裡 我找不到
    do

  53. 謝謝大大
    不過我是找不到.Click的拼圖 (有LEDTurnOn的其他拼圖)
    不好意思 ><

  54. 請問一下 如果我想用藍芽傳送自到lcd屏幕上要怎麼寫呢

  55. 老師您好,我已購買您書籍(機器人卷) 學習後未能滿足需求,因此提問:

    直接藍芽控制繼電器程序怎麼寫?(不需要Arduino)
    發送16進位,繼電器代碼?

  56. 你好 請問您適用objective C去寫程式的嗎 如果是可以分享軟體嗎 別的軟體也可只要可以打程式碼就好 謝謝

  57. 你好
    我在藍芽搜尋完畢後 按LED turn on或是LED turn off 但是LED都沒有反應
    請問是哪裡出錯了嗎

  58. 您好
    我的BluetoothClient.Connect方塊 有一個for component不知要放什麼
    這個地方沒填寫.他就不讓我燒錄
    煩請老師解答
    如圖
    https://www.dropbox.com/s/kyn9ccuvtzc67s8/space.png?dl=0

  59. 我想把LED換成步進馬達,但是遇到一些問題了,可以私下問嗎?

  60. 想請問 現在我修改程式 使第九腳成為風扇的輸出 我藍芽已經與板子連線 傳值也確定的 但還是無法驅動風扇運動停止

  61. 你好,Arduino板子上TX燈會正常閃爍 但唯獨LED不會閃爍
    serial monitor 都是顯示255 input size=1
    我是使用hc05藍芽

    胞率38400和9600 都設定過了 就是沒辦法

  62. 如果要在手機上用兩個slider設定on跟off的時間,儲存後可以依照兩個slider的時間交互on跟off,該怎麼做呢? 謝謝您!!

    • 您好,這樣就要把 slider 的值(slider.thumbposition)透過藍牙傳給Arduino,Arduino 接到這些數值之後再去把 delay() 中的時間改掉即可。不過這樣程式等於要傳三筆數值,所以應該會比較 lag

  63. 您好,請問為何我RXD/TXD反接能正常運作,照圖片接卻不行呢?
    我這顆藍芽晶片配對時是叫HC05沒錯。

  64. 你好 我先用手機藍芽和藍芽模組進行連線 然後於app端再進行清單選取 出現 error 507 unable to connect. Is the device turned on?
    請問這樣是哪邊出了問題??

    • 請確認一下您的藍牙模組的指示燈是否有閃爍,如果是常亮的話那代表已經是連接狀態,建議可以先拔掉給藍牙模組的供電再重試一次看看,要在提示燈飾閃爍(代表尚未連結)的情況下才能從手機端中清單選取並連線喔!

      • 目前問題是,需要手機藍牙與模組先進行連線(模組指示燈常亮),APP清單中才會出現藍芽位置,才能進行連線,但會出現error 507 情況 。反之,沒有連線(指示燈off),app清單則沒有選項進行連線。
        我用的是Microchip RN4020的模組,因此我在想會不會是AI2的藍芽模組版本太舊所以無法與我使用的模組進行通訊,或者是模組設定slave錯誤等等,是否可以給些建議 謝謝。

  65. Arduino:1.6.5 (Windows 8.1), 板子:”Arduino/Genuino Uno”

    建置選項已變更,重建所有

    led_switch:1: error: stray ‘#’ in program
    led_switch:2: error: #include expects “FILENAME” or
    led_switch:1: error: expected unqualified-id before ‘ 偏好設定裡啟用。

    新手問問題,我已經全部複製了,但為甚麼有這一大列的錯誤訊息出現,懇求解釋 ,
    感恩~~~

  66. Error 507
    不知道為怎麼說

  67. HiHi, 我又試了很多次的 Try and Error, and got baud rate @38400 works…
    所以我的 BT module default 是在 38400? ^^

  68. 您好,我想請問是否能夠將手機改成電腦控制LED亮滅? 電腦有藍芽傳輸器。

  69. 你好,Arduino板子上TX燈會正常閃爍 但唯獨LED不會閃爍
    我是使用hc05藍芽

  70. 您好~
    我的是Arduino UNO R3 SMD 開發板,Pin13不是PWM訊號,我連接完藍芽手機APP按turnon只有板子的RX會亮,LED燈不會亮,會不會是板子不一樣所以腳位也不一樣的關係?

  71. 你好~
    我的是arduino uno 開發板,13腳位不是pwm,手機app按下turnon時只有板子的RX會亮,LED不會亮,請問是不是板子不同的關係?

    • 您好,與上一個問題的狀況是一樣的喔。因為本篇使用的是 Arduino MEGA2560,他的D13腳位有支援PWM。您如果使用 Uno 的話,請把 arduino 程式碼中關於 13號腳位改為 3 5 6 9 10 11 其中之一腳位即可

  72. Yeah!!!!!!!!!!一次就成功了………..幸運!!!!呵呵

  73. 請問你有收到一封關於控制照明系統疑問的mail嗎?

  74. 請問要增加2個按鈕控制LED的RGB inventor要怎麼拉 程式要怎麼加 新手請求支援 謝謝~~~~

  75. 已經找到解答 感謝

  76. 老師您好,我把arduino面的97改成225 b改成226就可以了?! 請問是什麼原因Orz

  77. 我是依照上面完全複製
    可是傳程式卻顯示以下,想問怎麼樣情況會發生這樣??
    Arduino: 1.6.9 Hourly Build 2016/04/20 08:33 (Windows 10), Board: “Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)”

    __:29: error: stray ‘\343’ in program

    ??

    ^

    __:29: error: stray ‘\200’ in program

    __:29: error: stray ‘\200’ in program

    exit status 1
    stray ‘\343’ in program

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

  78. 你好老師
    我想請問把LED換成繼電器一樣可以通嗎?
    我想透過繼電器去控制馬達的運轉

  79. 老師你好我的Arduino是uno版我換11腳位會恆亮,換其他腳一樣沒反應

  80. 我想請問為何程式碼裡面要用 while(1)
    跟拿掉 while,把 loop 裡面宣告的兩個變數拿到外面不是也一樣嗎?

Leave a comment

Your email address will not be published.


*