Arduinoでシリアル通信
設定
設定はsetupでbeginを呼ぶだけ。最低限必要なパラメータは通信速度。
void setup()
{
Serial.begin(9600);
}
9600bspはちょっと遅いけど定番。
マイコンが16MHzなら38400くらいが早くて安定しています。
送信
Serial.println(内容)が基本形。print/writeなどもある。以下が詳細
int value = analogRead(0);
Serial.println("message") //「message」+改行コードが付く。最もベーシックな形
Serial.print("message") // 改行したくない場合はこう
Serial.println(value); //intのような数値も変換して送ってくれる
Serial.write(value); //バイナリで1バイトとして送る時はこれ
受信
1文字ずつ読んで何かを実行するのなら、以下の通りで簡単に処理が可能。これでも一応、アルファベットの大文字小文字で50通り以上のパターンが作れる。
void loop()
{
while (Serial.available())
{
byte data = Serial.read();
if (data == 'H') digitalWrite(13, HIGH);
if (data == 'L') digitalWrite(13, LOW);
}
}
もう少しパラメータを与えたいなどの場合は、文字をある程度スタックして処理する必要がある。
String recv;
void loop()
{
while (Serial.available())
{
char data = Serial.read();
if (data == '\n')//改行コード
{
if (recv.substring(0, 1) == "A")
{
analogWrite(9, recv.substring(1).toInt());
}
if (recv.substring(0, 1) == "B")
{
analogWrite(10, recv.substring(1).toInt());
}
}
else
{
recv += data;
}
}
}
こうすると”A128”や"A0"で9番ピンを、”B50"や"B256"と送る事で9番ピンと10番ピンから好きな値でPWM出力を指示することができ、デバッグや微調整がやりやすくなる。(改行コードを最後に入れるべし)