Здравствуйте!
С мастера на слейв отправляется сигнал вкл/выкл светодиод, в ответ (по плану) приходит : "Led is ON" or "Led is OFF"
но, при попытке связать две ардуино по softwareSerial ---> Serial получается такой результат в мониторе порта master:
Hello, friend?
Enter a code word ...
One
Access is allowed...
1ʑ⸮́ON
0ʑ⸮́off
1⸮⸮⸮́ON
0⸮⸮⸮́off
1⸮⸮⸮́ON
Почему-то часть символов приходит в виде значков.
Подскажите пожалуйста почему так получается...
Подключение как на картинке.
Код:
ардуино1 "мастер"
Если закомментировать в слэйве строки 26 и 33 то первая буква приходит правильно, потом значки и и в конце On и off правильно...
С мастера на слейв отправляется сигнал вкл/выкл светодиод, в ответ (по плану) приходит : "Led is ON" or "Led is OFF"
но, при попытке связать две ардуино по softwareSerial ---> Serial получается такой результат в мониторе порта master:
Hello, friend?
Enter a code word ...
One
Access is allowed...
1ʑ⸮́ON
0ʑ⸮́off
1⸮⸮⸮́ON
0⸮⸮⸮́off
1⸮⸮⸮́ON
Почему-то часть символов приходит в виде значков.
Подскажите пожалуйста почему так получается...
Подключение как на картинке.
Код:
ардуино1 "мастер"
master:
// C++ code
//
#include <SoftwareSerial.h>
String buffer = "";
String code = "";
boolean recievedFlag;
SoftwareSerial mySerial(2, 3); // RX, TX
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
Serial.println("Hello, friend?");
Serial.println("Enter a code word ...");
do
{
if(code!= "")code = "";
while (Serial.available()>0)
{
code += (char)Serial.read();
recievedFlag = true; // поднять флаг что получили данные
delay(10); // ЗАДЕРЖКА. Без неё работает некорректно!
}
if (recievedFlag)
{ // если данные получены
Serial.println(code); // вывести
recievedFlag = false; // опустить флаг
}
}
while(code != "One");
Serial.println("Access is allowed...");
}
void loop()
{
if (Serial.available()>0)
{
char x = Serial.read();
//mySerial.write(x);
mySerial.println(x);
}
while (mySerial.available()>0)
{
buffer += (char)mySerial.read();
recievedFlag = true; // поднять флаг что получили данные
delay(10); // ЗАДЕРЖКА. Без неё работает некорректно!
}
if (recievedFlag)
{ // если данные получены
Serial.println(buffer); // вывести
buffer = ""; // очистить
recievedFlag = false; // опустить флаг
}
}
slave:
// C++ code
//
int x ;
bool flagSend = 1;
//String masON = "Led is ON";
//char masOFF[] = {'L','e','d',' ','i','s',' ','O','F','F'};
void setup()
{
Serial.begin(9600);
pinMode(13,OUTPUT);
}
void loop()
{
if (Serial.available())
{
x = Serial.read();
flagSend = 0;
//Serial.println(x);
}
if (x == '1' && flagSend == 0 )
{
digitalWrite(LED_BUILTIN, HIGH);
Serial.write(x);
Serial.println("Led is ON");
flagSend = 1;
}
else if (x == '0' && flagSend == 0 )
{
digitalWrite(LED_BUILTIN, LOW);
Serial.write(x);
Serial.println("Led is off");
flagSend = 1;
}
}