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が出力されるわけです。