- Impressum / Datenschutz / ...
- ESP8266 spezifisch
- Programmierumgebung / IDE
- HeartBeat-Blink ohne delay kompakt als eine Methode
HeartBeat-Blink ohne delay kompakt als eine Methode
- StefanL38
- Autor
- Offline
- Junior Member
- Hobby-Elektroniker, Modellflieger
Weniger
Mehr
- Beiträge: 23
- Dank erhalten: 1
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.
viele Grüße
Stefan
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.
- Aktuelle Seite:
- Startseite
- Impressum / Datenschutz / ...
- ESP8266 spezifisch
- Programmierumgebung / IDE
- HeartBeat-Blink ohne delay kompakt als eine Methode