Arduinoでシリアル通信をしてみた
今回はArduinoを使って簡単にシリアル通信をしてみました。
ソースコードはこんな感じです。
int c; void setup() { Serial.begin(9600); Serial.println("START"); } void loop() { if(Serial.available()>0){ c = Serial.read(); if((c>='A')&(c<='Z')){ c = c - 'A' + 'a'; Serial.write(c); } } }
で、これがどんなプログラムかと言うと
ArduinoIDEのシリアルモニタから入力したデータをArduinoが返信します。
PCから送ったデータをArduinoが処理して、またPCに返してくれるんですねー。
大文字の英字を小文字の英字に変換します。
これが
こんなふうに
大雑把ながら、ソースコードの解説を。
小文字の英字、数字、記号は入力されても何も起こらないようにしてます。
条件文である(c>='A')&(c<='Z')の部分は、ASCIIコードを調べると分かると思います。
A~Zが入力されたら、if文の処理に入ります。
c = c - 'A' + 'a';の部分は、入力された大文字の英字を小文字の英字に変換してる部分です。
たとえば、「Z」が入力されたとします。
ASCIIコードに従って変換すると、Zは90、Aは65、aは97なので
90-65+97=122
となりますね。122はASCIIコード上ではZを表すので、モニタにはZが出力されるわけです。