Node-Red Последовательное соединение RX TX Raspberry Pi и Arduino - PullRequest
0 голосов
/ 18 сентября 2018

Я сейчас работаю над своим Raspberry Pi с Node-red.Я хочу иметь последовательное соединение между моим Pi и Arduino.Я подключил Raspberry pi и Arduino uno к контактам rx и tx.

Serial input in Node-Red

Я могу отправлять данные с моего Arduino на мой Pi через контакты.

Код Arduino:

void setup() {
  Serial.begin(9600);
}

void loop() {
  //Arduino to Raspberry Pi
  Serial.println("test");  
  delay(1000);
}

Я получаю данные на моем Pi

НО, как только я хочу отправить данные с моего Pi на Arduino, он не работает.

Serial output in Node-Red

Код Arduino:

void setup() {
  Serial.begin(9600);
}

void loop() {
  //Raspberry Pi to Arduino
  if (Serial.available() > 0){
    int x = Serial.read();
    Serial.println(x);
  }
}

Теперь, если я нажму кнопку ввода, которая посылает строку "привет" в Node-Red, в серийном нет выводамонитор на Arduino.

Если я использую этот код:

void setup() {
  Serial.begin(9600);
}

void loop() {
  int x = Serial.read();
  Serial.println(x);
}

Последовательный монитор постоянно отображает -1.Но если я нажимаю кнопку «Впрыск» в узле «Красный», появляются цифры не более 255.

Serial Monitor

Я надеялся увидеть строку «привет».

Спасибо за помощь.

1 Ответ

0 голосов
/ 21 сентября 2018

Ваш монитор показывает -1 совершенно нормально, потому что, поскольку последовательное соединение синхронизировано, они отправляют данные непрерывно, чтобы не потерять синхронизацию.Поэтому, когда вы настраиваете arduino с помощью serial.Begin(9600), вы инициируете соединение, поэтому они отправляют данные друг другу, даже если надлежащий обмен данными еще не начался.Смотрите rs-232 на вики, если вам нужна дополнительная информация

Вы читаете x как int в вашем arduino.«Привет» на самом деле не int: p попробуйте использовать String x =Serial.Read(); вместо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...