Lösung: Toggle-Taster

Sketch: Quelltext

/*
  Toggle-Taster

  Interne LED an Pin 13 ein- und ausschalten.
 */

// ***** SETUP *****
void setup() {
  pinMode(9, INPUT_PULLUP); // Pin 9 als Input mit Pullup
  pinMode(13, OUTPUT);      // Pin 13 als Output
  digitalWrite(13,LOW);     // LED ausschalten 
}

// ***** LOOP *****
void loop() {
  // Solange Pin 9 == HIGH ist ...
  while(digitalRead(9)==HIGH){}  // ...passiert nichts
  // Sobald Pin 9 == LOW ist wird geschaltet
  if(digitalRead(13)==LOW){
    digitalWrite(13,HIGH);
    }
  else {
    digitalWrite(13,LOW);   
  }
  delay(200);   // Taste entprellen 
}

Sketch: Erklärung

Setup

Pin 9 wird als INPUT_PULLUP definiert, Pin 13 (interne LED) als OUTPUT.

Die interne LED am Pin 13 wird zu Beginn des Sketches ausgeschaltet.

Loop

Im Loop-Teil wird der Taster an Pin 9 mit digtalRead() in einer while()-Schleife abgefragt.
Sobald am Pin 9 ein logisches LOW anliegt wird in einer if() Verzweigung die interne LED abgefragt. Leuchtet sie nicht, wird sie eingeschaltet. Andernfalls wird sie ausgeschaltet.

Der Taster wird mit einem delay() Befehl entprellt.

Schaltplan / Layout

Schaltplan

Elektronik / Hardware

Man muss darauf achten, den Taster richtig anzuschließen, ggf. muss man vorher mit einem Durchgangsprüfer die Pinbelegung des Tasters prüfen.

Da der Pin 9 low-active ist, muss der Taster mit GND (und natürlich mit dem Pin 9) verbunden werden.