Arduino パソコンとシリアル通信をしてみよう!

Arduino

シリアル通信を使ったLED制御とは?

Arduinoとパソコンは、シリアル通信(USB経由)を利用してデータのやり取りができます。本記事のプログラムでは、パソコンから送信した文字('a''b')に応じて、ArduinoがLEDの明るさを変更します。

準備するもの

  • PC
  • Arduino
  • ジャンパ線
  • USBケーブル
  • LED
  • 抵抗(LEDが光る抵抗値 300Ω~1kΩ で選定)
  • ブレッドボード

配線図

LEDには極性があるので、配線する向きに注意

プログラム

void setup() {
pinMode(9,OUTPUT); // 9番ピンを出力モードに設定
Serial.begin(9600); // シリアル通信を9600bpsで開始
}

void loop() {
char value; // 受信したシリアルデータを格納する変数

// シリアル通信でデータが送信されてきたら処理を行う
if(Serial.available()>0){
value = (char)Serial.read(); // 受信したデータを読み取る

// 受信データが 'a' の場合
if(value == 'a'){
  analogWrite(9, 255); // 9番ピンのPWMを最大(255)に設定
  Serial.println("入力した文字は " + String(value)); // 受信した文字を表示
  Serial.println("aは10進数と2進数で表示すると"); 
  Serial.println((int)value);  // 'a' のASCIIコード(10進数)を表示
  Serial.println(value, BIN);  // 'a' のASCIIコード(2進数)を表示
}
// 受信データが 'b' の場合
else if(value == 'b'){
  analogWrite(9, 90); // 9番ピンのPWMを90に設定
  Serial.println("入力した文字は " + String(value)); // 受信した文字を表示
  Serial.println("bは10進数と2進数で表示すると"); 
  Serial.println((int)value);  // 'b' のASCIIコード(10進数)を表示
  Serial.println(value, BIN);  // 'b' のASCIIコード(2進数)を表示
}
// それ以外の文字が入力された場合
else{
  analogWrite(9, 0); // 9番ピンのPWMを0に設定(出力を停止)
}

}
delay(1000); // 1秒待機
}

プログラムの動作概要

  1. シリアル通信で文字を受信
  2. 受信した文字が “a” の場合、LEDの明るさを最大(255)にする
  3. 受信した文字が “b” の場合、LEDの明るさを中くらいの明るさ(90)にする
  4. その他の文字を受信した場合、LEDは消灯
  5. 1秒待ってから、受信を再開する

遊び方

1.下記画像の、赤枠部分をクリック

2.下記画像、赤枠部に文字をキーボードで入力する。

入力した文字が ”a”の場合、LEDの明るさが最大で光り⭐ます。
入力した文字が “b”の場合、LEDの明るさが中くらいで光り★ます。
その他の文字を入力した場合は、LEDは消灯したままです。

まとめ

本記事では、パソコンとArduinoをシリアル通信で接続し、LEDの明るさを制御するプログラムを紹介しました。この技術を応用すれば、センサーやモーターの制御、外部デバイスとの連携など、様々な電子工作に活用できます。

シリアル通信を活用したArduinoの制御をぜひ試してみてください!

コメント

タイトルとURLをコピーしました