Einfache Selbsthaltung einer LED
Um die Selbsthaltung der LED zu programmieren, also ein Ein-/Ausschalten der LED per Knopfdruck zu ermöglichen, braucht es nicht viel:
- Einführung einer Boolean-Variable:
Ein Boolean-Wert kann entweder false oder true sein, also 0 oder 1. Somit können wir eine Boolean-Variable entscheiden lassen, ob die LED an oder aus sein soll.
Wir nennen die Variable "status_LED". - Wenn digitalRead(35) == HIGH, also der Taster wahrgenommen wird, muss die Variable von false auf true gesetzt werden und umgekehrt.
- Den Befehl status_LED = !status_LED nutzen wir, damit der boolean-Wert einfach auf den negierten (umgekehrten) Wert gesetzt werden kann
- Jedoch würde dieser Code im loop durchgehend wiederholt werden, somit müssen wir einen delay() (Verzögerung) einführen, um ein wenig Zeit zu haben, in der wir den Finger vom Taster nehmen können.
- delay() so zu nutzen, ist jedoch nicht sonderlich effizient, dementsprechend wäre es sinnvoller mit millis() die Laufzeit zu ermitteln und somit eine Pause zu machen.
- Nun muss status_LED dafür sorgen, dass die LED leuchtet. Dies wird wieder mit einer if-Abfrage realisiert.
Aufgabe:
Setze das unten dargestellte Programm um und teste es. Welchen Nachteil hat diese Umsetzung einer Selbsthaltung? Drücke den Taster für längere Zeit und beschreibe, was passiert.
Source Code:
bool status_LED = false;
void setup()
{
pinMode(35, INPUT);
pinMode(16, OUTPUT);
digitalWrite(16, LOW);
}
void loop()
{
if(digitalRead(35) == HIGH) //Wenn der Eingang des Tasters gleich 1 ist
{
status_LED = !status_LED; //setze status_LED auf den umgekehrten Wert
delay(200); //delay, damit nicht ständig diese Abfrage wiederholt wird
}
if(status_LED == true)
{
digitalWrite(16, HIGH);
}
else
{
digitalWrite(16, LOW);
}
}
Mit Ardublockly:
Abbildung: Programmierung der Selbsthaltung einer LED in Ardublockly
Quelle: BBS 2 Wolfsburg
Nun wird das fertige Programm erneut auf den ESP32 hochgeladen.
Anders als auf der letzten Seite, sollte die LED nun nach einem kurzen Betätigen des Tasters dauerhaft leuchten. Nach wiederholter Betätigung sollte die LED wieder aus gehen.
Video: Selbsthaltung mit Taster und LED
Quelle: BBS2 Wolfsburg
Drückt man länger auf den Taster so kann man Folgendes beobachten:
Video: Problematik Selbsthaltung mit Taster und LED
Quelle: BBS2 Wolfsburg
Das in diesem Kapitel implementierte Programm für die Selbsthaltung ist somit nicht vollständig. Das Problem, dass die LED bei längerer Betätigung des Tasters blinkt, wird in dem späteren Kapitel "Programmierung einer Stromstoßschaltung" behoben.
Zunächst wird erst einmal auf die Beschaltung mit mehreren LEDs eingegangen.