2012-10-03 87 views
2

我使用Android側的BluetoothChat代碼通過聊天框向Arduino UNO發送開/關信號(我正在發送110,119或其他下面定義的情況) ,但是當我顯示接收到的值時,它會在Arduino串口監視器中顯示奇怪的值,即255,254,250或245,並在Android端也回覆奇怪的值。Android和Arduino都通過藍牙接收奇怪的值

但令人驚訝的是,當我從android發送這些命令並且沒有其他指令/ LED正確執行/打開/關閉時,110,119等中的單個條件成爲真。

任何人都可以幫我找出問題嗎?以下是我的arduino代碼。

int data; 
String message; 

void setup() 
{ 
Serial.begin (57600); 

pinMode (6, OUTPUT); 
pinMode (7, OUTPUT); 
pinMode (8, OUTPUT); 
pinMode (9, OUTPUT); 
pinMode (10, OUTPUT); 

digitalWrite(6, LOW); // off LED 1 at pin6 
digitalWrite(7, LOW); // off LED 2 at pin7 
digitalWrite(8, LOW); // off LED 3 at pin8 
digitalWrite(9, LOW); // off LED 4 at pin9 
digitalWrite(10, LOW); // off LED 5 at pin10 
} 

void loop() { 
int i=0; 
if (Serial.available()>0) 
{ 
int data= Serial.read(); 

Serial.println (" Received data: "); 
Serial.println (data); 

if (data==110) //q 
{ 
digitalWrite(6, HIGH); // turn on LED 1 at pin6 
message = "LED 1 On"; 
Serial.println (message); 

} 
if (data==102) // a 
{ 
digitalWrite(6, LOW); // off LED 1 at pin6 
message = "LED 1 Off"; 
Serial.println (message); 
} 

if (data==96) //c 
{ 
digitalWrite(7, HIGH); //on LED 2 
message = "LED 2 On"; 
Serial.println (message); 
} 

if (data==115) //d 
{ 
digitalWrite(7, LOW); // off LED 2 
message = "LED 2 Off"; 
Serial.println (message); 
} 

if (data==111) //e 
{ 
digitalWrite(8, HIGH); //on LED 3 
message = "LED 3 On"; 
Serial.println (message); 
} 

if (data==97)// f 
{ 
digitalWrite(8, LOW); //sets the LED 3 
message = "LED 3 Off"; 
Serial.println (message); 
} 

if (data==107) //g 
{ 
digitalWrite(9, HIGH); //turn on LED 4 
message = "LED 4 On"; 
Serial.println (message); 
} 

if (data==120)//h 
{ 
digitalWrite(9, LOW); //sets the LED 4 
message = "LED 4 Off"; 
Serial.println (message); 
} 


if (data==99) //i 
{ 
digitalWrite(10, HIGH); //sets the LED 5 
message = "L5 high"; 
Serial.println (message); 
} 

if (data==104) //j 
{ 
digitalWrite(10, LOW); //sets the LED 5 
message = "LED 5 Off"; 
Serial.println (message); 
} 

if (data==112) //y 
{ 
digitalWrite(6, HIGH); // turn on ALL LEDs 
digitalWrite(7, HIGH); 
digitalWrite(8, HIGH); 
digitalWrite(9, HIGH); 
digitalWrite(10, HIGH); 
message = "ALL LEDs ON"; 
Serial.println (message); 
} 


if (data==122)//z 
{ 
digitalWrite(6, LOW); //Turn off all LEDs 
digitalWrite(7, LOW); 
digitalWrite(8, LOW); 
digitalWrite(9, LOW); 
digitalWrite(10, LOW); 
Serial.println ("ALL LEDs OFF"); 
} 

else 
{ 
digitalWrite(13, HIGH); //sets the LED 5 
delay(3000); //3sec 
digitalWrite(13, LOW); 
delay(3000); 
Serial.println (" else case executed "); 

} ////end of else 

} 
data=0; 
} 
+0

我是Arduino上的新手,但是如果Serial.read()正在從藍牙設備讀取數據,那麼您的Serial.println()調用正在寫入同一個藍牙設備,而不是寫入Arduino串行監視器。 –

+0

不,我在串行監視器上也收到一些randomn值,如255,240。我收到我的手機的值是一些什麼樣的?/ ??? ??? ?? – AbdulSaleem

回答

1

嘗試char data = Serial.read();

並顯示適用於Android的Java代碼。

見100%的工作代碼Bluetooth Arduino&Android

+0

SirАнатолийКолтыков,我也試過字符。非常感謝讓我工作的鏈接太.. :-) – AbdulSaleem

+0

親愛的先生АнатолийКолтыков;鏈接上提供的代碼是Android版本4.1,但我有2.2。我對android很有新意。你能告訴我需要做什麼改變才能確保Android應用程序正常工作嗎? – AbdulSaleem

0

如果使用Arduino的烏諾,那麼你就不能使用串行監控打印值,如果您已經使用串行通信,藍牙,因爲它只有一個串口。

您必須使用軟件串行庫或使用具有4個串行端口的Arduino Mega。

+0

謝謝。先生@sudar我正在使用UNO。我現在嘗試了一些其他的代碼,這是不同的,我從Arduino得到適當的答覆到移動,但相應的LED條件不能正確執行,即當我通過BluetoothChat應用程序發送任何字母或整數數字。從我的手機到arduino。它在串行監視器上打印255或254。請你可以引導下面是我的arduino代碼 – AbdulSaleem

+0

Arduino代碼snapsots在https://www.facebook.com/media/set/?set=a.537304616296698.140354.100000514942282&type=3 – AbdulSaleem