Didaktisch methodische Einordnung
Die Schülerinnen und Schüler lernen in dieser Übung ...
| Arbeitsmaterial |
|
| Aufgaben |
|
Schaltungsaufbau
Das Programm „Taster_LED“
// ********************************************************
// ESP Board : ESP32-S3-WROOM
// Aufgabe : Ein/Aus Taster für LED
// Betriebsspannung: 3,3 V
// ********************************************************
#define PIN_LED 2
#define PIN_BUTTON 15
void setup() {
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUTTON, INPUT);
}
void loop() {
if (digitalRead(PIN_BUTTON) == LOW) { // wenn T1 gedrückt
digitalWrite(PIN_LED,HIGH); // LED -> HIGH
}else{
// sonst
digitalWrite(PIN_LED,LOW); // LED -> LOW
}
}
Hinweise und Bemerkungen zur Versuchsdurchführung
Sollte die LED nach dem Start des Sketches bei Tastendruck nicht leuchten, kann dies verschiedene Gründe haben:
1. Ist die Schaltung so aufgebaut, wie in der Schaltskizze festgelegt?
2. Sind Controller Board und Computer via USB-Kabel miteinander verbunden?
3. Haben sich Schreibfehler in das Programm eingeschlichen?
Wie funktioniert die Schaltung?
Die LED ist mit dem Ausgang GPIO2, der Taster T1 mit dem Eingang GPIO15 des ESP32-Boards verbunden.
Im Programm wird mit
digitalRead(PIN_BUTTON) der Pegelzustand am Eingang von GPIO15 abgefragt und mit
digitalWrite(PIN_LED) der Zustand am Ausgang zur LED eingestellt.
Erweiterungsaufgabe
Versuche jetzt das Programm so umzuschreiben, dass die LED aufleuchtet und erleuchtet bleibt, sobald du einmal auf den Taster T1 gedrückt hast und erst erlischt, wenn du ein zweites mal den Taster drückst. T1 arbeitet wie ein Umschalter.
Schreibe dazu ein Programm "Lampenschalter" und speichere es ab. Der Schaltungsaufbau aus Abb. 1 ändert sich nicht, nur das Programm muß verändert werden.
Programm „Lampenschalter“
// ************************************************
// ESP32 Board : ESP32-S3-WROOM
// Aufgabe : Lampenschalter für LED
// Betriebsspg. : 3v3
// ************************************************
#define PIN_LED 2
#define PIN_BUTTON 15
void setup() {
pinMode(PIN_LED, OUTPUT);
pinMode(PIN_BUTTON, INPUT);
}
void loop() {
if (digitalRead(PIN_BUTTON) == LOW) {
delay(30);
if (digitalRead(PIN_BUTTON) == LOW) {
reverseGPIO(PIN_LED);
}
while (digitalRead(PIN_BUTTON) == LOW);
delay(30);
}
}
void reverseGPIO(int pin) {
digitalWrite(pin, !digitalRead(pin));
}
Wie funktioniert die Schaltung?
Mit dem Befehl delay(30) wird das Kontaktprellen, das unweigerlich bei jedem Tastendruck auftritt, überbrückt, bevor der nächste Befehl ausgeführt wird.
Die Funktion reverseGPIO(int pin) kehrt den Schaltzustand am Ausgang GPIO2 um.