Eine einzige Taste ...



Folgendes Problem war zu lösen: 

Nur eine Taste soll eine LED einschalten und danach auch wieder ausschalten. Also:

  • Taste drücken: LED an

  • Taste loslassen: LED bleibt an

  • Taste drücken: LED geht aus

  • Taste loslassen: LED bleibt aus

  • ...von vorn


Schaltung:

                - Taste an Pin 3
                - LED an Pin 7 (mit Widerstand = 220 Ohm = rot rot braun)

            bredboard     schaltplan

   (anklicken zum Vergrößern)

Quelltext:

int merker = 0; // 0 meint: LED ist aus, 1 meint: LED ist an

void setup(){
  pinMode(3, INPUT); // Taste an Pin3
  digitalWrite(3, HIGH); // ein HIGH am Eingang Pin3 vorgeben
  pinMode(7, OUTPUT); // LED an Pin7
}


void loop(){

  // Taste drücken bei dunkler LED
  if ( digitalRead(3)==LOW && merker==0)
  {
    digitalWrite(7, HIGH);
    merker=1;
    while (digitalRead(3)==LOW) delay(10); //die Abarbeitung "einfangen"
  }


  // Taste drücken bei heller LED
  if ( digitalRead(3)==LOW && merker==1)
  {
    digitalWrite(7, LOW);
    merker=0;
    while (digitalRead(3)==LOW) delay(10); //die Abarbeitung "einfangen"
  }
}



Ein ähnliches Experiment -aber mit Interrupt- findest Du hier.