两块arduino板子之间主从通信
玩儿了三年arduino,第一次发帖,也是最近接触到一个项目,需要用到两块板子,主机给从机发送一个指令,从机将自己采集的数据发给主机,为大家分享下,做的不好的请大神指出。首先准备两块arduino板子,4根杜邦线,连线方式5V-5VGND-GND TX-RX RX-TX。连接好以后,先上传主机代码:
String comdata = "";
void setup() {
Serial.begin(9600);
while(Serial.read()>= 0){} //clear serialbuffer
Serial3.begin(9600);
while(Serial3.read()>= 0){} //clear serialbuffer
}
void loop() {
Serial3.print("request"); //向从机发送温度获取指令
delay(10);
while(Serial3.read()>=0){} //clear serialbuffer
delay(3000);
// read data from serial port
if(Serial3.available()>0){
delay(100);
comdata = Serial3.readString();
Serial.print("Serial.readString:");
Serial.println(comdata);
}
comdata = "";
}
接着USB连接从机,并上传代码:
String comdata = "";
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial3.begin(9600);
}
void loop() {
float TEMP1=1000.0123;
float P1=9990.0123;
if(Serial3.available()>0){
delay(100);
comdata = Serial3.readString();
Serial.println('A'+comdata);
if(comdata == "request"){
Serial.println(comdata);
Serial.println((String)TEMP1+','+(String)P1);
Serial3.print((String)TEMP1+','+(String)P1);
}
delay(50);
while(Serial.read()>= 0){} //clear serialbuffer
while(Serial3.read()>= 0){} //clear serialbuffer
comdata = "";
}
Serial.println("nothing");
delay(100);
}
注意:我用的两块板子都是arduino MEGE2560,并且两块板子的连线是连接了Serial3,也可以使用其他串口,代码里面改一下串口编号就行。
抱歉,是MEGA2560,错打成了MEGE2560 学习学习:) 这样一来,是不是可以实现远程监控端获取服务端的采集信息了?那么,这台主机可以带多少个从机呢? 楼主,你这个程序编译后有问题,没有包含到头文件 I2C怎么通信?
页:
[1]