我目前正在使用Node-red开发Raspberry Pi。 我想在我的Pi和Arduino之间建立串行连接。 我通过Rx和Tx引脚连接了Raspberry pi和Arduino Uno。
我可以通过引脚将数据从Arduino发送到我的Pi。
Arduino代码:
void setup() {
Serial.begin(9600);
}
void loop() {
//Arduino to Raspberry Pi
Serial.println("test");
delay(1000);
}
我在Pi上接收到数据
但是一旦我想将数据从我的Pi发送到Arduino,它就无法工作。
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中发送字符串“ hello”的注入按钮,则Arduino的串行监视器中将没有输出。
如果我使用该代码:
void setup() {
Serial.begin(9600);
}
void loop() {
int x = Serial.read();
Serial.println(x);
}
串行监视器始终显示-1。但是,如果我按Node-Red中的注入按钮,则会出现一些不大于255的数字。
我希望看到字符串“ hello”。
感谢您的帮助。
答案 0 :(得分:0)
您的监视器显示-1完全正常,这是因为由于串行连接是同步的,因此它们连续发送数据以免丢失同步。因此,当您使用serial.Begin(9600)
设置arduino时,您将启动连接,即使它们尚未开始正确的数据通信,它们也可以互相发送数据。如果需要更多信息,请参见wiki上的rs-232
您正在将arduino上的x读取为整数。
“ hello”实际上不是int:p
尝试使用String x =Serial.Read();
代替