Bei­spiel­pro­gramm Taster

Lese­zeit: 4 Minu­ten

Das Pro­gramm demons­triert die Benut­zung eines Tas­ters.
Wird der Tas­ter gedrückt, leuch­tet die LED.

// Variablen für die LED und den Taster setzen
int LED = 7; 
int TASTER = 8; 

// speichert den mit digitalRead gelesenen Wert
int TasterLesen; 

void setup()  
{ 
  // pinMode LED setzen, Ausgabe = OUTPUT
  pinMode(LED, OUTPUT);

  /*
    pinMode des Tasters setzen 
    INPUT = Eingabe 
    INPUT_PULLUP = Eingabe und Vorwiderstand einschalten
  */
  pinMode(TASTER, INPUT_PULLUP);
} 

void loop()  
{
  // Status des Tasters lesen (HIGH/LOW) 
  TasterLesen = digitalRead(TASTER);   

  // wenn der Taster gedrückt wurde
  if (TasterLesen == LOW)
  {
    // kurze Pause
    delay(200);

    // Wert für LED schreiben
    // LOW = aus, HIGH = an
    digitalWrite(LED, HIGH); 
  }
}

Wenn der Tas­ter als Ein- und Aus­schal­ter der LED funk­tio­nie­ren soll:

Varia­ble bool

int LED = 7;
int TASTER = 8;

int TasterLesen;

/*
   setzt den Status
   Status true -> LED an
   Status false -> LED aus
   beim Start soll die LED ausgeschaltet sein
*/
bool Status = false;

void setup()
{
  pinMode(LED, OUTPUT);
  pinMode(TASTER, INPUT_PULLUP);
}

void loop()
{
  TasterLesen = digitalRead(TASTER);
  if (TasterLesen == LOW)
  { 
    delay(200);

    // LED ist aus → Status == false 
    if (Status == false)
    { 
      digitalWrite(LED, HIGH); 

      // Status auf true (an) setzen
      Status = true;
    }

    // LED ist an → Status == true 
    else if (Status == true) 
    { 
      digitalWrite(LED, LOW);

      // Status auf false (aus) setzen   
      Status = false;
    }
  } 
}

Lei­der ver­hin­dert das delay(200) nur sehr unzu­rei­chend das soge­nann­te "Prel­len" eines Tas­ters. Wird der Tas­ter über eine län­ge­re Zeit gedrückt gehal­ten, wech­selt das aus­ge­sen­de­te Signal immer wie­der zwi­schen HIGH und LOW. Das führt zu uner­wünsch­ten Effek­ten: im Bei­spiel­po­gramm blinkt die LED solan­ge der Tas­ter gedrückt wird.

Abhil­fe schafft hier die Biblio­thek Bounce2.
Bevor sie ver­wen­den kannst, musst du sie zunächst installieren:

Sketch -> Biblio­thek ein­bin­den -> Biblio­the­ken verwalten

// Bibliothek Bounce2 einbinden
# include <Bounce2.h>

// Bounce starten
// Namen des Objekts Bounce (TasterGedrueckt) festlegen
Bounce TasterGedrueckt = Bounce();

int LED = 7;
int TASTER = 8;

/*
   setzt den Status
   Status true -> LED an
   Status false ->  LED aus
   beim Start soll die LED ausgeschaltet sein
*/
bool Status = false;

void setup() 
{
  pinMode(LED, OUTPUT);

  /*
    Namen des Objekts Bounce (TasterGedrueckt) dem Taster zuordnen (attach)
    Zeitintervall einstellen
    INPUT_PULLUP -> Vorwiderstand einschalten
  */
  TasterGedrueckt.attach(TASTER, INPUT_PULLUP);
  TasterGedrueckt.interval(20);
}

void loop() 
{
  // Tasterstatus abfragen
  if (TasterGedrueckt.update()) 
  {
    // Taster wurde gedrückt, das Signal ist gefallen
    if (TasterGedrueckt.fell())
    {
      // LED ist aus → Status == false
      if (Status == false) 
      {
        digitalWrite(LED, HIGH);

        // Status auf true (an) setzen
        Status = true;
      }

      // LED ist an → Status == true
      else if (Status == true) 
      {
        digitalWrite(LED, LOW);

        // Status auf false (aus) setzen
        Status = false;
      }
    }
  }
}

pinMode() pin­Mo­de() Variable Varia­ble analogWrite() ana­log­Wri­te() Operatoren Ope­ra­to­ren LED LED

Letzte Aktualisierung: 4. Sep 2022 @ 23:24