2017年7月27日 星期四

App Inventor 透過藍牙傳送訊號給 Arduino

在撰寫程式前我們先準備以下材料:範例程式請點我下載(App Inventor中文學習網檔案庫)
材料清單:
1 Android系統智慧型手機
2.Arduino相容開發板 (本文使用Arduino Uno,其他的Arduino相容板也是類似的作法)
3.藍牙收發接收器(本系列使用JY-MCU04 or JY-MCU05) 請按照電路圖將電路接上(藍牙RX – Arduino D11, 藍牙TX – Arduino D10腳位)
bt
藍牙TX: Arduino D10 (RX)。藍牙RX: Arduino D11 (TX) 定義於I2CBT(10,11); 語法中
STEP1:App Inventor 編寫簡易的藍牙訊息發送程式。畫面上只有三個元件,由上而下依序為 ListPicker 與兩個Button。
1
程式碼說明:
在程式初始化時,設定各元件可否點選。並在 ListPicker 點選之前設定其內容為藍牙(BLuetoothClient)的配對裝置位址與名稱。
當 ListPicker 被點選之後,則對該點選位置發起連線。成功的話則設定各元件可否點選。
螢幕快照 2014-10-30 上午12.44.04
當按下[sens a word]按鈕後,Android 手機會經由藍牙發送一個字元「a」給Arduino,您可在 Arduino IDE 的 Serial Monitor 中看看是否正確接收。
按下[disconnect]按鈕,則斷開藍牙連線,並將各元件恢復連線前狀態。
螢幕快照 2014-10-30 上午12.44.13
STEP2:Arduino的CODE
#include <SoftwareSerial.h> 
#include <Wire.h>  //引用二個函式庫SoftwareSerial及Wire SoftwareSerial 
SoftwareSerial I2CBT(10,11); //定義PIN10及PIN11分別為RX及TX腳位 
void setup() { 
  Serial.begin(9600); //Arduino起始鮑率9600 
  I2CBT.begin(57600); //藍牙鮑率57600
  //(注意!此鮑率每個藍牙晶片不一定相同,請先確認完再填寫進去) 
} 

void loop() { 
  byte cmmd[20]; 
  int 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
}
App Inventor send char to Arduino

沒有留言:

張貼留言