2013-10-06 147 views
0

我正在嘗試使用Android處理爲Android和Arduino之間進行雙向藍牙通信。使用serial.begin(9600),我已成功將數據從Android傳輸到Arduino。通過使用Arduino程序中的SoftwareSerial和bluetooth.begin(9600)代替serial.begin(9600),我成功地將數據從Arduino傳輸到Android。Android和Arduino之間使用處理的藍牙通信

但是,當試圖使用bluetooth.x命令將數據從Android傳輸到Arduino時,它不起作用。這裏是Arduino代碼:

if (bluetooth.available()) // Wait until a character is received 
    { 
    char val = (char)bluetooth.read(); 
    //Serial.println(val); 

    switch(val) // Perform an action depending on the command 
    { 
     case 'w'://turn the light on when a 'w' is received 
     on(); 
     break; 

     case 'q'://turn the light off when a 'q' is received 
     off(); 
     break; 

     //default://otherwise remain in the previous state 
     //idle(); 
     break; 
    } 
    } 

on()和off()函數打開和關閉Arduino上的LED。如前所述,這在我使用serial.x命令而不是bluetooth.x命令時有效。另外,我正在使用Ketai for Android進行處理。我正在使用處理2.0.1,Arduino 1.0.5,Android 2.3.6。

下面是相關的代碼開始:

#include <SoftwareSerial.h> 
SoftwareSerial bluetooth(0,1); //TX 0, RX 1 
+1

「Arduino 2.0.5」?你是某種時間旅行者嗎? ;) – ladislas

回答

2

多一點的代碼將不勝感激......

已包含類似的東西?

#include <SoftwareSerial.h> 

int bluetoothTx = 2; 
int bluetoothRx = 3; 

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); 

編輯:

這類似於我使用。 您首先上傳沒有藍牙連線的代碼,然後連線藍牙。那麼你可以簡單地使用Serial.doSomething(),因爲你使用的是相同的引腳,你不需要#include <SoftwareSerial.h>。但是你需要確保波特率是相同的。

你可以試試這個代碼,以確保它正常工作:

void setup(){ 

    Serial.begin(9600); // or wathever your bluetooth module baudrate is 

} 

void loop(){ 

    Serial.println("Hello World!"); // to make sure it works. 
    delay(500); 

} 

你也應該確保你你Arduino是通過藍牙連接到計算機。

+0

這與我所用的相似。請參閱上面的代碼。我可以提供更多的代碼(或全部代碼),但我不想垃圾郵件的問題。謝謝! – scottlittle

+1

是的,你可以提供更多的代碼或鏈接到可讀的東西。 至於您的編輯,軟件序列用於模仿其他端口上的串行端口RX和TX,因爲您的USB使用引腳0和1與您的計算機進行串行通信。 你使用什麼藍牙模塊?它是如何連線的? – ladislas

+0

對不起,但我只是想出瞭如何上傳到[GitHub](https://github.com/Plan99/BrainGoggles/tree/master)。藍牙是DFRobot的「V3」,Arduino是Nano(UNO兼容)。引腳0和1連接到藍牙,所以我實際上必須拿出藍牙上傳到Arduino。 – scottlittle