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

Drucktaster

Übung 1 - Testschaltung mit Drucktaster * Variante 1

Übung 1 - Testschaltung mit Drucktaster
Material
  • 1x Arduino UNO o.ä.
  • 1x  Drucktaster als Schließer
  • 1x  Widerstand 470 Ohm (gelb-violett-braun)
  • 1x  LED rot
  • 1x  Steckdrähte
  • 1x  USB Kabel
Aufgaben
  • Baue die Schaltung aus Abb. 1 auf dem Steckbrett auf.
  • Überprüfe die Funktion des Tasters und der LED. Notiere deine Ergebnisse.

Schaltskizze und Schaltungsaufbau

Abb. 1a - Testschaltung mit Taster und LED
Abbildung 1b - Schaltskizze und Schaltungsaufbau Drucktaster

Wie arbeitet die Testschaltung?

Wird der Drucktaster nicht betätigt, ist er offen. Dies wird links in Abbildung 2 gezeigt. Ein Strom kann aufgrund der Unterbrechung (offener Stromkreis) nicht vom Plus-Pol zum Minuspol fließen. Die LED leuchtet nicht.

Im rechten Bild ist der Taster geschlossen. Der Stromkreis ist geschlossen und die elektrische Ladung fließt vom Pluspol über den Taster T1, den Widerstand und die LED zum Minuspol. Die LED leuchtet.

Abbildung 2 - Schalter offen (linkes Bild) - Schalter geschlossen (rechtes Bild)

Übung 2 - Testschaltung mit Drucktaster * Variante 2

 

In der folgenden Schaltung (s. Abb. 3a) verhält sich die LED anders, weil der Taster parallel zur LED geschaltet ist. Wird der Taster nicht gedrückt, leuchtet die LED, wird er gedrückt, erlischt sie. Der Grund dafür liegt in der Tatsache begründet, dass der elektrische Strom sich immer den Weg des geringsten Widerstands nimmt und das ist in diesem Fall der Weg über T1.

Schaltskizze und Schaltungsaufbau

Abb. 3a - Schaltung mit Taster T1 und LED; T1 liegt parallel zur LED.
Abbildung 3b - Schaltungsskizze und Schaltungsaufbau
Übung 2 - Testschaltung mit Drucktaster * Variante 2
Material
  • 1x Arduino UNO o.ä.
  • 1x  Drucktaster als Schließer
  • 1x  Widerstand 470 Ohm (gelb-violett-braun)
  • 1x  LED rot
  • 4x  Steckdrähte
  • 1x  USB Kabel
Aufgaben
  • Baue die Schaltung nach Abbildung 3 auf.
  • Überprüfe die Funktion des Tasters und der LED. Notiere deine Ergebnisse.

Übung 3 - Den Zustand eines Tasters abfragen

 

Wir wissen jetzt, wie ein Taster zu beschalten ist. Wie erkennt ein Mikrocontroller aber, ob ein Taster gedrückt wurde oder nicht?

Das wird uns in dieser Übung beschäftigen. Dazu wird ein Pinanschluss (D3) als Eingang gesetzt. Wird nun ein Taster, der mit dem Eingangspin 3 (D3) verbunden ist, gedrückt, dann soll die volle Betriebsspannung (5V -> entspricht 1) am Eingang anliegen, wird er nicht gedrückt, liegen 0V (entspricht 0) an.

In bestimmten Zeitabständen (ca. alle 2s) soll der Taster abgefragt und das Ergebniss im Terminalfenster dokumentiert werden. Wie das aussehen könnte, zeigt Abb. 5.

Soweit die Theorie, jetzt kommt die Praxis, und die verlangt ein bisschen Wissen aus der Physik.

Standardmäßig sind die digitalen Eingänge eines Arduino UNO als Eingänge voreingestellt. Sie besitzen einen hohen Eingangswiderstand und es ist im allgemeinen nicht nötig, die Eingänge zu Programmanfang in der Methode setup() mit pinMode festzulegen. Wir werden dies aber aus Konsistenzgründen immer tun.

Übung 3 - Zustand eines Tasters abfragen
Material
  • 1x Arduino UNO o.ä.
  • 1x  Drucktaster – Schließer
  • 1x  Widerstand 10kOhm (braun-schwarz-orange)
  • 1x  Widerstand 470 Ohm (gelb-violett-braun)
  • 3x  Steckdraht
  • 1x  USB Verbindungskabel
Aufgaben
  • Baue die Schaltung nach Abbildung 5 auf.
  • Übertrage das Programm Taster0.ino in den Editor und speichere es ab.
  • Starte das Programm.
  • Überprüfe, ob die eingebaute LED aufleuchtet, sobald der Taster gedrückt wird und erlischt, wenn der Taster nicht gedrückt ist.
Abb. 5a - Schaltskizze mit Taster T1, LED und zwei Widerständen. Bei einem Arduino UNO liegen 5V, bei einem NANO 3,3V an.

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 5b

