プロジェクト02:ボタン入力

プロジェクト02:ボタン入力にチャレンジ

このプロジェクトで学ぶこと: 外部からの信号をArduinoで「読み取る」方法を学びます。ボタンを押したらLEDが光るという、入力と出力の組み合わせを初めて体験します。


完成イメージ

[ボタンを押したときにLEDが点灯している写真を挿入]


必要な部品

部品名 数量
Arduino Uno R3 1
タクトスイッチ(ボタン) 1
赤色LED 1
抵抗 220Ω(LED用) 1
抵抗 10kΩ(プルダウン用) 1
ブレッドボード 1
ジャンパー線 数本

回路図と配線

[回路図画像を挿入]

配線手順

  1. ボタンの一方の足をArduinoの 2番ピン10kΩ抵抗 に接続する
  2. 10kΩ抵抗のもう一方をGNDに接続する(プルダウン抵抗)
  3. ボタンのもう一方の足を 5Vピン に接続する
  4. 赤色LEDのアノード(長い足)を220Ω抵抗を通じて 13番ピン に接続する
  5. LEDのカソード(短い足)をGNDに接続する

プルダウン抵抗とは? ボタンを押していないとき、2番ピンがどの電位にもつながっていないと信号が不安定になります(フローティング状態)。10kΩ抵抗でGNDに引き下げる(プルダウン)ことで、ボタンOFFのとき確実にLOWを読み取れます。


Arduinoスケッチ(プログラム)

// ボタン入力でLED制御

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

void setup() {
  pinMode(BUTTON_PIN, INPUT);   // 2番ピンを入力モードに設定
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  int buttonState = digitalRead(BUTTON_PIN);  // ボタンの状態を読み取る

  if (buttonState == HIGH) {   // ボタンが押されていたら
    digitalWrite(LED_PIN, HIGH);  // LED点灯
  } else {
    digitalWrite(LED_PIN, LOW);   // LED消灯
  }
}

コードのポイント解説

pinMode(ピン番号, INPUT) ピンを「入力モード」に設定します。外部の信号(ボタンの押下など)を読み取るときに使います。

digitalRead(ピン番号) 指定したピンの状態を読み取り、HIGH(5V)またはLOW(0V)を返します。ボタンが押されると5Vが流れ込みHIGHになります。

if (条件) { } else { } 条件が成立するときとしないときで処理を分岐させます。プログラムに「判断」をさせる基本構文です。


動作確認

  1. スケッチをアップロードする
  2. ボタンを押すとLEDが点灯し、離すと消灯すれば成功

うまく動かない場合のチェックポイント

  • ボタンの向きを確認する(4本足の場合、内側の2本がつながっている)
  • プルダウン抵抗が正しくGNDに接続されているか確認する

このプロジェクトで学んだこと

  • デジタル入力: digitalRead()で外部信号を読み取る方法を習得しました
  • プルダウン抵抗: 入力ピンを安定させるための抵抗の役割を理解しました
  • 条件分岐: if/elseを使ってArduinoに判断させる方法を学びました

次のプロジェクト「流れるLEDライト」では、複数のLEDを配列とループで制御する方法を学びます。


深掘り:技術の背景と社会への広がり

スイッチの発明:電気を「切る」技術の歴史

スイッチは1880年代の電灯の普及とともに必要とされるようになりました。初期の電灯スイッチはナイフスイッチと呼ばれる大型のもので、家庭に設置するのは危険を伴うものでした。20世紀初頭にトグルスイッチが開発され、壁面への設置が安全になり一般家庭に電灯が広まる基盤を作りました。タクトスイッチのような小型の押しボタンスイッチが普及したのは1970年代以降、電卓や家電の小型化とともにです。

インターフェースの進化と社会課題

現代のUIは「タッチ」「音声」「ジェスチャー」と多様化していますが、その根本にあるのは「入力と出力の対応」という同じ原理です。バリアフリーの観点では、身体障害のある方向けに大型ボタン・フットスイッチ・視線入力など多様な入力手段が開発されており、デジタルデバイドの解消に貢献しています。あなたが今日配線したボタンの原理は、人命にかかわる医療機器や産業用安全装置にも生きています。


プロジェクト01:Lチカ全プロジェクト一覧 | 次のプロジェクト:流れるLEDライト →