ArduinoでUART通信する方法【プログラム例も紹介】

どうも、なかしー(@nakac_work)です。
僕は自動車や家電製品のマイコンにプログラミングをする仕事をしてます。

今回は「ArduinoでUART通信する方法」について紹介します。

UART通信を行うことで、Arduinoとパソコン間でデータのやりとりが可能です。

この記事では次の内容を紹介します。

この記事の内容
  1. UART通信の特徴
  2. Arduinoの接続方法
  3. Arduinoのプログラミング

ArduinoのUART通信の特徴

UART通信はパソコンや他のマイコンとデータのやり取りを行うことができます。

UART通信はシリアル通信方式です。

見ての通りシリアル通信の方が配線本数が少なくて済みますが、データの送受信にはルールがあります。

スタートビットからストップビットの順でデータを1ビットずつ送信します。

スタートビットはLowにすると通信開始の合図で、ストップビットはHIGHにすると通信終了の合図です。

LSBは1ビット目のことを指していて、MSBは8ビット目です。

Arduinoから0x41を送ると、表の左から順にデータを送信します。

LSB234567MSB
10000100

Arduinoの接続方法

パソコンと通信する場合はUSBケーブルを差し込むだけでOKです。

ArduinoでUART通信するプログラム

先にプログラム例として「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進数で表示
HEX16進数で表示
数字小数点以下を表示する桁数

ArduinoでUART通信する方法|まとめ

この記事では「ArduinoでUART通信する方法」について紹介しました。

UART通信のポイントは

この記事のポイント
  1. UART通信はシリアル通信でデータを送受信するルールが決まっている
  2. パソコンと通信するときはUSBケーブルを繋げばOK
  3. UART通信で使う関数は主に4つ

Arduino関連の人気記事

>>【Arduino入門キット】電子工作の勉強におすすめ【こんなに安くていいの?】

>>Arduinoでできることを紹介【逆にできないことは何?】

>>Arduinoをゼロから勉強する方法【参考書は不要】

当ブログで人気のArduino入門キット

第1位:Arduino UNO スターターキット
Arduino UNOのスタータキットです。電子工作でよく使う部品が一式揃っており、バラバラで購入するより格段に安いです。
第2位:ELEGOO Arduino用のUNO R3 最終版スタータキット
こちらも電子工作によく使う部品が第一位のスタータキットよりたくさん入っています。とてもお買い得です。
第3位:ELEGOO Arduino MEGA 2560 R3
UNOの上位互換版MEGAのスターターキットです。これだけ入っていれば十分に電子工作の基本をマスターできることでしょう。
エンジニアが教えるArduino入門講座のまとめ【解説動画付き】