LEDs mit einem Tas­ter und Biblio­thek Button2.h steuern

# include "Button2.h"

int TASTER_PIN = 13;

# define LEDMax 5

// Array für die LEDs
int LED[LEDMax] = { 3, 4, 5, 6, 7 };

// Name des Tasters
Button2 Taster;

// LEDs sind beim Start ausgeschaltet
bool Status = LOW;

void setup() 
{
  // LEDs als OUTPUT setzen
  for (int i = 0; i < LEDMax; i++) 
  {
    pinMode(LED[i], OUTPUT);
  }

  Taster.begin(TASTER_PIN);
  Taster.setLongClickTime(1000);
  Taster.setDoubleClickTime(400);

  Taster.setClickHandler(click);
  Taster.setLongClickDetectedHandler(longClickDetected);
  Taster.setLongClickHandler(longClickDetected);
  Taster.setDoubleClickHandler(doubleClick);
}

void loop() 
{
  Taster.loop();
}

void click(Button2& btn) {
  /*
    Status == true (1) -> einschalten
    Status == false (0) -> ausschalten
    Status umkehren
  */
  Status = !Status;
  for (int i = 0; i <= LEDMax; i++) {
    // aktuelle LED i ein- oder ausschalten
    digitalWrite(LED[i], Status);
  }
}

void doubleClick(Button2& btn) 
{
  for (int i = 0; i <= LEDMax; i++) 
  {
    // aktuelle LED i einschalten
    digitalWrite(LED[i], HIGH);
    delay(200);

    // aktuelle LED i ausschalten
    digitalWrite(LED[i], LOW);
  }

  // ...und zurück
  for (int i = LEDMax; i >= 0; i--) 
  {
    // aktuelle LED i einschalten
    digitalWrite(LED[i], HIGH);
    delay(200);

    // aktuelle LED i ausschalten
    digitalWrite(LED[i], LOW);
  }
}

void longClickDetected(Button2& btn) 
{
  // alle LEDs blinken 5-mal
  // d -> Anzahl der Durchläufe
  for (int d = 0; d <= 5; d++) 
  {
    // einschalten
    for (int i = 0; i <= LEDMax; i++) 
    {
      digitalWrite(LED[i], HIGH);
    }
    delay(200);
    
    // ausschalten
    for (int i = 0; i < 5; i++) 
    {
      digitalWrite(LED[i], LOW);
    }
    
    delay(200);
  }
}

Letzte Aktualisierung: 21. Mrz 2024 @ 19:32