こんばんは!
今回はArduinoとコンピュータや他のデバイスとの通信に使われる、シリアルモニターについて説明していきたいと思います。
シリアルモニター
シリアルモニタとはArduinoとコンピュータや他のデバイスとの通信に使用され、データの送受信やプログラムのデバックなどに使用されます。
シリアル通信にはArduino UNOではUSB経由でD0ピン、D1ピンで通信をします。
そのため、シリアルモニタを使用する際は、D0ピンやD1ピンを他の目的で使用することはできません。
シリアルモニターは「ツール」→「シリアルモニター」または「Ctrl+Shift+M」を同時に押すことで起動することができます。
また、左上の虫眼鏡ボタンからも起動することができます。
Serialオブジェクト
Arduinoにはシリアル通信を行うためのメソッドなどをまとめたSerialオブジェクトが存在します。
Serialオブジェクトには多くの関数が存在しますが、主なものと、使用例をまとめてみました。
Serial.begin(speed)
シリアル通信を開始します。
パラメータのspeedはデータレートです。データレートはbpsで設定します。
bpsというのはbit per secondの略で1秒間に送受信できるデータが何ビットかを表す単位です。
コンピュータと通信するには、300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200のどれかのレートを使用して通信をします。
スケッチ例
1 2 3 4 5 6 7 | void setup() { Serial.begin(9600); } void loop() { } |
シリアルモニターのbpsとSerial.begin()のパラメータのbpsは同じ値にしないと正しくデータが送信されないのでシリアルモニタ画面右下の部分からパラメータの値と合わせてください。
Serial.end()
シリアル通信を終了します。再度シリアル通信を行う場合はSerial.begin()によって行います。
パラメータはありません。
Serial.print()
シリアルポートにテキストを出力します。
数字も文字として出力します。数字として出力する場合はSerial.write()を使用します。
またSerial.println()とすると改行することができます。
スケッチ例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void setup() { Serial.begin(9600); } void loop() { Serial.print("*****"); delay(200); Serial.print("sample"); delay(500); Serial.println("*****"); delay(200); Serial.println("こんにちは"); delay(200); Serial.println('a'); delay(200); Serial.println(1); delay(200); } |
Serial.available()
シリアルポートに何バイトのデータが受信しているかを返します。
1 | Serial.available() > 0 |
のように受信したデータが存在するかどうかを調べるときによく使用されます。
Serial.read()
シリアル通信で受信したデータを読み込みます。
データが何もない場合はー1を返します。
スケッチ例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | int data = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { data = Serial.read(); switch (data) { case 'a': Serial.print("receive a"); break; case 'b': Serial.print("receive b"); break; case 'c': Serial.print("receive c"); break; } Serial.println(""); } else { } } |
Serial.serialEvent()
データが利用可能になったときに呼び出される関数です。
loop関数を抜け出してserialEvent()のループが始まります。
スケッチ例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int data = 0; void setup() { Serial.begin(9600); } void loop() { Serial.println("hello"); delay(500); } void serialEvent() { while (Serial.available()) { Serial.println("event"); delay(200); } } |
まとめ
今回はSerialオブジェクトを使用して、シリアルモニターの使い方を学びました。
今回説明したSerialオブジェクトの関数は基本的な物のみです。今回説明した以外の関数は公式リファレンスを参照して下さい。