はじめに
初めてのArduino入力プロジェクトへようこそ!このチュートリアルでは、押しボタンでLEDを制御する回路を構築します。ボタンを押すとLEDが点灯し、離すと消灯します。このシンプルなプロジェクトを通じて、デジタル入力の読み取り、内蔵プルアップ抵抗の使用方法、そしてクリーンなArduinoコードの書き方を学びます。
ここでは、SPICE準拠の正確な環境を提供するVelxioブラウザ内シミュレータを使用するため、ハードウェアなしで回路をテストできます。さっそく始めましょう!
回路の解説

この回路は、次の3つの主要コンポーネントで構成されています。
- Arduino Uno – 操作の頭脳。
- 押しボタン – 押すと2つのピンを接続するモーメンタリスイッチ。
- 赤色LED – 出力デバイス。
配線の詳細
-
ボタンからArduinoへ:
- ボタンの一方の足(ピン
1.l)は、青いワイヤー(#00aaff)でArduinoのデジタルピン2に接続します。 - もう一方の足(ピン
2.l)は、黒いワイヤーでGNDに接続します。
- ボタンの一方の足(ピン
-
LEDからArduinoへ:
- アノード(長い足、ピン
A)は、赤いワイヤー(#ff0000)でArduinoのデジタルピン13に接続します。 - カソード(短い足、ピン
C)は、黒いワイヤーでGNDに接続します。
- アノード(長い足、ピン
ボタンには外部プルアップ抵抗がないことに注意してください。代わりに、コード内でArduinoの内蔵プルアップ抵抗を使用します。ボタンが押されていないときは入力ピンがHIGHにプルされ、押されたときはLOWを読み取ります。
コードの解説

以下が完全な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);
}
}
解説
- 定数:
BUTTON_PINは2、LED_PINは13に設定されています。定数を使用することで、コードの読みやすさと変更のしやすさが向上します。 setup():pinMode(BUTTON_PIN, INPUT_PULLUP)は、ピン2を内蔵プルアップ抵抗を有効にした入力として設定します。これにより、デフォルトではピンはHIGHを読み取り、ボタンが押されてGNDに接続されるとLOWを読み取ります。pinMode(LED_PIN, OUTPUT)は、ピン13をLED駆動用の出力として設定します。
loop():digitalRead(BUTTON_PIN)でボタンの状態を読み取ります。LOW(ボタン押下)の場合はdigitalWrite(LED_PIN, HIGH)でLEDを点灯し、それ以外の場合は消灯します。
重要な概念
デジタル入力とプルアップ抵抗
デジタルピンが入力として設定されると、HIGH(5V)またはLOW(0V)を読み取ります。プルアップ抵抗やプルダウン抵抗がないと、ピンは状態が不定になり、誤った読み取りを引き起こす可能性があります。内蔵プルアップ抵抗(通常20k~50kΩ)は、ボタンが開いているときに安定したHIGHを保証します。ボタンを押すとピンが直接GNDに接続され、プルアップが上書きされてLOWを読み取ります。
チャタリング除去
機械的なボタンはしばしばバウンス(チャタリング)を起こし、複数の高速な状態変化を引き起こします。このシンプルな例では、LEDが高速に応答し影響が最小限であるため、チャタリング除去は無視しています。より重要なアプリケーションでは、小さな遅延を追加するか、チャタリング除去ライブラリを使用できます。
定数の使用
ピン番号をスケッチの先頭で定数として定義することで、コード全体を探し回らずに配線を変更でき、可読性も向上します。
よくある落とし穴とデバッグのコツ
- ボタンの配線: 一方の足をArduinoピンに、もう一方をGNDに接続してください。両方の足を同じ列に接続すると、ボタンは機能しません。
- LEDの極性: アノード(長い足)をデジタルピンに、カソード(短い足)をGNDに接続する必要があります。逆にしてもLEDは損傷しませんが、点灯しません。
- プルアップの有効化忘れ:
INPUT_PULLUPを忘れて単にINPUTを使用すると、ピンが不定状態になり、LEDがランダムにちらつく可能性があります。 - ピン番号の間違い: コードが配線と一致しているか再確認してください。この例では、ボタンはピン2、LEDはピン13です。
Velxioシミュレータの使用

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

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

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

追加のライブラリ(チャタリング除去用など)が必要な場合は、ライブラリマネージャーを使用します。
推奨される拡張アイデア
基本回路が動作したら、次の拡張に挑戦してみてください。
- トグルモード: ボタンを押すたびにLEDのオン/オフを切り替えるようにコードを変更します。
- 複数LED: さらにLEDとボタンを追加して、シンプルな入力パネルを作成します。
- チャタリング除去: 50msの遅延またはタイマーを使用して、ソフトウェアによるチャタリング除去を実装します。
- シリアルモニター: ボタンの状態をシリアルモニターに出力してデバッグします。
- PWM輝度制御:
digitalWrite()の代わりにanalogWrite()を使用して、ボタン押下時間に基づいてLEDの明るさを制御します。
行動を促す
自分だけのボタン制御LEDを構築してみませんか?Velxioでライブサンプルを開いて、実験を始めましょう:ボタンLEDの例。ハードウェアは不要で、ブラウザだけでOKです。楽しい工作を!