參考:APP Inventor 2 藍芽傳送字串至 Arduino
功能:Android 手機APP傳送字串至Arduino ,以下是比較簡單的作法!
說明:
(1)使用藍芽,
(2)APP傳送字串至Arduino
(3)使用SoftwareSerial
Arduino程式
#include <SoftwareSerial.h>
#include <Wire.h>//引用二個函式庫SoftwareSerial及Wire
SoftwareSerial I2CBT(2,3);//定義PIN10及PIN11分別為RX及TX腳位
//注意此RX, TX分別接藍芽模組的TX, RX
void setup() {
Serial.begin(9600); //Arduino起始鮑率:9600
I2CBT.begin(9600);
//藍牙鮑率:57600(注意!每個藍牙晶片的鮑率都不太一樣,請務必確認
I2CBT.setTimeout(50); //這個做什麼用??
Serial.println("Hello");
}
void loop() {
// 檢查是否有資料可供讀取
while (I2CBT.available()) {
Serial.println(I2CBT.readString());
}
}
App Inventor端的程式
Arduino 端的程式
#include <SoftwareSerial.h>
SoftwareSerial BT(2,3); // 接收腳(RX), 傳送腳(TX);接HC-06之TXD、RXD;先不要用0,1,因為USB用
char val;
void setup()
{
Serial.begin(9600); //for arduino serial port mointor
BT.begin(9600);
}
void loop()
{
if(BT.available() ) {
val=BT.read();
Serial.println(val);
}
}
結果:
若要輸出「一串字」
#include <SoftwareSerial.h>
SoftwareSerial BT(2,3); // 接收腳(RX), 傳送腳(TX);接HC-06之TXD、RXD;先不要用0,1,因為USB用
String val;
void setup()
{
Serial.begin(9600); //for arduino serial port mointor
BT.begin(9600);
}
void loop()
{
if(BT.available() ) {
val=BT.readString();
Serial.println(val);
}
}
參考[雙A計劃] Part0:App Inventor 透過藍牙傳送訊號給 Arduino」的寫法
#include <SoftwareSerial.h> #include <Wire.h> //引用二個函式庫SoftwareSerial及Wire SoftwareSerial SoftwareSerial I2CBT(2,3); //定義PIN2及PIN2分別為RX及TX腳位 void setup() { Serial.begin(9600); //Arduino起始鮑率9600 I2CBT.begin(9600); //藍牙鮑率9600 //(注意!此鮑率每個藍牙晶片不一定相同,請先確認完再填寫進去) }void loop() { byte cmmd[20]; //宣告含有20個byte 型態元素之陣列,'a'的byte 型態是97
int insize; //宣告變數insize為一整數 while(1){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.println(" ");}//if } //for }//while }
結果:
將上述程式的byte cmmd[20]; 改為char cmmd[20];
void loop() {char cmmd[20]; //宣告含有20個char 型態元素之陣列
int insize;