#9初級

ボタンでLEDを点灯(押している間のみ)

4.9(112)
219 完了
ボタンでLEDを点灯(押している間のみ)
呼び鈴のように、押している間は点灯し、離すと消灯します。Arduinoはボタンの状態を常に読み取り、押されている間はLEDを点灯させ、指を離した瞬間に消灯させます。このシンプルな回路で、ボードが外部からの操作を検知する仕組みを学べます。

動画

回路図

ボタンでLEDを点灯(押している間のみ) - Circuit

ソースコード

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   LED Control with a Push Button (Push)
4// ─────────────────────────────────────────
5// The LED stays on while the button is held and turns off when it is
6// released (push). Shows reading a button with digitalRead and if-else.
7//
8// Pins:
9//   D13 -> Button, other leg to 5V
10//   D13 -> 10k resistor to GND (pull-down)
11//   D7  -> LED (with a 330 ohm resistor)
12
13void setup() {
14  pinMode(13, INPUT);    // Button input (external pull-down)
15  pinMode(7, OUTPUT);    // LED output
16}
17
18void loop() {
19  if (digitalRead(13) == HIGH) {   // Is the button pressed?
20    digitalWrite(7, HIGH);         // Pressed: LED on
21  } else {
22    digitalWrite(7, LOW);          // Released: LED off
23  }
24}
25

よくある質問

10 kΩの抵抗は何のために使いますか?▾

プルダウン抵抗として使います。ボタンを押していないときにピンをGNDに接続し、安定してLOWを読み取れるようにします。この抵抗がないとピンの電位が不定になり、HIGHやLOWがランダムに読み取られて、LEDが勝手に点滅します。

抵抗を使わずにボタンを接続できますか?▾

はい、`pinMode(pin, INPUT_PULLUP)`でArduinoの内蔵プルアップ抵抗を有効にできます。この場合はボタンをピンとGNDの間に接続します。論理が逆になり、押すとLOW、離すとHIGHが読み取られます。

ボタンのどのピンを使えばよいですか?▾

4本のピンがあるボタンでは、向かい合う2本のピンが内部ですでにつながっています。ボタンをブレッドボード中央の溝をまたぐように配置し、対角線上のピンを使うと、正しいピンを選べます。

押している間だけ点灯する方式と、オン・オフを切り替える方式は何が違いますか?▾

押している間だけ点灯する方式では、ボタンを押し続けている間だけLEDが点灯します。オン・オフを切り替えるトグル方式では、押すたびにLEDの状態が変わり、ボタンを離しても点灯状態が続きます。このため、状態を保持する変数が必要です。