Ereignisgesteuerte Programmierung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Abb. 1: Pulsierende LED
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Gruppe: B
Lektion 8: Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester

Inhalt

  • Programmierrichtlinien
  • Taster mittels Arduino auslesen, entprellen, Pull-Up/Pull-Down-Widerstand
  • Zähler inkrementieren
  • switch..case-Verzweigung
  • Ansteuerung einer RGB-LED

Lernziele

Nach Durchführung dieser Lektion können die Studierenden

  • einen Taster mithilfe eines Hardware-Interrupts einlesen und das Eingangssignal softwareseitig entprellen.
  • die Aufgaben einer Interrupt-Service-Routine und der Hauptprogrammschleife unterscheiden.
  • Ereignisse mithilfe globaler Variablen zwischen Interrupt-Service-Routine und Hauptprogramm austauschen.
  • einfache Zustandsautomaten mithilfe von Zählern und switch-case-Verzweigungen implementieren.
  • LEDs mithilfe von PWM-Signalen in unterschiedlichen Helligkeitsstufen ansteuern.
  • eine RGB-LED durch Kombination mehrerer PWM-Signale in unterschiedlichen Farben ansteuern.
  • ihre Programme systematisch testen, dokumentieren und mithilfe von SVN versionieren.

Lernzielkontrolle

  1. Wurde der Taster erfolgreich eingelesen und entprellt?
  2. Wozu benötigt man einen Pull-Up/Pull-Down-Widerstand?
  3. Wurde der Quelltext durch Header und Kommentare aufgewertet?
  4. Welche Möglichkeiten gibt es einen Zähler zu in-/dekrementieren?
  5. Wurde in Aufgabe 4.3 ein switch...case verwendet?
  6. Welche Version der RGB-LED haben Sie verwendet (gemeinsame Anode oder Kathode)?

Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_04.pdf

Tutorials

Demo

SVN: DemoInterrupt.ino

Versuchsvorbereitung

  1. Binden Sie die HSHL-Bibliothek ein.
  2. Studieren Sie den Artikel Interrupt Service Routine.
  3. Studieren Sie das Demo SVN: DemoInterrupt.ino.
  4. Studieren Sie das Tutorials.
  5. Studieren Sie die Programmierrichtlinie.
  6. Planen Sie die Software via PAP.
  7. Beantworten Sie die Lernzielkontrollfragen, welche die Vorbereitung betreffen.
  8. Lösen Sie im Vorfeld die Aufgaben 2-4 mit Wokwi.
  9. Sichern Sie Ihre Versuchsvorbereitung in SVN: TasterSchaltetLED.ino, switchLED.ino und steureFarbigeLED.ino.

Versuchsdurchführung

Aufgabe 1: Besprechung der Versuchsvorbereitung

  1. Starten Sie den Arbeitsplatzrechner.
  2. Loggen Sie sich als .\hshl-user ein.
  3. Löschen Sie unter Tortoise SVN → Settings → Saved Data → Authentification Data.
  4. Legen Sie sich auf der Datenpartition unter D:\SVN ein Repositorium "Inf1P" an.
  5. Stellen Sie mit SVN Checkout die Verbindung zum SVN-Server her (Checkout-URL: https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Gruppen).
  6. Präsentieren Sie Prof. Schneider die Ergebnis Ihrer Vorbereitung.

Aufgabe 2: Eine LED per Tastendruck aktivieren

Eine LED soll für 5 Sekunden leuchten, wenn ein Taster betätigt wurde.

  1. Lesen Sie einen Tasterdruck via Interrupt-Service-Routine ein und speichern Sie diesen in die globale Variable TasterStatus_bit.
  2. Werten Sie die Variable TasterStatus_bit im void loop() aus.
  3. Geben Sie den Wert der Variable TasterStatus_bit im seriellen Monitor aus.
  4. Wird der Taster gedrückt, soll eine LED für fünf Sekunden leuchten. Die LED soll nach fünf Sekunden automatisch ausgehen, ohne dass die Interruptverarbeitung blockiert wird.

Nützliche Befehle: pinMode(), digitalRead(), digitalWrite(), delay, if..else, attachInterrupt, digitalPinToInterrupt, millis()

Arbeitsergebnisse in SVN: TasterSchaltetLED.ino

Aufgabe 3: Auf Knopfdruck dimmen

Ein Taster dimmt eine LED:

  1. Tastendruck: an, 100% Lichtleistung
  2. Tastendruck: an, 50% Lichtleistung
  3. Tastendruck: aus 0%

Nützliche Befehle: pinmode(), analogWrite(), delay(), switch..case

Arbeitsergebnisse in SVN: switchLED.ino


Aufgabe 4: Ansteuerung einer farbigen LED

Eine RGB-LED soll in verschiedenen Farben leuchten. Auf Druck des Tasters soll die RGB-LED in folgenden Modi betrieben werden:

  1. Weiß
  2. Rot
  3. Blau
  4. Grün
  5. Langsamer Übergang durch das gesamte Farbspektrum (Einschlaflicht)


Nützliche Befehle: pinmode(), analogWrite(), delay()

Arbeitsergebnisse in SVN: steureFarbigeLED.ino


Aufgabe 5: Nachhaltige Dokumentation

  • Sichern Sie alle Ergebnisse mit beschreibendem Text (message) in SVN.
  • Beachten Sie dabei die Software Anforderungen.

Arbeitsergebnisse in SVN: SVN Log

Ausblick zur nächsten Lektion

Literatur

  1. Brühlmann, T.: Arduino Praxiseinstieg. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: HSHL-Bib, O'Reilly-URL
  2. Brühlmann, T.: Sensoren im Einsatz mit Arduino. Frechen : mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: HSHL-Bib, O'Reilly
  3. Snieders, R.: ARDUINO lernen. Nordhorn: 8. Auflage 2022. URL: https://funduino.de/vorwort
  4. Schneider, U.: Programmierrichtlinie für für die Erstellung von Software in C. Lippstadt, 1. Auflage 2022. PDF-Dokument (212 kb)



→ Termine von Gruppe B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
→ zurück zum Hauptartikel: Arduino Praxiseinstieg
→ Haben Sie Fragen? Informatik Praktikum FAQ