Arduinoで入力された数値に応じたLED制御とシリアルモニタ表示の実装方法

C言語関連

Arduinoを使用して、キーボードから入力された数字に応じてLEDを点滅させ、シリアルモニタに結果を表示させるプログラムを作成する方法を解説します。この記事では、「1」〜「9」の数字に対して異なる動作を実行するスケッチを紹介し、奇数と偶数に基づいた処理を実現する方法を説明します。

問題の概要と目的

このプロジェクトの目的は、キーボードから入力された「1」〜「9」の数字に基づいて、シリアルモニタに特定のテキストを表示し、LEDを対応する回数だけ点滅させることです。奇数の場合は0.5秒間隔で、偶数の場合は1.5秒間隔でLEDを点滅させます。

必要なハードウェアとセットアップ

このプロジェクトには、次のハードウェアが必要です。

  • Arduinoボード(例えば、Arduino Uno)
  • LED
  • 抵抗(220Ω程度)
  • キーボード入力用(PCまたはシリアルモニタ)

LEDをArduinoに接続するため、次のように配線します。

  • LEDの長い脚(アノード)をArduinoのデジタルピンに接続
  • LEDの短い脚(カソード)を220Ωの抵抗を介してGNDに接続

プログラムの基本構成

このプログラムでは、キーボードからの入力を受け取り、それに基づいてLEDの点滅とシリアルモニタへの表示を行います。具体的には、次の条件を設定します。

  • 奇数の場合:「red」と表示し、0.5秒間隔でLEDを点滅させる
  • 偶数の場合:「RED」と表示し、1.5秒間隔でLEDを点滅させる
  • 1〜9以外の入力には何も処理を行わない

Arduinoスケッチの実装例

以下に、実際に動作するArduinoスケッチのコードを示します。このコードは、キーボードからの入力を処理し、条件に応じてLEDを点滅させるものです。

int ledPin = 13; // LEDのピン番号
char inputChar;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
    inputChar = Serial.read();
    int inputNumber = inputChar - '0'; // 入力された文字を数字に変換

    if (inputNumber >= 1 && inputNumber <= 9) {
      String color = (inputNumber % 2 == 0) ? "RED" : "red";
      Serial.print(inputNumber);
      Serial.print(" ");
      Serial.println(color);

      int delayTime = (inputNumber % 2 == 0) ? 1500 : 500;
      for (int i = 0; i < inputNumber; i++) {
        digitalWrite(ledPin, HIGH);
        delay(delayTime);
        digitalWrite(ledPin, LOW);
        delay(delayTime);
      }
    }
  }
}

動作の確認とテスト

上記のコードをArduinoにアップロードし、シリアルモニタを開いて、数字「1」〜「9」を入力することで、以下の動作を確認できます。

  • 「1」を入力すると、「1 red」と表示され、LEDが0.5秒間隔で1回点滅します。
  • 「2」を入力すると、「2 RED」と表示され、LEDが1.5秒間隔で2回点滅します。
  • 「3」を入力すると、「3 red」と表示され、LEDが0.5秒間隔で3回点滅します。

まとめ

このArduinoのプログラムを使えば、キーボードからの入力に応じてLEDを点滅させることができます。奇数と偶数に基づいた異なる動作を実現し、シリアルモニタに必要な情報を表示することもできます。これにより、Arduinoの基礎的なプログラムの理解を深めることができ、さらに複雑なプロジェクトにも応用できます。

コメント

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