Arduinoでシリアル通信する際の注意点
Arduinoとシリアル通信をするには、起動時間のために1.5秒ほど待たなくてはならない。
でないとうまくプログラムが動かなくて、唸ることになる。
検証
検証プログラムとして、Arduino側でシリアル通信で何かの文字列を受け取ったら13番ピンに刺さっているLEDが光るプログラムを製作。
// Arduino用プログラム const int LED = 13; void setup() { Serial.begin(9600); pinMode(LED, OUTPUT); digitalWrite(LED, LOW); } void loop() { if(Serial.available() > 0) { // シリアル通信で何か受信したら digitalWrite(LED, HIGH); } delay(10); // 10[ms]待つ }
手作業で文字列を打つのは面倒なので、pythonスクリプトで文字列を送信。5秒間光らせるだけ。
# coding: utf-8 import serial import time ser = serial.Serial() ser.port = '/dev/cu.usbserial-A7006Qrd' ser.baudrate = 9600 ser.open() ser.write('dummy string') time.sleep(5)
このスクリプを実行すると、5秒間何も起こらないまま終了する。