求助:
最近想用两块UNO控制板作串行通讯,一块板子给另一块板子发数据,另一块板子根据接收的数据进行相应的动作。
目前,我的测试方法:利用1号板子做一个开关按钮,当开关断开和闭合时分别发送不同的字符 ‘a’ 和 ‘b’。然后将1号板子的TX和RX采用交叉连接方法连接到二号板子的 RX,TX,根据Serial.read();判断读取的字符,然后进行相应的动作。现在2号板子一直没东西,采用监视工具也查询不到有接受字符。
有没有高手指点一下?如果有个类似的例子更加感谢。
|
|
|
|
|
|
|
|
地板
楼主|
发表于 2014-7-28 14:13:26
|
只看该作者
1号板子的程序:
int Switch_Pin=2;//开关按钮
int Ar='a';
int Br='b';
void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
pinMode(Switch_Pin,INPUT);
}
void loop()
{
if(digitalRead(Switch_Pin)==HIGH)
{
Serial.print(Ar);
delay(500);
}
else
{
Serial.print(Br);
delay(500);
}
}
2号板子的程序:
int LED =3;
int val;
int Ar ='a';
int Br ='b';
void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop()
{
if(Serial.available())
{
val=Serial.read();
if(val == Ar)
{
digitalWrite(LED,HIGH);
delay(500);
}
else
{ digitalWrite(LED,LOW);
delay(500);
}
}//if
}
目前rx和tx交叉了,GND也共地了,还没出来。高手们指点一下问题点在哪? |
|
|
|
|
|
|
|
5#
楼主|
发表于 2014-7-28 14:28:02
|
只看该作者
zoologist 发表于 2014-7-28 13:57
rx tx交叉,还有一个gnd也要连在一起
1号板子的程序:
int Switch_Pin=2;//开关按钮
int Ar='a';
int Br='b';
void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
pinMode(Switch_Pin,INPUT);
}
void loop()
{
if(digitalRead(Switch_Pin)==HIGH)
{
Serial.print(Ar);
delay(500);
}
else
{
Serial.print(Br);
delay(500);
}
}
2号板子的程序:
int LED =3;
int val;
int Ar ='a';
int Br ='b';
void setup()
{
Serial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop()
{
if(Serial.available())
{
val=Serial.read();
if(val == Ar)
{
digitalWrite(LED,HIGH);
delay(500);
}
else
{ digitalWrite(LED,LOW);
delay(500);
}
}//if
}
目前rx和tx交叉了,GND也共地了,还没出来。高手们指点一下问题点在哪?
一开始我还顾虑传输的数据会不会变成ASCII码的问题,现在我全部改成一种数据类型。
还有,因为现在2号板的0,1号口已经在串行通讯了,如果我再将2号板用下载线接到电脑上,理论上能观测到数据吗? |
|
|
|
|
|
|
|
不要使用第一串口Serial互连,因为电脑串口也接在第一串口,三个串口连在一起互相影响了。
可以使用Serial1,Serial2或者SoftwareSerial
|
|
|
|
|
|
|
|
本帖最后由 Super169 于 2014-7-28 17:18 编辑
Serial.print(Ar); <- 問題應該在這裡
val=Serial.read(); <- 不會讀出原來 Ar 的數值
先了解一下 Serial.print 及 Serial.write 的分別.
|
|
|
|
|
|
|
|
8#
楼主|
发表于 2014-7-29 18:00:19
|
只看该作者
Ansifa 发表于 2014-7-28 15:23
不要使用第一串口Serial互连,因为电脑串口也接在第一串口,三个串口连在一起互相影响了。
ok!确实提醒我了!谢谢! |
|
|
|
|
|
|
|
9#
楼主|
发表于 2014-7-31 15:01:36
|
只看该作者
经过测试,在另一块板子中开虚拟串口,可以达到这个目的。 |
|
|
|
|
|