0
嗨這是我第一次發佈,所以忍受着我。Arduino兆到2倍UNO在串行
我的問題是與Arduino Mega和2x Arduino UNO之間的串行通信。
我的設置包括一個兆作爲我的主設備和1x UNO + Adafruit的隔音罩& 1X UNO + Adafruit的電機盾。我有他們通過串行端口,即Serial1 RxTx在UNO上的大型串行TxRx和同樣再次爲Serial2爲其他UNO,(我有x2 UNO的兩個sheild佔用整個UNO的PWM引腳)
Serial.begin(9600); //<--mega//
Serial1.begin(9600); //<--mega//
Serial2.begin(9600); //<--mega//
Serial.begin(9600); //<--UNO Sound//
Serial.begin(9600); //<--UNO motor//
兆碼:
Serial.println("Entering While loop1"); // Debug //
while(CommFlag1 == 0){
while (Serial2.available()){
SerialReceive2 = Serial2.read();
RxContent2.concat(SerialReceive2); //Store Content of Serial Data into Global Variable//
delay(10);
}
Serial.print("Sound MCU: "); // Debug //
Serial.println(RxContent2); // Debug //
delay(100); // Debug //
if (RxContent2 == "Alive$$$") {
Serial2.println("CommEst");
Serial.println("Alive Response Recieved Sound MCU"); // Debug //
RxContent2 = "";
CommFlag1 = 1;
}
}
Serial.println("Entering While loop2"); // Debug //
while(CommFlag2 == 0){
while (Serial1.available()){
SerialReceive1 = Serial1.read(); //Store Content of Serial Data into Global Variable//
RxContent1.concat(SerialReceive1);
delay(10);
}
Serial.print("Motor MCU: "); // Debug //
Serial.println(RxContent1); // Debug //
delay(100); // Debug //
if (RxContent1 == "Alive"){
Serial1.println("CommEst");
Serial.println("Alive Response Recieved Motor MCU");
RxContent1 = "";
CommFlag2 = 1;
}
}
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 = "";
}
}
}
在串行窗口,我可以看到UNO的「一個Live $$$「響應當PC連接到USB(串行)在兆,但巨型似乎並不接受響應值,並不執行if語句?
我做錯了什麼?任何幫助將不勝感激!
豐富
嗨Adisak,遲來的謝謝你的建議,我有終於嘗試過,現在它在UNO上工作聲音控制,但我還沒有能夠在UNO上進行電機控制。 兩者之間的唯一區別在於聲音UNO是在子程序中執行的,該子程序在安裝中打開串口後執行,並且電機不是子程序,並且直接在串口初始化之後? 你認爲這會有所作爲嗎? –
motor uno code: Serial.println(「Alive」); 主控代碼: 如果(RxContent1 ==「活着\ r \ n」){} ..... 我在主控制這下面的代碼,所以我可以看到什麼是從電機UNO 未來Serial.print(「Motor MCU:」); Serial.println(RxContent1); 我串行窗口上得到什麼: 汽車MCU: 活着 這是因爲如果它的接收\ r \ n輸入文本字符串前面,但我的代碼不應該這樣做呢? 你認爲可能是什麼原因?或者這可能是初始化串行端口時的時間問題? 任何援助將不勝感激。 Thanks Rich –