日誌

日々の記録

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に返してくれるんですねー。
大文字の英字を小文字の英字に変換します。

これが
f:id:drumsko-tommy:20160207155634p:plain


こんなふうに
f:id:drumsko-tommy:20160207155539p:plain

大雑把ながら、ソースコードの解説を。
小文字の英字、数字、記号は入力されても何も起こらないようにしてます。
条件文である(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が出力されるわけです。