5.4.4 Projekt 2.2. Tischlampe

1. Beschreibung

Bei einer einfachen Tischlampe wird durch einmaliges Drücken des Tasters die Lampe eingeschaltet; durch erneutes Drücken wird sie ausgeschaltet.

2. Testcode

Zähle die Betätigungen des Tasters und bilde den Rest bei Division durch 2; so erhältst du die zwei Zustände 0 oder 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. Testergebnis

Öffne den seriellen Monitor, der die Anzahl der Tastendrücke ausgibt. Drücke dann den Taster einmal – die LED leuchtet; drücke erneut – sie geht aus.

Bild40