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