2015年5月17日 星期日

APP Inventor 2 藍芽操控 Arduino LED

功能:Android 手機APP遙控Arduino LED,亮、滅、閃爍
說明:
(1)使用藍芽,
(2)APP傳送字元a或b,操控Arduino LED亮、滅,
(3)APP使用滑軌,改變計時器時間,計時時間到,偶數次傳送a,奇數次傳送b,藉以操控Arduino LED閃爍。
(4)藍芽模組設定參考Maa的部落格。

Arduino程式
方法一:(藍芽模組接pin0, 1)
void setup() {
   Serial.begin(57600);
   pinMode(13, OUTPUT);  //設定 pin13 為輸出,LED就接在這
}
void loop() {
   // 檢查是否有資料可供讀取
   if (Serial.available() > 0) {
     // 讀取進來的 byte
     int inByte = Serial.read();
     // 根據收到的字元決定要打開或關掉 LED
     switch (inByte) {
     case 'b':    
       digitalWrite(13, LOW);
       break;
     case 'a': 
       digitalWrite(13, HIGH);
       break;
     default:
       // 關掉所有的 LED
       digitalWrite(13, LOW);
     }
   } 
}
方法二:(藍芽模組接pin10, 11,0,1留給Serial Monitor)
Arduino程式
#include <SoftwareSerial.h>
#include <Wire.h>//引用二個函式庫SoftwareSerial及Wire
SoftwareSerial I2CBT(10,11);//定義PIN10及PIN11分別為RX及TX腳位
                                                   //注意此RX, TX分別接藍芽模組的TX, RX
void setup() {
   Serial.begin(9600); //Arduino起始鮑率:9600
   I2CBT.begin(57600);
//藍牙鮑率:57600(注意!每個藍牙晶片的鮑率都不太一樣,請務必確認
   pinMode(13, OUTPUT);  //設定 pin13 為輸出,LED就接在這
}
void loop() {
   // 檢查是否有資料可供讀取
   if (I2CBT.available() > 0) {
     // 讀取進來的 byte
     int inByte = I2CBT.read();
     // 根據收到的字元決定要打開或關掉 LED
     switch (inByte) {
     case 'b':    
       digitalWrite(13, LOW);
       Serial.println("LED OFF");
       break;
     case 'a': 
       digitalWrite(13, HIGH);
       Serial.println("LED ON");
       break;
     default:
       // 關掉所有的 LED
       digitalWrite(13, LOW);
     }
   } 
}

APP Inventor 2
Button3 斷線
Button4 LED 亮
Button5 LED 滅
Button6 LED 閃爍

初始設定
藍芽選單

  
斷線
LED亮

LED滅

LED閃爍

滑軌改變時改變計時器計時時間

計時器計時時間到傳送字元a或b

沒有留言:

張貼留言