どうも、なかしー(@nakac_work)です。
僕は自動車や家電製品のマイコンにプログラミングをする仕事をしてます。
今回は「ArduinoでUART通信する方法」について紹介します。
UART通信を行うことで、Arduinoとパソコン間でデータのやりとりが可能です。
この記事では次の内容を紹介します。
- UART通信の特徴
- Arduinoの接続方法
- Arduinoのプログラミング
ArduinoのUART通信の特徴
UART通信はパソコンや他のマイコンとデータのやり取りを行うことができます。
UART通信はシリアル通信方式です。
見ての通りシリアル通信の方が配線本数が少なくて済みますが、データの送受信にはルールがあります。
スタートビットからストップビットの順でデータを1ビットずつ送信します。
スタートビットはLowにすると通信開始の合図で、ストップビットはHIGHにすると通信終了の合図です。
LSBは1ビット目のことを指していて、MSBは8ビット目です。
Arduinoから0x41を送ると、表の左から順にデータを送信します。
LSB | 2 | 3 | 4 | 5 | 6 | 7 | MSB |
1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Arduinoの接続方法
パソコンと通信する場合はUSBケーブルを差し込むだけでOKです。
ArduinoでUART通信するプログラム
先にプログラム例として「UART通信でパソコンからのデータをそのまま返すプログラム」を紹介します。
int data = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
data = Serial.read();
Serial.write("from Arduino\n");
Serial.write(data);
Serial.write("\n");
Serial.flush();
}
}
プログラミングで大事な部分を説明します。
- Serial.begin(引数1)
- Serial.available()
- Serial.read()
- Serial.print(引数1,引数2)
詳しく解説します。
Serial.begin(引数1)
通信速度を設定する関数です。
1秒間でどれくらいのデータを送れるかを表すbps(ビット/秒)を使います。
数が多いほど、通信速度が速いことを意味します。
よく使う設定値は 9600、19200、115200だと思います。
初期設定なのでsetup()関数の中で呼び出して、引数1に設定するbpsを入力します。
Serial.available()
受信したバイト数を調べることができる関数です。
変数 = Serial.available()で変数に受信したバイト数が代入されます。
1バイトは8ビットで、僕たちがスマホで見ている文字や数字のデータは1文字1バイト(8ビット)です。
パソコンから(AB)と送ると変数には2が代入されます。
もしも、パソコンからデータを受信する度に何か実行したい場合は
if(Serial.available() > 0) 実行したい処理
と書けばOKです。
もしくは、データを受信するまで待機させたいなら
while(Serial.available() == 0)
Serial.read()
受信したデータを読み取るための関数です。
変数 = Serial.read()で1バイト分のデータを読み取ることができます。
Serial.print(引数1,引数2)
データを送信するときに使う関数です。
引数1には送りたいデータを、引数2にはデータのフォーマットを入力します。
引数2 | 表示する内容 |
BIN | 2進数で表示 |
DEC | 10進数で表示 |
OCT | 8進数で表示 |
HEX | 16進数で表示 |
数字 | 小数点以下を表示する桁数 |
ArduinoでUART通信する方法|まとめ
この記事では「ArduinoでUART通信する方法」について紹介しました。
UART通信のポイントは
- UART通信はシリアル通信でデータを送受信するルールが決まっている
- パソコンと通信するときはUSBケーブルを繋げばOK
- UART通信で使う関数は主に4つ
Arduino関連の人気記事
>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】
>>Arduinoでできることを紹介【逆にできないことは何?】
当ブログで人気のArduino入門キット