Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

LED und Taster

Übung 1: LED und Taster

Didaktisch methodische Einordnung

Die Schülerinnen und Schüler lernen in dieser Übung ...

  • ... eine Schaltung nach Vorgabe aufzubauen.
  • ... eine LED,  ihre Wirkungsweise und Beschaltung kennen.
  • ... mündlich ausgesprochene Handlungsanweisungen in eine Versuchsablaufsteuerung mit einer  entsprechenden Software vorzunehmen.
  • ... Befehle der Sprache Arduino-C kennen.
  • ... einfache Änderungen im Programm vorzunehmen und neuen Anforderungen anzupassen.
  • ... Versuchsergebnisse zu bewerten und Fehlerquellen zu benennen.
Arbeitsmaterial
  • 1x  ESP32 xxx Board
  • 1x  GPIO Extension Board (optional)
  • 1x  LED rot
  • 1x  Taster T1
  • 2x  Widerstand 10 kOhm  
  • 1x  Steckbrett
  • 1x  USB-Verbindungskabel  
Aufgaben
  • Baue die Schaltung nach Schaltungsvorlage (Abb. 1) auf dem Steckbrett auf. Der Taster arbeitet hier als Ein-/Ausschalter.
  • Übertrage das Programm „"Taster_LED" in den Arduino Editor und speichere es ab. Übrigens bezeichnet man Arduino-Programme auch als SKETCH.
  • Starte das Programm und beschreibe, wie die Schaltung arbeitet.
  • Beschreibe mit eigenen Worten für jede Programmzeile wie der Controller reagiert.
  • Ändere das Programm so ab, dass die LED mit Hilfe des Taster eingeschaltet und durch einen weiteren Tastendruck auch wieder ausgeschaltet werden kann (Umschalter); ähnlich einem Lampenschalter. Speichere dieses Programm unter „Lampenschalter“ ab.

Schaltungsaufbau

Abb. 3 - Schaltungsaufbau mit LED und Taster T1

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.

  • Ist T1 nicht gedrückt, liegt am Eingang GPIO15 eine 1 oder HIGH
  • wird T1 gedrückt, liegt eine 0 oder LOW an. 

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.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf