5.4.4 プロジェクト 2.2. テーブルランプ

1. 説明

一般的なシンプルなテーブルランプでは、ボタンを押すと点灯し、もう一度押すと消灯します。

2. テストコード

ボタンが押された回数を数え、2で割った余りを取ることで、0または1の二つの状態を得られます。

#define btn1 16
#define led_y 12
int btn_count = 0; // Counter for button presses

void setup()
{
  Serial.begin(9600);
  pinMode(btn1, INPUT);
  pinMode(led_y, OUTPUT);
}

void loop()
{
  boolean btn1_val = digitalRead(btn1);
  if(btn1_val == 0) // If button is pressed
  {
    delay(10);  // 10ms delay for debouncing
    if(btn1_val == 0) // Confirm button is still pressed
    {
      boolean btn_state = 1;
      while(btn_state == 1) // Loop until button is released
      {
        boolean btn_val = digitalRead(btn1);
        if(btn_val == 1)  // If button is released
        {
          btn_count++;    // Increment press counter
          Serial.println(btn_count);
          btn_state = 0;  // Exit loop
        }
      }
    }
    boolean value = btn_count % 2; // Modulo operation (0 or 1)
    if(value == 1)
    {
      digitalWrite(led_y, HIGH); // Turn LED on
    }
    else
    {
      digitalWrite(led_y, LOW); // Turn LED off
    }
  }
}

3. テスト結果

シリアルモニタを開くとボタンが押された回数が表示されます。ボタンを一度押すとLEDが点灯し、もう一度押すと消灯します。

画像40