Wie schaffe ich es, dass ich eine LED durch Knopfdruck blinken lassen kann und durch den Knopf die LED dann wieder ausschalten kann?

1 Antwort

uint32_t previousMillis = 0;
const uint8_t tasterPin = 12;
const uint32_t intervalOff = 1000;
const uint32_t intervalOn = 5000;
bool blinkActive = false;           //in diser Variable wird gescpeicher, ob die LED überhaupt blinken soll
bool ledState = 0;
bool tasterStateOld = HIGH;
bool tasterState = HIGH;


void setup() {
  pinMode(13, OUTPUT);
  pinMode (tasterPin, INPUT_PULLUP);
}


void loop() {
  unsigned long currentMillis = millis();
  if ((blinkActive == true) && (ledState == HIGH)) {      //überprüfen, ob die LED überhaupt blinken soll und ob die LED gerade an ist
    if (millis() - previousMillis >= intervalOn) {        //Die Variable currentMillis hab ich gelöscht und durch die Funktion direkt ersetzt, spart dir ein bisschen Variablen-Speicher
      previousMillis = millis();
      ledState = LOW;                                     //Die LED wird außgeschalten, wenn sie intervalOff an war
      digitalWrite(13, ledState);
    }
  } else if ((blinkActive == true) && (ledState == LOW)) {//überprüfen, ob die LED überhaupt blinken soll und ob die LED gerade aus ist
    if (millis() - previousMillis >= intervalOff) {
      previousMillis = millis();
      ledState = HIGH;                                    //Die LED wird angeschalten, wenn sie intervalOn aus war
      digitalWrite(13, ledState);
    }
  }


  tasterState = digitalRead(tasterPin);
  if (tasterState != tasterStateOld) {
    if (tasterState) {
      blinkActive = !blinkActive;
      if (blinkActive == false) {
        ledState = LOW;
        digitalWrite(13, ledState);
      }
    }
    tasterStateOld = tasterState;
    delay(200);                                             //Kann gegegebenfalls durch millis ersetzt werden
  }
}

Ich glaub so sollte das funktionieren, also zumindest tut das bei mir so. Wenn Sachen unklar sind, kannst du gerne kommentieren oder du schickst mir eine Freundschaftsanfrage. Ich hoffe, dass ich dir weiterhelfen konnte und würde mich freuen wenn du meine Antwort dementsprechend markierst.

Woher ich das weiß:Hobby – Weil ich mich schon seit Jahren mit solchen Dingen bafasse
ArduinoGeek 
Fragesteller
 18.05.2020, 21:33

Danke ich probier es gleich Mal aus, ich schreib dir dann ob's geklappt hat :-).

0