9

好的,所以我很肯定我的 Arduino 电路和它的代码是正确的。我知道这一点,因为当我使用 Arduino IDE 中内置的串行监视器并发送“H”时,LED 会亮起,而当我发送“L”时,LED 会关闭。

现在我做了一个 Python 程序

import serial
ser = serial.Serial("COM4",9600)
ser.write("H")

当我运行代码时,LED 会闪烁一秒钟然后又熄灭。但是,当我在 shell 中分别执行这些行时,它的工作原理就像它应该做的那样。

有任何想法吗?

4

4 回答 4

8

当您打开串行端口时,这会导致 Arduino 重置。由于 Arduino 需要一些时间来启动,所有输入都进入 bitbucket(或者可能进入引导加载程序,上帝知道它会做什么)。如果你插入一个睡眠,你等待 Arduino 出现所以你的序列号。这就是它以交互方式工作的原因;您正在等待软件启动所需的 1.5 秒。

我确认打开串口会重置我的Arduino Uno;我闪烁了一个程序,该程序将使setup()例程中的 LED 闪烁——调用open("/dev/ttyACM0")足以触发重置。恕我直言,这是串行支持中令人困惑且未记录的皱纹。

于 2011-02-09T06:16:15.457 回答
6

我有同样的问题,如果我从打开串行连接到写入它添加大约 2 秒的延迟,它会起作用,1 秒是不够的。

于 2010-07-17T19:39:27.593 回答
1

为了更清楚一点,我将修改代码,以便每个人都可以看到需要添加的内容!

import serial
import time
ser = serial.Serial("COM4",9600)
time.sleep(3)
ser.write("H")

添加睡眠语句有助于让连续打开没有任何问题!

于 2013-08-23T18:56:49.850 回答
0

假设您使用的是 Arduino Uno

USB 端口和 Uno 串行总线暴露在引脚上10共享同RX/TX一条线路。我建议买一个像这里这样的 USB 到 TTL 适配器,这样你就可以在不使用 USB 端口的情况下与 Arduino 通信。Arduino IDE 有自己的脱离 USB 驱动程序的方法,这样就可以创建一个虚拟串行端口。改为使用您的 Ardunio SoftwareSerial

这是我在互联网上找到的一个示例,其中有人遇到了冲突的公共汽车问题。

于 2019-07-15T00:04:06.600 回答