【问题标题】:Android and Arduino both receiving strange values via BluetoothAndroid 和 Arduino 都通过蓝牙接收到奇怪的值
【发布时间】:2012-10-03 23:28:16
【问题描述】:

我在 Android 端使用 BluetoothChat 代码使用聊天框向 Arduino UNO 发送 ON/OFF 信号(我发送 110、119 或下面定义的其他情况),但是当我显示接收到的值时,它在 Arduino 串口监视器中显示奇怪的值,即 255、254、250 或 245,并且在 Android 端也以奇怪的值回复。

但令人惊讶的是,当我从 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;
}

【问题讨论】:

  • 我是 Arduino 的新手,但如果 Serial.read() 正在从蓝牙设备读取,那么您的 Serial.println() 调用正在写入同一个蓝牙设备,而不是 Arduino 串行监视器。
  • 不,我在串行监视器上也收到了一些随机值,例如 255、240。我收到的手机值类似于 ??/??? ??? ??

标签: android bluetooth arduino communication


【解决方案1】:

试试 char data = Serial.read();

并显示适用于 Android 的 Java 代码。

查看Bluetooth Arduino&Android 的 100% 工作代码

【讨论】:

  • Анатолий Колтыков 先生,我也试过 char。好吧,谢谢让我也处理链接.. :-)
  • 尊敬的 Анатолий Колтыков 先生;链接上提供的代码适用于 Android 4.1 版,但我有 2.2。我对android有点陌生。您能否告诉我需要进行哪些更改才能确保 Android 应用程序正常运行?
【解决方案2】:

如果您使用的是 Arduino Uno,那么您不能使用串口监视器打印值,如果您已经使用串口与蓝牙通信,因为它只有一个串口。

您必须使用软件串行库或使用具有 4 个串行端口的 Arduino Mega。

【讨论】:

  • 谢谢。 @sudar 先生,我正在使用 UNO。我现在尝试了一些其他代码,它有所不同,我得到了从 arduino 到移动设备的正确回复,但相应的 LED 条件没有正确执行,即当我通过 BluetoothChat 应用程序发送任何字母或整数时。从我的手机到arduino。它在串行监视器上打印 255 或 254。请你指导我下面是我的arduino代码
  • facebook.com/media/set/… 上的 Arduino 代码快照
猜你喜欢
  • 1970-01-01
  • 2021-10-15
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2013-10-04
  • 1970-01-01
相关资源
最近更新 更多