Arduinoをシリアル通信で制御してみた

スポンサーリンク

はじめに

シリアルモニタからArduinoを制御して LEDの点灯を制御してみる。

使ったもの

Arduino Uno

【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

mac mini
LED
10kΩ抵抗

ブレッドボード

数字を送ってみる

まずは仕組みを理解するために ただ単純にシリアルモニタから送った 値をシリアルモニタに返すだけの プログラムを動かしてみる

int val = 0;

void setup() {

  Serial.begin(9600);
}

void loop() {

  if(Serial.available() > 0) {
    val = Serial.read();
    Serial.print("I receved:");
    Serial.println(val);
  }
}

実行するとこんな感じ

f:id:shangtian:20181023204700p:plain

シリアルモニタには0-9の数字を入力したが
返ってきた値は48〜57

ASCIIコード表

f:id:shangtian:20181026120947p:plain

ASCII表を確認してみるとちゃんと一致してる

16進数で返してみる

さっきとの変更点は

 Serial.println(val,HEX);

オプションは以下のよう BIN(2進数), OCT(8進数), DEC(10進数), HEX(16進数)

int val = 0;

void setup() {

  Serial.begin(9600);
}

void loop() {

  if(Serial.available() > 0) {
    val = Serial.read();
    Serial.print("I receved:");
    Serial.println(val,HEX);
  }
}

また0−9まで入力して、ASCII表と見比べると
確かに0−9をちゃんと受け取っている

f:id:shangtian:20181023204719p:plain

少し進んで

次は0から1までの数字を入力して
それに対応した値を返すプログラム
を実行してみる。

コードは以下の通り

f:id:shangtian:20181023210344p:plain

LEDコントロール

最後にシリアル通信によってLEDの点灯をコントロールしてみた。

gistbfd0e841e1792ba958efb8f22ebf8f72

<参考文献>

Arduino 日本語リファレンス

ASCIIコード表

qiita.com

http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html