我正在尝试将数字从 Raspberry Pi 发送到通过 USB 连接的 Arduino Uno。我关注了this非常简单的教程。
我可以找到 Arduino 连接的端口,并且我已经编写了代码,以便每当 Arduino 通过串口接收到某些东西(任何东西)时,它都会使默认 LED 闪烁几次。问题是它从来没有收到任何东西。
当我从 Raspberry 运行 python 脚本时,arduino 上的 LED 随机闪烁(就像它刚刚连接到电源),但随后它停止并且没有任何反应。
代码是这样的:
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
blinkLED(3);
}
}
void blinkLED(int count) {
for (int i=0; i< count; i++) {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
}
虽然python代码是:
import serial
ser = serial.Serial('/dev/ttyACM0', 9600)
ser.write('3')
我做错了什么?
请您参考如下方法:
我发现了问题。基本上,当我从 python 打开端口时,Arduino 会自行重置,所以我在端口打开后发送的内容被 Arduino 丢弃(因为它仍在重置)。
我现在的解决方法是在打开端口后简单地添加一个 sleep ,同时 Arduino 完成重置。
Python 代码现在看起来像这样:
import serial
import time
ser = serial.Serial('/dev/ttyACM0', 9600)
time.sleep(5)
ser.write('3')
