两块arduino板子之间主从通信-Arduino中文社区 - Powered by Discuz! Archiver

海默003 发表于 2018-12-1 20:19

两块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,也可以使用其他串口,代码里面改一下串口编号就行。

海默003 发表于 2018-12-1 20:20

抱歉,是MEGA2560,错打成了MEGE2560

此花亭 发表于 2018-12-2 11:48

学习学习:)

wuaili1314 发表于 2018-12-2 15:08

这样一来,是不是可以实现远程监控端获取服务端的采集信息了?那么,这台主机可以带多少个从机呢?

LI18236141383 发表于 2021-6-30 17:29

楼主,你这个程序编译后有问题,没有包含到头文件

rh902999 发表于 2022-10-14 13:29

I2C怎么通信?
页: [1]
查看完整版本: 两块arduino板子之间主从通信