HeartBeat-Blink ohne delay kompakt als eine Methode

  • StefanL38
  • StefanL38s Avatar Autor
  • Offline
  • Junior Member
  • Junior Member
  • Hobby-Elektroniker, Modellflieger
Mehr
25 Mär 2020 22:58 #650 von StefanL38
StefanL38 erstellte das Thema HeartBeat-Blink ohne delay kompakt als eine Methode
Hallo,

ich pflege in meine Programme immer eine HeartBeat-Routine einzubauen die eine LED blinken lässt.
Das ESP8266 hat eine OnBoard-LED das mit GPIO2 verbunden ist.
Das ESP32-Modul selbst nicht. Aber das DOIT ESP32DEVKIT V1 hat eine OnBoard-LED die auch mit GPIO2 verbunden ist

Dadurch habe ich eine optische Rückmeldung ob das Programm überhaupt läuft oder nicht.
Ich habe den Code runterkomprimiert so weit es geht und alles in eine einzige Methode reingepackt.
Dazu muss man Variablen deren Inhalt erhalten bleiben soll als static definieren.
Jetzt hat man eine einzige Methode deren Quellcode man irgendwo in den sonstigen reinklatschen kann
ohne noch irgendwo an anderer Stelle Konstanten oder Variablen definieren zu müssen.
Dann ruft man die BlinkRoutine in der main-loop auf. Die Routine kommt ohne delay aus deshalb wird die sonstige Codeausführung nicht blockiert.
void setup() 
{  
}

void BlinkOnBoardLED(unsigned long p_interval) 
{static const int ledPin =  LED_BUILTIN;  // On ESP8266/DOIT-ESP32-DEVKIT_V1-Boards GPIO2 
 static unsigned long previousMillis = 0; // will store last time LED was updated
 static unsigned long currentMillis = millis();
   pinMode(ledPin, OUTPUT);
   currentMillis = millis();
   if (currentMillis - previousMillis >= p_interval) 
   { previousMillis = currentMillis;
     if (digitalRead(ledPin) == HIGH)
       {digitalWrite(ledPin, LOW);}
     else {digitalWrite(ledPin, HIGH);}} 
} // end of void BlinkOnBoardLED(unsigned long p_interval) 

void loop() 
{ 
  BlinkOnBoardLED(500);
}

viele Grüße

Stefan

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Powered by Kunena Forum