arduino
PythonがArduino Unoとどのように統合されるか
サーチ…
構文
-
Serial.begin(baudrate) // Set baud rate (bits per second) for serial data transmission
-
Serial.println(value) // Print data to serial port followed by Carriage Return \r and Newline character \n
-
serial.Serial((port=None, baudrate=9600, bytesize=EIGHTBITS, parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None) // Initialize serial port with all parameters
-
serial.readline() // Read serial data which contains Carriage Return \r and Newline character \n
パラメーター
パラメータ | 詳細 |
---|---|
シリアル | Pythonパッケージには、シリアルポートにアクセスするためのクラスとメソッドが含まれています |
時間 | Pythonパッケージには時間関連の関数が含まれています |
備考
私はArduino UnoをArduino IDE 1.6.9とPython 2.7.12をWindows 10で使用しています。
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形式のシリアルポートに送信します。メッセージの終わりに、キャリッジリターン(CR, \r)
と改行文字(\n)
ます。また、プログラムがシリアルポートに印刷するたびに、100ミリ秒の遅延が使用されます。
次に、このArduinoのスケッチをCOMポート経由でアップロードします(この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スケッチで使用されているものと同じである必要があります。
受信したメッセージは、whileループでreadline()
関数を使って出力されます。 Arduinoのスケッチと同じように、ここでも100ミリ秒の遅延が使用されます。 pyserial readline()
関数は、シリアルポートを開くときにタイムアウトが必要であることに注意してください(pyserial documentation: PySerial ReadLine )。