好吧,我确定我的 Arduino 电路及其代码是正确的。我知道这一点,因为当我使用 Arduino IDE 内置的串行监视器并发送“H”时,LED 会亮起,而当我发送“L”时,LED 会熄灭。
现在我做了一个Python程序
import serial
ser = serial.Serial("COM4",9600)
ser.write("H")
当我运行代码时,LED 闪烁一秒钟然后又熄灭。 但是,当我在 shell 中分别执行这些行中的每一行时,它就像预期的那样工作。
有什么想法吗?
最佳答案
当您打开串行端口时,这会导致 Arduino 重置。由于 Arduino 需要一些时间来启动,所有输入都进入 bitbucket(或者可能进入引导加载程序,天知道它有什么用)。如果你插入一个 sleep ,你等待 Arduino 出现,所以你的串行代码。这就是它交互工作的原因;您正在等待软件启动所需的 1.5 秒。
我确认打开串行端口会重置我的 Arduino Uno ;我闪现了一个程序,该程序将使 setup()
例程中的 LED 闪烁——调用 open("/dev/ttyACM0")
足以触发重置。恕我直言,这是串行支持中令人困惑且未记录的问题。
关于python - Arduino 的 Pyserial 问题 - 适用于 Python shell 但不适用于程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1618141/