Последовательная связь между Arduino

Я пытаюсь отправить данные из Arduino Mega в UNO. Мастер - код посылает символы "x" и "a" каждые полсекунды на ведомый Arduino UNO. Ведомый получает символы и переключает состояние бортового светодиода. Здесь я пытаюсь напечатать какой-то текст в начале цикла и полученные символы. Вместо букв он печатает цифры, как указано ниже. Почему эта строка Serial.println('Soft serial avaialble') печатает числа? Как напечатать реальный текст, полученный от мастера?

> 27749
> 97 
> 27749 
> 120 
> 27749

Мастер-код:

// Include the Software Serial library 
#include <SoftwareSerial.h>
// Define a Software Serial object and the used pins 
SoftwareSerial softSerial(8, 9);  // RX, TX 
void setup()  {
    Serial.begin(9600); 
    softSerial.begin(9600);
} 
void loop()  { 
    // Sends characters 'x' and 'a' every half second.
    if (Serial.available())  { 
        softSerial.write('x');
        delay(500);
        digitalWrite(LED, LOW); 
        delay(500);
    } 
}

Ведомый код:

// Include the Software Serial library 
#include <SoftwareSerial.h>
// Define a Software Serial object and the used pins 
SoftwareSerial softSerial(8, 9);
// LED Pin 
int LED = 13; 

void setup()  { 
    softSerial.begin(9600); 
    Serial.begin(9600); 
    pinMode(LED, OUTPUT);
 
} 
void loop()  { 
    Serial.println('Soft serial avaialble');
    if (softSerial.available())  { 
        int com = softSerial.read(); 
        if (com == 'x')  { 
            Serial.println(com);
            digitalWrite(LED, LOW); 
        } else if (com == 'a'){ 
            Serial.println(com);
            digitalWrite(LED, HIGH); 
        } 
    } 
}

, 👍0


2 ответа


Лучший ответ:

1

В вашем подчиненном устройстве вы объявили com как int, поэтому Serial.println() интерпретирует его именно так. Если вы хотите сохранить его как int, за исключением печати, приведите аргумент Serial.println () к char:

Serial.println((char)com);
,

Спасибо. Это работает!, @Shyam3089


0

В дополнение к замечанию Жробера обратите внимание, что строки в C++ разделены двойными кавычками, таким образом:

Serial.println("Soft serial avaialble");
,

Большое спасибо. Я не знал об этом., @Shyam3089

Хороший улов, @EdgarBonet - я пропустил это., @JRobert