LEDs mit einem Tas­ter steuern

# include "OneButton.h"

int TASTER = 13;

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

// Name des Tasters
OneButton NameTaster(TASTER, true);

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

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

  pinMode(TASTER, INPUT_PULLUP);

  // Aktionen dem Modus des Tasters zuordnen
  NameTaster.attachClick(einKlick);
  NameTaster.attachDoubleClick(DoppelKlick);
  NameTaster.attachLongPressStop(langerDruckStopp);

  /*
    Anzahl der Millisekunden bei den jeweiligen Aktionen festlegen
    Standardwerte:
    PressTicks: 1000
    ClickTicks: 600
    DebounceTicks: 50
    wenn die Standardwerte gesetzt werden sollen
    können die nächsten Zeilen auskommentiert werden
  */
  NameTaster.setPressTicks(800);
  NameTaster.setClickTicks(400);
  NameTaster.setDebounceTicks(50);
}

void loop()
{
  // Taster alle 10 Millisekunden abfragen
  NameTaster.tick();
  delay(10);
}

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

void DoppelKlick()
{
  for (int i = 0; i <= 4; 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 = 4; i >= 0; i --)
  {
    // aktuelle LED i einschalten
    digitalWrite(LED[i], HIGH);
    delay(200);

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

void langerDruckStopp()
{
  // alle LEDs blinken 5-mal
  // d -> Anzahl der Durchläufe

  for (int d = 0; d <= 6; d++)
  {
    // einschalten
    for (int i = 0; i <= 4; i++)
    {
      digitalWrite(LED[i], HIGH);
    }
    delay(200);

    // ausschalten
    for (int i = 0; i <= 4; i++)
    {
      digitalWrite(LED[i], LOW);
    }
    delay(200);
  }
}

Letzte Aktualisierung: 24. Jul 2023 @ 11:19