tobetobekun’s diary

Arduino実験ノート

【Arduino入門④】押すたびにLEDがON/OFF!トグルスイッチを作ってみた

はじめに

こんにちは!今回は、押すたびにLEDの点灯・消灯を切り替える「トグルスイッチ風」のプログラムに挑戦します。前回の「押してる間だけLEDが点灯」とは違い、「押す→点灯、もう一度押す→消灯」といった動作になります。

 

使用する部品

前回と同じ構成でOKです!

部品名 数量 備考
Arduino Uno 1  
LED(赤) 1  
抵抗(330Ω) 1 LED保護用
押しボタン 1  
ブレッドボード 1  
ジャンパーワイヤー 数本  

 

接続方法(内部プルアップ)

Arduinoピン 接続先 内容
D2 LEDの+端子 出力ピン
GND LEDの−端子(→抵抗) GNDへ接続
D3 ボタンの片側 内部プルアップ付き入力ピン
GND ボタンのもう片側 押すとGNDに落ちる構成

 

 

プログラム(トグルスイッチ)

const int ledPin = 2;        // LEDのピン
const int buttonPin = 3;     // ボタンのピン

bool ledState = false;       // LEDの状態(ON/OFF)
bool lastButtonState = HIGH; // 前回のボタン状態

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);  // 内部プルアップ
}

void loop() {
  bool currentButtonState = digitalRead(buttonPin);

  // ボタンが押された瞬間(HIGH → LOW)だけ検出
  if (lastButtonState == HIGH && currentButtonState == LOW) {
    ledState = !ledState; // 状態を反転
    digitalWrite(ledPin, ledState ? HIGH : LOW);
    delay(200); // チャタリング対策(200ms待機)
  }

  lastButtonState = currentButtonState;
}

 

実行結果

  • 押すたびにLEDのON/OFFが切り替わります

  • 連続押しにも対応し、チャタリング対策もOK

 

おわりに

この「トグル動作」は、スイッチで家電を操作するような仕組みにも応用できます。LEDだけでなく、ブザーやリレーなどにも使える基本パターンです。


次回予告(案)

  • LEDをゆっくり点灯/消灯する「フェード制御」

  • 複数のLEDを順番に光らせてみる

  • サウンドブザーを鳴らす