Schaltungsaufbau zum Programm led_taster_01.ino

mit einem Arduino NANO ESP32.

Programm led_taster_01.ino

// =================================================

// Eingesetzte Hardware:          Arduino NANO ESP32

// https://www.rahner-edu.de

// =================================================

#define LED_Pin D13

#define TASTER_Pin D4

int LED_Status = LOW;

int TZustand = 0;

 

void setup() {

  pinMode(LED_Pin, OUTPUT);

  pinMode(TASTER_Pin, INPUT);

}

 

void loop() {

 TZustand = digitalRead(TASTER_Pin);

  if (TZustand == LOW) {

    digitalWrite(LED_Pin, LOW);

  } else

  {

    digitalWrite(LED_Pin, HIGH);

  }

}

Wie arbeitet die Schaltung?

Im Normalzustand ist der Drucktaster geöffnet. Es fließt kein Strom vom Plus- zum Minuspol. Der hochohmige Eingang D3 "sieht", dass LOW anliegt.

Wird der Schalter geschlossen, teilt sich der Strom im Punkt K auf; ein großer Anteil des Stromes fließt über den 10 kW Widerstand nach GND ein anderer - sehr geringer Teil - über den 470 W Widerstand und den hochohmigen Pin 3 nach GND. Zwischen K und GND liegt jetzt nahezu die volle Spannung von +5V an. Der Eingang D3 erkennt, dass HIGH anliegt.

 

Zum Einlesen des Status von einem Schalter (geschlossen 1, offen 0), muss der Pin Eingang auf ein festes Potential gesetzt werden. Bei offenem Schalter T1 wirkt der 10 kW Widerstand als sogenannter pull-down Widerstand, er zieht den Punkt K auf GND in einen für den Eingang D3 definierten und damit lesbaren Spannungszustand.

Übung 4a - Taster und LED (grafische Programmierung)

Mit dem Programm VISUINO lässt sich der Zustand eines Tasters - wie in Übung 3 bereits gezeigt - sehr schnell darstellen und "programmieren". In diesem Beispiel gilt:

  • wird der Taster an D3 gedrückt, leuchtet die LED an D7, wird er nicht gedrückt leuchtet sie nicht.

Der dazu notwendige Schaltungsaufbau erfolgt nach Abb. 5a. Der 470 Ohm Widerstand wird weggelassen, die LED wird über einen 330 Ohm Vorwiderstand an D7 angeschlossen.

Benutzt wird ein Arduino UNO WiFi Rev2  Board.

VISUINO Blockdarstellung

Nach dem Start von VISUINO wird im Block das benutzte Arduino Board aufgerufen (s. Abb. 6a)..In meinem Fall ein Arduino UNO WiFi Rev2 Board.

Abb. 6a - Block für ein Arduino Uno WiFi Rev2 Board

In einem zweiten Schritt muss der Ausgang von D2 (Taster) mit dem Eingang von D7 (LED) verbunden werden (s. Abb. 6b). Anschließend kann die Einstellung abgespeichert werden.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abb. 6b - Aufgerufen wird der Block Arduino UNO WiFi R2.

Im Block wird der Ausgang von Digital3 (Taster) mit dem Eingang von Digital7 (LED) verbunden.

Anschließend wird das Programm in die Arduino IDE übertragen, kompiliert und gestartet.

Sobald der Taster gedrückt wird leuchtet die LED auf. Wird er losgelassen, erlischt die LED..

Übung 4b - Taster und Terminalausgabe  (grafische Programmierung)

In dieser Übung wird der Tasterzustand in einem Terminalfenster als 0 (LED aus) und 1 (LED an) dargestellt.

 

Ablauffolge zum Blockaufbau in VISUINO

  1. Öffne das Arbeitsmenü und lege im Fenster "Board" das eingesetzte Arduino Board fest. In meinem Fall ist es ein Arduino UNO WiFi R2. Lege den aktiven COM-Port fest.
  1. Gib im Suchfenster des Objekt-Fensters "Text" ein und ziehe das Icon Converters - Text auf die Arbeitsfläche. Rechter Mausklick auf das Werkzeug-Icon in der Kopfzeile des Blocks; wähle mit Doppelklick aus "Add Elements ..." -> Digital Element.
  2. Gib im Fenster "Eigenschaften" - "Elements" - "Digital Element1" - "False Value" eine 0 und in "True Value" eine 1 ein und im Feld "Name" -> Zustand Taster: .
  1. In einem letzten Schritt wird OUT des Blocks "Formatted Text1" mit IN von Serial im "Arduino" Block verbunden, sowie OUT von Digital[3] im Arduino Block mit IN in "Formatted Text1".
  1. In einem letzten Schritt wird der Code an die Arduino IDE übertragen, kompiliert und dann hochgeladen. Öffne im Arbeitsmenü das Fenster "Serial" und baue die Verbindung mit "Connect" auf. Jedesmal, wenn der Taster gedrückt wird, erscheint ein Text gefolgt von einer 1. Wird der Taster losgelassen erscheint eine 0.
  • Das Programm läuft, ohne das eine Zeile Programmcode geschrieben wurde.

