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 )。