我正在编写一个Python脚本,它将一个字符发送给Arduino,Arduino将所收到的字符打印回来。但在这种情况下,Arduino总是给出垃圾值。执行Python脚本时也没有错误。
我检查过多个博客,文章和教程,并按照确切的步骤进行操作,但我没有解决方法。
这是我的Python脚本:
import serial
ser = serial.Serial("/dev/ttyACM0",9600)
ser.write('8')
read=ser.readline()
print(read)
这是Arduino代码:
int temp;
void setup() {
Serial.begin(9600);
temp=5;
}
void loop() {
temp=Serial.read();
Serial.println(temp);
delay(1000);
}
Arduino总是打印-1作为回应。
答案 0 :(得分:2)
Serial.read()
上的文档:
退货
可用的传入串行数据的第一个字节(如果没有数据,则为-1) - int
Ivan Sheigets建议或
void setup() {
Serial.begin(9600);
Serial.print("You sent: ");
}
void loop() {
int temp=Serial.read();
if(temp>=0)
Serial.print((char)temp);
}
确保将传入值转换为char (char)temp
。
答案 1 :(得分:1)
您需要添加Serial.available()
。
void loop()
{
if (Serial.available() > 0)
{
temp=Serial.read();
Serial.print(" I received:");
Serial.println(temp);
}
}