Serialization Arduino Mega通过串行传输到2个UNO

Serialization Arduino Mega通过串行传输到2个UNO,serialization,Serialization,嗨,这是我第一次发帖,所以请容忍我 我的问题是Arduino Mega和2x Arduino UNO之间的串行通信 我的设置包括一个Mega作为我的主设备和1个UNO+Adafruit隔音罩和1个UNO+Adafruit马达护罩。我有他们通过串行端口,即Serial1 RxTx上的兆赫串行TxRx上的UNO和同样的Serial2上的其他UNO,我有2个UNO的,因为两个Sheild采取了整个PWM引脚的UNO Serial.begin(9600); //<--mega// Serial1.

嗨,这是我第一次发帖,所以请容忍我

我的问题是Arduino Mega和2x Arduino UNO之间的串行通信

我的设置包括一个Mega作为我的主设备和1个UNO+Adafruit隔音罩和1个UNO+Adafruit马达护罩。我有他们通过串行端口,即Serial1 RxTx上的兆赫串行TxRx上的UNO和同样的Serial2上的其他UNO,我有2个UNO的,因为两个Sheild采取了整个PWM引脚的UNO

Serial.begin(9600); //<--mega//
Serial1.begin(9600); //<--mega//
Serial2.begin(9600); //<--mega//
Serial.begin(9600); //<--UNO Sound//
Serial.begin(9600); //<--UNO motor//
UNO代码除电机激活的Serial.print语句外,其他语句均相同:

Serial.println("Alive$$$");

while(CommFlag == 0){

delay(250);
  while (Serial.available()){
         SerialReceive = Serial.read();
         RxContent.concat(SerialReceive);
          delay(50);


      if (RxContent == "CommEst"){

        CommFlag = 1;
        RxContent = "";

      }
  } 
}
在串行窗口中,当PC连接到mega上的USB串行时,我可以看到UNO的活动$$$响应,但mega似乎不接受响应值,也不执行if语句

我做错什么了吗?任何帮助都将不胜感激


Rich

在UNO代码中,您使用Serial.println发送字符串,这意味着字符串是\r\n字符前缀。但是当您比较时,不是以\r\n结尾。请通过在比较字符串末尾添加\r\n来更改if语句

if (RxContent2 == "Alive$$$\r\n")

或将UNO中的代码更改为print not println

Serial.print("Alive$$$");


嗨,阿迪萨克,迟来的谢谢你的建议,我终于尝试了这个,现在它在做声音控制的UNO上工作,但我还没能在做马达控制的UNO上工作。两者之间的唯一区别是声音UNO在子程序中,该子程序在设置中打开串行端口后执行,电机不是子程序,直接跟随串行端口的初始化?你认为这会有所不同吗?马达uno代码:Serial.printlnAlive;主控制代码:如果RxContent1==Alive\r\n{…}我在主控制中有以下代码,因此我可以看到来自motor uno Serial.printMotor MCU的内容:;Serial.printlnRxContent1;我在串行窗口中看到的是:Motor MCU:Alive它好像接收到传入文本字符串之前的\r\n,但我的代码不应该这样做?你认为原因是什么?或者这可能是初始化串行端口时出现的计时问题?如蒙协助,将不胜感激。谢谢Rich
if (RxContent1 == "Alive\r\n")
Serial.print("Alive$$$");
Serial.print("Alive");