戻る

ボタンで制御するLED:初めてのArduino入力プロジェクト

はじめに

初めてのArduino入力プロジェクトへようこそ!このチュートリアルでは、押しボタンでLEDを制御する回路を構築します。ボタンを押すとLEDが点灯し、離すと消灯します。このシンプルなプロジェクトを通じて、デジタル入力の読み取り、内蔵プルアップ抵抗の使用方法、そしてクリーンなArduinoコードの書き方を学びます。

ここでは、SPICE準拠の正確な環境を提供するVelxioブラウザ内シミュレータを使用するため、ハードウェアなしで回路をテストできます。さっそく始めましょう!

回路の解説

Velxioシミュレータキャンバス上のボタンLED回路図

この回路は、次の3つの主要コンポーネントで構成されています。

配線の詳細

  1. ボタンからArduinoへ:

    • ボタンの一方の足(ピン1.l)は、青いワイヤー(#00aaff)でArduinoのデジタルピン2に接続します。
    • もう一方の足(ピン2.l)は、黒いワイヤーでGNDに接続します。
  2. LEDからArduinoへ:

    • アノード(長い足、ピンA)は、赤いワイヤー(#ff0000)でArduinoのデジタルピン13に接続します。
    • カソード(短い足、ピンC)は、黒いワイヤーでGNDに接続します。

ボタンには外部プルアップ抵抗がないことに注意してください。代わりに、コード内でArduinoの内蔵プルアップ抵抗を使用します。ボタンが押されていないときは入力ピンがHIGHにプルされ、押されたときはLOWを読み取ります。

コードの解説

Velxio MonacoエディタのボタンLED用ソースコード

以下が完全なArduinoスケッチです。

// ボタンLED制御
// ボタンを押すとLEDが点灯

const int BUTTON_PIN = 2;
const int LED_PIN = 13;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  int buttonState = digitalRead(BUTTON_PIN);

  if (buttonState == LOW) {
    digitalWrite(LED_PIN, HIGH);
  } else {
    digitalWrite(LED_PIN, LOW);
  }
}

解説

重要な概念

デジタル入力とプルアップ抵抗

デジタルピンが入力として設定されると、HIGH(5V)またはLOW(0V)を読み取ります。プルアップ抵抗やプルダウン抵抗がないと、ピンは状態が不定になり、誤った読み取りを引き起こす可能性があります。内蔵プルアップ抵抗(通常20k~50kΩ)は、ボタンが開いているときに安定したHIGHを保証します。ボタンを押すとピンが直接GNDに接続され、プルアップが上書きされてLOWを読み取ります。

チャタリング除去

機械的なボタンはしばしばバウンス(チャタリング)を起こし、複数の高速な状態変化を引き起こします。このシンプルな例では、LEDが高速に応答し影響が最小限であるため、チャタリング除去は無視しています。より重要なアプリケーションでは、小さな遅延を追加するか、チャタリング除去ライブラリを使用できます。

定数の使用

ピン番号をスケッチの先頭で定数として定義することで、コード全体を探し回らずに配線を変更でき、可読性も向上します。

よくある落とし穴とデバッグのコツ

Velxioシミュレータの使用

コンパイルと実行のコントロールがあるVelxioエディタツールバー

ツールバーのRunボタンをクリックして、コンパイルとシミュレーションを開始します。その後、キャンバス上の押しボタンをクリックしてLEDの応答を確認できます。

シミュレーションビューポート上のVelxioキャンバスツールバー

キャンバスツールバーを使用して、シミュレーションの一時停止、リセット、速度調整ができます。

カテゴリ別に部品をブラウズするVelxioコンポーネントピッカーモーダル

さらにコンポーネントを追加するには、コンポーネントピッカーを開き、「Input」や「Output」などのカテゴリを参照します。

インストール済みのArduinoライブラリを一覧表示するVelxioライブラリマネージャーモーダル

追加のライブラリ(チャタリング除去用など)が必要な場合は、ライブラリマネージャーを使用します。

推奨される拡張アイデア

基本回路が動作したら、次の拡張に挑戦してみてください。

  1. トグルモード: ボタンを押すたびにLEDのオン/オフを切り替えるようにコードを変更します。
  2. 複数LED: さらにLEDとボタンを追加して、シンプルな入力パネルを作成します。
  3. チャタリング除去: 50msの遅延またはタイマーを使用して、ソフトウェアによるチャタリング除去を実装します。
  4. シリアルモニター: ボタンの状態をシリアルモニターに出力してデバッグします。
  5. PWM輝度制御: digitalWrite()の代わりにanalogWrite()を使用して、ボタン押下時間に基づいてLEDの明るさを制御します。

行動を促す

自分だけのボタン制御LEDを構築してみませんか?Velxioでライブサンプルを開いて、実験を始めましょう:ボタンLEDの例。ハードウェアは不要で、ブラウザだけでOKです。楽しい工作を!


共有:
David Montero

執筆者

David Montero

Creator of Velxio, the open-source circuit and Arduino simulator.

GitHub velxio.dev

関連記事


前の記事
ArduinoでPWMを使ってLEDをフェードさせる – 初心者向けチュートリアル
次の記事
VelxioでArduinoを使った信号機シミュレーターを構築する