Arduino 和 Python 之间的第一次串行通信
在第一个例子中,从 Arduino 设备开始基本的串行写操作。
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello World!");
delay(100);
}
在 setup()
中,函数 Serial.begin(9600)
设置串行数据通信的波特率。在此示例中,使用 9600 的波特率。其他值可以在这里阅读: Arduino Serial.begin()
函数
在 loop()
中,我们要发送的第一条消息是 Hello World!
。此消息通过 Serial.println("Hello World!")
传输,因为它将以 ASCII 格式将此字符串发送到串行端口。在消息的末尾,有 Carriage Return (CR, \r)
和 Newline character (\n)
。此外,每次程序打印到串行端口时都会使用 100 毫秒的延迟。
接下来,通过 COM 端口上传此 Arduino 草图(请记住此 COM 端口号,因为它将在 Python 程序中使用)。
读取 Arduino 设备发送的串行数据的 Python 程序如下所示:
import serial
import time
ser = serial.Serial('COM8', 9600)
while (1):
print ser.readline()
time.sleep(0.1)
首先,应该导入 pyserial 包。有关在 Windows 环境中安装 pyserial 的更多信息,请查看以下说明: 安装 Python 和 pyserial 。然后,我们用 COM 端口号和波特率初始化串口。波特率需要与 Arduino 草图中使用的波特率相同。
接收的消息将使用 readline()
函数在 while 循环中打印。这里也使用 100 毫秒的延迟,与 Arduino 草图相同。请注意,pyserial readline()
函数在打开串口时需要超时(pyserial documentation: PySerial ReadLine )。