Zum Inhalt springen
Arduino if Abfrage

Lektion 12 – Der Taster und if-Abfrage

    Das Programm soll die LED einschalten, wenn der Taster gedrückt wird und abschalten, wenn der Taster nicht mehr gedrückt wird. Ich schlage vor, wir starten mit unserem Blink-Beispiel.

    int ledPin = 9;
    
    void setup(){
      pinMode(ledPin, OUTPUT);
    }
    
    void loop(){
      digitalWrite(ledPin, HIGH);
      delay(200);
      digitalWrite(ledPin, LOW);
      delay(200);
    }

    Das Programm kennst du ja bereits (siehe Lektion 7). Wir werden es jetzt einfach umbauen.

    Ich schlage vor, dass wir die Pin-Nummer, an welche der Taster angeschlossen ist, wieder in einer Variable speichern.

    int tasterPin = 11;

    Dann müssen wir dem Arduino-Board sagen, dass wir den Pin als Eingabe verwenden wollen. Der Befehl dafür lautet:


    Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


    pinMode(tasterPin, INPUT);

    Du hast es schon gemerkt, oder? Der Befehl ist der gleiche wie der für die LED. Wir sagen einfach nur, dass wir jetzt keinen OUTPUT, sondern einen INPUT verwenden wollen.

    Um herauszufinden, ob der Taster gedrückt (HIGH) oder nicht gedrückt (LOW) ist, können wir den folgenden Befehl verwenden:

    digitalRead(tasterPin);

    Bisher haben wir nur Befehle verwendet, die keine Ergebnisse liefern. Dieser hier sagt aber HIGH oder LOW, wenn wir ihn verwenden. Das nennt man den Rückgabewert.

    Schwer? Na gut. Stell dir vor, es würde eine Methode geben, die summe (a, b) heißt. Die Parameter a und b wären zwei Zahlen, die wir zusammen rechnen wollen. Das Ergebnis wird von der Methode als Rückgabewert übertragen. Um nun herauszufinden, wie das Ergebnis ist, müssen wir das Ergebnis auslesen. Das geht so: c = summe (a, b);. Jetzt ist das Ergebnis in der Variable c gespeichert.

    Der Befehl digitalRead(tasterPin); liefert entweder HIGH oder LOW zurück. Aber wie finden wir denn nun heraus, ob das Ergebnis HIGH oder LOW ist? Dafür gibt es eine der wichtigsten Konstruktionen in der Programmierung: die if-Abfrage.

    Die if-Abfrage

    Mit dieser Abfrage können wir testen, ob eine Aussage wahr oder falsch ist. Nehmen wir an, du hast rote und blaue Bausteine vermischt und du willst sie in zwei Boxen sortieren. Wie würdest du das machen?

    Unsortierte Bausteine

    Vielleicht so:

    1. nimm einen Baustein
    2. prüfe, ob der Baustein rot ist
    3. wenn er rot ist, packe den Stein in Box A

    Genau so benutzt man die if-Abfrage. Es ist also eigentlich ganz einfach. So wird sie geschrieben. Achte auf die zwei Gleichheitszeichen hintereinander. Das ist bei einer if-Abfrage sehr wichtig.

    if (Baustein==rot) {
      packe Stein in Box A
    }

    So, jetzt könnten wir alle roten Bausteine in Box A packen, würden aber alle blauen Steine nach der Überprüfung einfach liegen lassen. Wie kommen die jetzt in Box B? Ein Vorschlag:

    1. nimm einen Baustein
    2. prüfe, ob der Baustein rot ist
    3. wenn er rot ist, packe den Stein in Box A
    4. sonst packe ihn in Box B

    Gut, oder? Und so könnten wir das programmieren:

    if (Baustein==rot) {
      packe den Stein in Box A
    } else {
      packe den Stein in Box B
    }

    Wir benutzen also das Wort else. Das trifft sich gut, denn else heißt auf Deutsch sonst.

    Funktionsweise if-Abfrage

    Hast du den grünen Stein gesehen? Der wandert auch in Box B, denn wir fragen ja nicht, ob der Baustein blau ist, sondern nur: Ist er rot oder ist er nicht-rot? ;-)

    Nun aber zurück zu unserem Programm. Das sieht bisher so aus und muss verändert werden:

    int ledPin = 9;
    int tasterPin = 11;
    
    void setup(){
      pinMode(ledPin,OUTPUT);
      pinMode(tasterPin,INPUT);
    }
    
    void loop(){
      digitalWrite(ledPin, HIGH);
      delay(200);
      digitalWrite(ledPin, LOW);
      delay(200);
    }

    Die if-Abfrage für den Button fragt, ob der Button HIGH ist:

    if (digitalRead(tasterPin)==HIGH){
    
    }

    Wenn der Button HIGH ist, soll die LED eingeschalten werden:

    if (digitalRead(tasterPin)==HIGH){
      digitalWrite(ledPin, HIGH);
    }

    Ansonsten (else) soll sie ausgeschaltet werden:

    if (digitalRead(tasterPin)==HIGH){
      digitalWrite(ledPin, HIGH);
    } else {
      digitalWrite(ledPin, LOW);
    }

    Hier noch mal das ganze Programm:

    int ledPin = 9;
    int tasterPin = 11;
    
    void setup(){
      pinMode(ledPin,OUTPUT);
      pinMode(tasterPin,INPUT);
    }
    
    void loop(){
      if (digitalRead(tasterPin)==HIGH){
        digitalWrite(ledPin, HIGH);
      } else {
        digitalWrite(ledPin, LOW);
      }
    }

    Funktioniert es? Super. Jetzt versuche das Programm so umzuschreiben, dass die LED aus geht, wenn der Taster gedrückt ist. Die Lösung findest du hier unten:

    Hier zwei von vielen Vorschlägen:

    int ledPin = 9;
    int tasterPin = 11;
    
    void setup(){
      pinMode(ledPin, OUTPUT);
      pinMode(tasterPin, INPUT);
    }
    
    void loop(){
      if (digitalRead(tasterPin)==LOW){
        digitalWrite(ledPin, HIGH);
      } else {
        digitalWrite(ledPin, LOW);
      }
    }
    

    Oder:

    int ledPin = 9;
    int tasterPin = 11;
    
    void setup(){
      pinMode(ledPin, OUTPUT);
      pinMode(tasterPin, INPUT);
    }
    
    void loop(){
      if (digitalRead(tasterPin)==HIGH){
        digitalWrite(ledPin, LOW);
      } else {
        digitalWrite(ledPin, HIGH);
      }
    }

    Das war jetzt aber gar nicht so einfach. Schön, dass du es trotzdem geschafft hast. Jetzt kennst du schon die wichtigsten Dinge beim Programmieren: Variablen, Schleifen und if-Abfragen. Weiter so! Von jetzt an wird alles viel einfacher. Versprochen.

    42 Gedanken zu „Lektion 12 – Der Taster und if-Abfrage“

    1. Pingback: Arduino programmieren – So einfach geht das!

    2. Hallo nochmal, ich hatte vor einigen Tagen schon mal geschrieben, aber keine Antwort erhalten und mein Kommentar ist auch weg. Daher nochmal:
      Ich habe die Schaltung 12 wie dargestellt aufgebaut und den Sketch so geschrieben, wie abgebildet. Aber meine Schaltung funktioniert sehr instabil und unzuverlässig. Die LED leuchtet, aber wenn ich den Taster drücke, passiert meist gar nichts, dafür geht die LED aus, wenn ich gar nicht drücke.
      Dann habe ich nach vielerlei Recherche den Programmsatz: pinMode(tasterPin, INPUT); geändert in: pinMode(tasterPin, INPUT_PULLUP);
      Und alles funktioniert wunderbar stabil und zuverlässig. Nur, ich verstehe nicht warum? Was macht denn der Zusatz “PULLUP” aus? Und warum brauche ich den und andere nicht?
      Für eine erklärende und verständliche Antworet wäre ich sehr dankbar.

    3. Der Sketch funktioniert bei mir sehr unzuverlassig. Wenn ich aber üinMode(tasterPin, INPUT_PULLUP ändere funktioniert alles sabil und einwandfrei. Kann mir bitte jemand erklären, woher das kommt?

      1. Hallo Günter,
        Damit ein uC Aus-oder Eingang besser detektieren kann müssen PullUp oder PullDown Widerstände aktiviert werden, dabei werden interne Widerstände so geschalten, dass sie eine Vergleichsspannung (Uref meist Vcc) haben, dadurch werden Störungen die den Zustand beeinflussen können abgefangen. Wenn Taster dann gedrückt ist Pin liest high und wenn Taster gedrückt Pin geht aus LOW.

    4. Hallo,
      Ich bin gerade am verzweifeln…
      Ich lass mein Programmiercode von der Arduino IDE überprüfen, alles gut.
      Allerdings ist die Funktion nicht gegeben.
      Ich möchte die Schrift auf einem Display ändern durch Tastendruck (1x Hallo, 2. Bitte beachten Sie…)
      Also soll nachher pro Tastendruck eine neue Schrift auf dem Display erscheinen. Allerdings funktioniert das bei mir nicht so wie im Programm, sondern nach Ablauf der Zeit.

    5. Hallo,
      zunächst erstmal vielen Dank für die vielen hilfreichen Anleitungen. Ich nutze Arduino jetzt seit ca. 4 Jahren für unsere Modellbahn. Nun bin ich auf ein Problem gestoßen das ich nicht hinbekomme.
      Ich habe eine Seilschwebebahn mit 2 Gondeln auf der Anlage, die soll hoch und runter fahren – ist ja klar. Antrieb ist ein 12v DC Getriebemotor mit Richtungswechsel via Doppelrelaismodul, soweit so gut… bei meiner Standseilbahn habe ich die Umschaltung mit 3poligen Rollenendschaltern realisiert – die läuft jetzt 3 Jahre.
      Da aber die Gondeln für die Endschalter zu leicht sind und nicht auslösen hab ich das mit Reed Kontakten gebaut. Das Problem dabei ist das sofort die Drehrichtung wieder gewechselt wird, sobald der Schalter unterbricht nach der Ausfahrt. Eine Timerschaltung will ich nicht machen. Es muss doch irgendwie gehen das die Drehrichtung vom Wechsel unten bis zum Auslösen des anderen Schalters oben beibehalten wird und umgekehrt auch. Ich zweifle schon an mir selbst, vielleicht sitze ich nur einfach auf der Leitung… keine Ahnung…
      Ich wäre für Hilfe sehr dankbar.
      Liebe Grüße aus Radeberg

    6. Ich möchte hier auch definitiv ein fettes “Danke” hinterlassen!

      Ich programmiere seit vielen Jahren meine selbst gebauten Schaltungen usw.
      Bisher alles in Basic per “Bascom” und bisher hat alles immer gut geklappt usw….

      Ich möchte mich aktuell mit Arduino auseinander setzen um weitere Möglichkeiten zu eröffnen.

      Nach kurzer Suche hab ich dieses Tutorial gefunden und interessiert gelesen,
      stoppe jetzt erstmal mit dem lesen da ich aktuell noch keine Hardware zum testen vor Ort habe.

      Ich finde es ausgesprochen lobenswert, dass es Menschem gibt, die so fabelhafte Websites erstellen um anderen gratis das programmieren in einer Sprache bei zu bringen, mit der sie noch nie etwas zu tun hatten.
      Ich als halbwegs erfahrener Hobbyprorammierer habe zwar schnell festgestellt dass die Grundstruktur bei Arduino nicht viel anders ist als in Basic, nur die Befehle sind halt etwas anders formuliert.

      Die Einführung in Arduino ist hier aus meiner Sicht vollkommen verständlich erklärt, ich wüsste nicht wie man es besser machen könnte……Fetter Daumen hoch!!!!!!!!!!
      Solch konstruktive Websites unterstütze ich gern, hab daher auch direkt das empfohlene Starterpack bei Amazon für etwas über 50€ bestellt, was ich durchaus fair finde.

      Bitte macht weiter so, ich freue mich darauf dieses HowTo weiter zu erkunden
      und weitere Funktionen kennen zu lernen :-)

      1. Hallo Andreas,

        vielen lieben Dank für diesen freundlichen Kommentar! Das freut mich wirklich riesig und ich hoffe, dass du mit Arduino genau so viel Spaß haben wirst, wie ich :-)
        Hab einen schönen Tag und liebe Grüße Stefan

    7. Hallo.
      Bin neu und Anfänger.
      Problem : Sketch mit IF abfrage und Taster
      Taster auf + oder auf GND
      LED immer auf HIGH
      Habe verschiedene Varianten ausprobiert…

    8. ich habe 7 leds und darunter eine grüne mit dem taster will ich abfragen ob die Grüne led leuchtet wenn sie leuchtet soll eine andere auf der rechten seite angehen bitte um hilfe

    9. Das einzige Problem ist, einen Taster anzuschliessen.
      Das ist nicht so trivial wie der Rest deines Beitrags, finde ich.

      pinMode(tasterPin, INPUT); // erfordert einen Pulldown-Widerstand.

      Was hältst du übrigens von
      void loop() {
      digitalWrite(ledPin, digitalRead(tasterPin)); // led zeigt taster Zustand an.
      }

    10. Sehr gute und witzige Anleitung. Schade, dass hier keine weiteren Kommentare stehen. Gerade die Eingabe und Ausgabebefehle sind Dinge, die man, wenn man lange nicht programmiert hat, hier gut erklärt wiederfindet. Danke für diese Seite und die Mühe zum Erstellen.

    11. Hi,
      habe beide Programme ausprobiert.
      Beim 1. Programm ist der Ablauf wie von Ihnen angegeben.
      Beim 2. Programm ist der Ablauf wie beim 1.Programm. Kein Unterschied. Wo könnte der Fehler sein.
      Habe das 2. Programm kopiert und in meiner Arduinodsoftware 1.6.12 eingefügt. Trotzdem keine Änderung. 2. Programm reagiert weiter wie 1. Programm.

    12. Hallo ich würde gerne eine ampel mit grün gelb rot und fußgänger ampel machen mit rot und grün.
      mir ist aber nicht eingefallen wie ich den schalter einbinde und den code möglichst einfach halten kann.
      lg Timo

    13. Hallo @Neuling

      Ich habe es mit verzögerungen versucht aber funktioniert auch nicht. Bei mir ist das gleiche ergebnis nur halt mit LED.

      Hallo@Kim

      Lass die LEDs nach rechts laufen, bei der letzten angekommen kein Befehl.
      Es sei denn die letzte Led is an un der Taster ist gedrück, dann erst Linkslauf und da wieder bei der letzten die Abfrage UND Taster.

      LG Nathalie

    14. Hallo bin neu hier. Mache zur Zeit Schülerpraktikum und habe vom Betrieb einen Arduino bekommen. Bisher habe ich alle Aufgabenstellungen geschafft nur jetzt bin ich am verzweifel. Ich soll 4 Leds rechtsrum laufen lassen und sowie ich den Taster drücke soll es ander herum laufen. Seit gestern sitze ich dran, aber ich bekomme es einfach nicht hin.Kann mir jemand einen Tipp geben.

    15. Hallo,
      ich habe versucht das Programm nachzustellen aber habe anstatt einer LED ein Relais genommen welches einen Motor steuert.
      Ich möchte den Motor starten sobald der Taster gedrückt wird. Sollte ja genau so funktionieren wie mit der LED. Nehme ich nur das if ohne else passiert nichts beim Tastendruck. Nehme ich das else mit rein schaltet das Relais an und aus. Immer wieder sehr schnell.

      Habe es schon ein paar mal hin und her geschrieben aber irgendwie klappt es garnicht. Momentan sieht es so aus:
      int taster1=2;
      int taster2=3;
      int motor1=12;
      int motor2=13;
      int tasterstatus1=0;
      int tasterstatus2=0;

      void setup() {
      // put your setup code here, to run once:
      pinMode(taster1, INPUT);
      pinMode(taster2, INPUT);
      pinMode(motor1, OUTPUT);
      pinMode(motor2, OUTPUT);

      }

      void loop() {
      // put your main code here, to run repeatedly:

      tasterstatus1=digitalRead(taster1);
      tasterstatus2=digitalRead(taster2);

      if(tasterstatus1 == HIGH)
      {
      digitalWrite(motor1, HIGH);
      }
      else
      {
      digitalWrite(motor1, LOW);
      }
      if(tasterstatus2 == HIGH)
      {
      digitalWrite(motor2,HIGH);
      }
      else
      {
      digitalWrite(motor2, LOW);
      }
      }

      was ist hier falsch?

      1. Hi der Code sieht erstmal ganz gut aus. Meine Fehler finde ich aber auch meist nur mit dem Compiler und Testausgaben mittels Serial.println(“text”).

        Ich würde mal ein paar Testausgaben einbauen und dann in der Console schauen was passiert.
        Meine Vermutung ist, das irgendetwas zu viel Strom zieht oder die Verdrahtung evtl. noch lücken enthält. (Vergiss das Serial.begin(9600); in der setup Funktion nicht.)

        Du kannst auch die Relais erstmal durch LEDs ersetzen die Ziehen nicht so viel Strom.

        LG Stef

    16. Hallo,

      bei mir will es nicht klappen, da es irgendein problem mit meinem “else” gibt. dieses wird, obwohl ich nach langem rätseln sogar den code kopiert habe nicht rot.

      [code]
      int ledPin = 9;
      int tasterPin = 11;

      void setup(){
      pinMode(ledPin,OUTPUT);
      pinMode(tasterPin,INPUT);
      }

      void loop(){
      if (digitalRead(tasterPin)==HIGH){
      digitalWrite(ledPin, HIGH);
      } else {
      digitalWrite(ledPin, LOW);
      }
      }
      [/code]

        1. Ja es hat dann schon geklappt.. Es hat am Anfang nicht funktioniert und deswegen dachte ich das mit dem Code irgendwas nicht stimmt, aber es hatt sich dann herausgestellt das die ganzen taster aus dem Starterkit defekt sind…. Ich hatte noch einen anderen rumliegen mit welchem das dann geklappt hat ;) *yay
          Vielen Dank für für die Hilfe

          Lg
          Pius

    17. Hallo Christian,

      super! Ich glaube, wir kommen dem Problem näher.
      Du hast einfach zweimal eine Klammer zuviel:

      digitalWrite(ledPin), HIGH);

      und

      digitalWrite(ledPin), LOW);

      Der Befehl digitalWrite(Pin, Zustand); bekommt die zwei Parameter. Da kommen die Klammern außen rum.
      Bei digitalRead(pin) gibt es nur ein Parameter, vielleicht hat Dich das abgelenkt.

      Liebe Grüße

      Stefan

    18. Ich komme nicht weiter an diesem Punkt. Ich habe jetzt mehrmals das Breadboard und meinen Code kontrolliert, kann aber einfach keinen Fehler entdecken. Trotzdem wird beim Versuch zu verifizieren eine lange Reihe an Fehlermeldungen angezeigt:

      Arduino: 1.6.3 (Mac OS X), Platine: “Arduino Uno”

      sketch_may04a.ino: In function ‘void loop()’:
      sketch_may04a.ino:11:25: error: too few arguments to function ‘void digitalWrite(uint8_t, uint8_t)’
      In file included from sketch_may04a.ino:1:0:
      /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:126:6: note: declared here
      void digitalWrite(uint8_t, uint8_t);
      ^
      sketch_may04a.ino:11:32: error: expected ‘;’ before ‘)’ token
      sketch_may04a.ino:13:25: error: too few arguments to function ‘void digitalWrite(uint8_t, uint8_t)’
      In file included from sketch_may04a.ino:1:0:
      /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:126:6: note: declared here
      void digitalWrite(uint8_t, uint8_t);
      ^
      sketch_may04a.ino:13:31: error: expected ‘;’ before ‘)’ token
      Fehler beim Kompilieren.

      Ich bin heiß darauf, weiterzumachen und würde mich sehr über Hilfe freuen :)

      1. Hallo Christian,

        klar, da helfe ich gerne. Es sieht so aus, als ob Du ein Semikolon vergessen hast. Wenn Du es nicht findest, poste doch mal den Code hier, dann gucke ich mal drüber.

        Liebe Grüße

        Stefan

        1. Ja das hatte ich aus dem Zusammenhang geschlossen. ;) Aber bisher konnte ich kein fehlendes Semikolon finden. Hier der Code:

          int ledPin = 9;
          int tasterPin = 11;

          void setup() {
          pinMode(ledPin,OUTPUT);
          pinMode(tasterPin,INPUT);
          }

          void loop() {
          if (digitalRead(tasterPin)==HIGH){
          digitalWrite(ledPin), HIGH);
          } else {
          digitalWrite(ledPin), LOW);
          }
          }

    19. Zur weiteren Erhöhung der präzisen Darlegungen schlage ich vor:
      Den Absatz über den grünen Baustein (Lektion 12) abändern zu:
      “Hast du den grünen Stein gesehen? Der wandert auch in Box B, denn wir fragen ja nicht, ob der Baustein blau ist, sondern nur:
      Ist er rot oder nicht-rot?”
      Als Anlehnung an “wahr oder nicht-wahr”.
      FG an Alle

    20. Hallo,
      ich bin etwas verwirrt über die Aufgabenstellung für die Übung in Lektion 12:

      “Jetzt versuche das Programm so umzuschreiben, dass die LED an geht, wenn der Taster gedrückt ist. Die Lösung findest du hier”

      Das macht aber das vorhandene Programm doch schon, oder? Sollte es nicht heißen: Schreibe das Programm so um, dass die LED aus geht, wenn der Taster gedrückt wird? Zumindest wird nach meinem Verständnis genau das erreicht, indem man das Programm wie in der Lösung ändert.

    21. Hallo,

      in der Lektion 12 ist m. E. ein Fehler. Warum wird nicht die deklarierte Variable tasterPin in der loop-Methode benutzt, sondern (die nicht deklarierte Variable) buttonPin? Ich vermute mal, dass hier einfach eingedeutscht wurde! Nur halt leider nicht überall.

      Für Anfänger ist so etwas natürlich schon ein kleine Hürde.

      int ledPin = 9;
      int tasterPin = 11;

      void setup(){
      pinMode(ledPin,OUTPUT);
      pinMode(tasterPin,INPUT);
      }

      void loop(){
      if (digitalRead(buttonPin)==LOW){
      digitalWrite(ledPin, HIGH);
      } else {
      digitalWrite(ledPin, LOW);
      }
      }

      1. Hallo

        Eine Frage:

        Wie und kann mans überhaupt, den Taster so abfragen, das wenn er 2mal gedrückt wurde, das Licht dauerhaft an bleibt bis man ihn wieder gedrückt hat?
        Er soll bei einmal nur 30sek und bei 2 mal dauerhaft.

        Lg und schönes Wochenende
        Nathalie

        1. Hallo Nathalie Schuster!
          Eine Antwort kann ich dir nicht geben, weil ich zu wenig Übung habe. Aber ich möchte dich für deine Frage unterstützen. Sie interessiert auch mich und vielleicht meldet sich jemand, der eine Lösung kennt, die man dann für eigene Bedürfnisse abändern kann.
          mfg alois

          1. Hallo, dachte schon die Seit ist tot.

            Scheinbar ist es nur unmöglich.
            habe es mit setzen versucht un un un aber hat nicht geklappt.

            Vlt kommt noch einer drauf.

            Ich hoffe mal :)

            Lg Nathalie

            1. Hallo Nathalie, hallo Alois,

              das ist in der Tat kein einfaches Problem. Es ist schon zu lösen. Hier wäre der Code dafür. Große Erklärungen habe ich erstmal nicht eingefügt. Versucht mal, ob Ihr es versteht:

              int ledPin = 9;
              int tasterPin = 11;

              int einschaltdauer = 3000; // 3s
              int tasterTimeout = 500; // doppelklick wird innerhalb von 0,5 Sekunden erwartet
              boolean letzterTasterZustand = false;
              boolean doppelklick = false;
              boolean einfachklick = false;
              boolean dauerAn = false;

              long letztesMalGedrueckt = 0;
              long lichttimer = 0;

              void setup() {
              Serial.begin(9600);
              pinMode(ledPin, OUTPUT);
              pinMode(tasterPin, INPUT);
              }

              void loop() {
              boolean tasterZustand = digitalRead(tasterPin);
              if (tasterZustand == HIGH) {
              if (letzterTasterZustand != tasterZustand) {
              if (letztesMalGedrueckt + tasterTimeout > millis()) {
              doppelklick = true;
              einfachklick = false;
              } else {
              einfachklick = true;
              doppelklick = false;
              }
              letztesMalGedrueckt = millis();
              }
              }

              if (doppelklick == true) {
              dauerAn = true;
              }

              if (einfachklick == true) {
              einfachklick = false;
              if (dauerAn == true) {
              dauerAn = false;
              digitalWrite(ledPin, LOW);
              } else {
              lichttimer = millis();
              }
              }

              if (lichttimer + einschaltdauer > millis()) {
              digitalWrite(ledPin, HIGH);
              } else {
              digitalWrite(ledPin, LOW);
              if (dauerAn == true) {
              digitalWrite(ledPin, HIGH);
              }
              }

              letzterTasterZustand = tasterZustand;
              delay(20);
              }

              Liebe Grüße

              Stefan

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

     

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.