Übung 5 - Taster, LED, Polling und Interrupt

Grundsätzlich gibt es zwei Möglichkeiten, den Zustand eines Tasters abzufragen:

  • Bei der Polling-Methode wird bei jedem Schleifendurchlauf des steuernden Programms abgefragt, ob der Taster gedrückt ist.
  • Bei der Interrupt-Methode reagiert das Programm sofort, sobald der Taster gedrückt wird.

Im Programm led_taster_01.ino wurde die Polling-Methode genutzt, um den Zustand des Tasters abzufragen.

Die Aktivierung eines internen Pull-up Widerstandes für einen als Ausgang deklarierten Pin erfolgt dadurch, daß man im Setup-Teil des Programms den Pin über pinMode nicht als Ausgang deklariert. Ein nachfolgender digitalWrite Befehl im loop-Bereich nutzt dann den internen Pull-up Widerstand.

Übung 6 - Treppenhausbeleuchtung und Interrupt

In einem Treppenhaus gibt es auf jeder Etage einen Lichtschalter. Drückt man ihn, geht die Treppenhausbeleuchtung in allen Etagen an und erlischt nach einer gewissen Zeit wieder.

Wir werden eine solche Treppenhausbeleuchtung mit zwei LEDs simulieren und so programmieren, dass sie die oben genannte Bedingung erfüllt.

Schaltskizze und Schaltungsaufbau

Abb. 7a - Schaltungskizze zur Treppenhausbeleuchtung mit zwei Tastern und zwei LEDs
Abb. 7b - Schaltungsaufbau zur Treppenhausbeleuchtung mit zwei Tastern und zwei LEDs

In der Schaltskizze werden beide Taster über Pin 2 (D2) abgefragt. Wird einer der beiden Taster, T1 oder T2, gedrückt, wird ein Interrupt ausgelöst und der Zustand der Treppenhausbeleuchtung für ca. 8 sec auf EIN gestellt. Für beide Taster wurde der interne Pull-Up Widerstand des Arduino eingeschaltet. Das macht den Schaltungsaufbau etwas übersichtlicher und erklärt auch den Unterschied zwischen der Schaltskizze mit Tastern und dem Schaltungsaufbau.

Übung 6 - Treppenhausbeleuchtung mit Interrupt
Material
  • 1x Arduino UNO oder NANO ESP32
  • 1x  Steckbrett
  • 1x  Schaltnetzteil
  • 1x  USB-Verbindungskabel
  • 2x  Taster, offen
  • 2x  LED, rot
  • 2x  Widerstand, 220 W
  • 9x  Steckdraht
Aufgaben
  • Baue die Schaltung nach Schaltskizze auf dem Steckbrett auf.
  • Übertrage das Programm Taster_2LED_INTERRUPT.ino in den Editor und speichere es ab.
  • Überprüfe, ob beide LEDs leuchten, sobald einer der beiden Taster gedrückt wird und für ca. 8 Sekunden an bleiben.

Das Programm Treppenhausleuchten_UNO_WiFi_R2.ino

7 - Bemerkungen zur Funktion attachInterrupt()

  • Die Arduino UNO, Nano und Mini verfügen über zwei digitale Interrupt-Pin: D2 und D3.
  • Bei einem Arduino UNO WiFi R2 und Arduino Nano Every sind alle digitalen Pins interruptfähig.
  • Informiere dich über das Datenblatt deines benutzten Arduino Boards, welche Pinanschlüsse interruptfähig sind.

Einschränkunken durch die Funktion attachInterrupt()

  • Über die Funktion wird bei einem ausgelösten Interrupt eine sogenannte Internet Service Routine (ISR) aufgerufen.
  • Innerhalb der Funktion attachInterrupt funktioniert die Funktion delay() nicht.
  • Seriell empfangene Daten können während der Ausführung eines Interrupts verloren gehen.
  • Alle Variablen, die innerhalb der Funktion attachInterrupt() verändert werden, sollten als volatile deklariert werden.
  • Eine ISR sollte nur wenige Programmzeilen enthalten; am besten nur eine!
  • Es kann zur Zeit immer nur eine ISR ausgeführt werden; während der Ausführung eines Interrupts werden die anderen vom Programm ignoriert, bis der Interrupt abgearbeitet worden ist.
  • Da die Funktionen delay() und millis() auf Interrupts beruhen, funktionieren sie während eines ISR nicht.
  • DelayMicroseconds() beruht nicht auf Interrupts und funktioniert innerhalb einer ISR.

Mehr Informationen zur Funktion attachInterrupt() gibt es bei arduino.cc.

240219

Druckversion | Sitemap
© Reinhard Rahner - Gettorf