Arduino: Taster auswerten und LEDs ansteuern: Unterschied zwischen den Versionen
Zeile 20: | Zeile 20: | ||
Nach Durchführung dieser Lektion | Nach Durchführung dieser Lektion | ||
* können Sie Quelltext entsprechend der Programmierrichtlinien schreiben. | * können Sie Quelltext entsprechend der Programmierrichtlinien schreiben. | ||
* einen Taster einlesen und entprellen. | * einen Taster über eine Iterrupt-Leitung einlesen und entprellen. | ||
* können Sie mittels Taster und <code>switch..case</code>-Verzweigung eine LED in verschiedenen Helligkeiten ansteuern | * können Sie mittels Taster und <code>switch..case</code>-Verzweigung eine LED in verschiedenen Helligkeiten ansteuern | ||
* eine RGB-LED in verschiedenen Farben ansteuern. | * eine RGB-LED in verschiedenen Farben ansteuern. |
Version vom 16. Oktober 2024, 13:04 Uhr
Autor: | Prof. Dr.-Ing. Schneider |
Modul: | Praxismodul I |
Lektion 3: | 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 Sie Quelltext entsprechend der Programmierrichtlinien schreiben.
- einen Taster über eine Iterrupt-Leitung einlesen und entprellen.
- können Sie mittels Taster und
switch..case
-Verzweigung eine LED in verschiedenen Helligkeiten ansteuern - eine RGB-LED in verschiedenen Farben ansteuern.
Lernzielkontrolle
- Wurde der Taster erfolgreich eingelesen und entprellt?
- Wozu benötigt man einen Pull-Up/Pull-Down-Widerstand?
- Wurde der Quelltext durch Header und Kommentare aufgewertet?
- Welche Möglichkeiten gibt es einen Zähler zu in-/dekrementieren?
- Wurde in Aufgabe 3.3 ein
switch...case
verwendet? - Welche Version der RGB-LED haben Sie verwendet (gemeinsame Anode oder Kathode)?
- Wurden jedes Programm mittels PAP geplant?
- Wurde auf
magic numbers
verzichtet? - Wurde die Programmierrichtlinie eingehalten?
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_03.pdf
Musterlösung 1 |
|
Musterlösung 2 |
Lösung 2 - |
Tutorials
- Arduino Befehlsübersicht
- Funduino: Taster am Arduino
- Funduino: RGB LED ansteuern
- Schalter entprellen mit Interrupt Service Routine
- Wiki: HSHL-Bibliothek einbinden
- Programmierrichtlinie für C
Demo
Versuchsvorbereitung
- Binden Sie die HSHL-Bibliothek ein.
- Studieren Sie den Artikel Interrupt Service Routine.
- Studieren Sie das Demo SVN: DemoInterrupt.ino.
- Studieren Sie das Tutorials.
- Studieren Sie die Programmierrichtlinie.
- Planen Sie die Software via PAP.
- Beantworten Sie die Lernzielkontrollfragen.
- Sichern Sie Ihre Unterlagen in SVN.
Versuchsdurchführung
Aufgabe 3.1: Lernzielkontrolle
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_03.pdf
Aufgabe 3.2: Eine LED per Tastendruck aktivieren
Eine LED soll für 5 Sekunden leuchten, wenn ein Taster betätigt wurde.
Nützliche Befehle: pinmode(), digitalRead(), digitalWrite(), delay, if..else
Arbeitsergebnisse in SVN: TasterSchaltetLED.ino
Musterlösung |
Aufgabe 3.3: Auf Knopfdruck dimmen
Ein Taster dimmt eine LED:
- Tastendruck: an, 100% Lichtleistung
- Tastendruck: an, 50% Lichtleistung
- Tastendruck: aus 0%
Nützliche Befehle: pinmode(), analogWrite(), delay(), switch..case
Arbeitsergebnisse in SVN: dimmeLED.ino
Tipp 1 |
Nutzen Sie Ausgangsprogramm |
Tipp 2 |
Eine Anleitung zur Verwendung von switch..case findet sich in der Arduino-Dokumentation.
Demo-Quelltext //*****************************************************************************
// Modul : DemoSwitchCase *
// *
// Datum : 17.10.2022 *
// *
// Funktion : Demo für eine switch...case-verzweigung *
// *
// Implementation : Arduino IDE vers. 2.0.0 *
// *
// Hardware : Arduino UNO R3 *
// *
// Author : (c) 2022, Dr. Ulrich Schneider *
// *
// Letzte Änderung : 17.10.2022 *
// *
//*****************************************************************************
byte Cnt_u8 =0; // Zählvariable wird angelegt und initialisiert
void setup() {
Serial.begin(9600); // Seriellen Monitor initialisieren, 9600 Baud
}
void loop() {
Cnt_u8++; // Zähler inkrementieren
if (Cnt_u8>2) Cnt_u8=0; // Überlauf ab 2: 012012...
switch (Cnt_u8)
{
case 0:
Serial.println("Fall 0");
break;
case 1:
Serial.println("Fall 1");
break;
case 2:
Serial.println("Fall 2");
break;
default:
// wird in diesem Beispiel nicht erreicht
break;
}
delay(500); // ms für die Darstellung
}
end;
|
Aufgabe 3.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:
- Weiß
- Rot
- Blau
- Grün
- Langsamer Übergang durch das gesamte Farbspektrum (Einschlaflicht)
Nützliche Befehle: pinmode(), analogWrite(), delay()
Arbeitsergebnisse in SVN: steureFarbigeLED.ino
Musterlösung |
Aufgabe 3.5: Nachhaltige Doku
Sichern Sie alle Ergebnisse mit beschreibendem Text (message
) in SVN.
- Wurden die Regeln für den Umgang mit SVN eingehalten?
- Wurde die Programmierrichtlinie eingehalten?
- Wurde nachhaltig dokumentiert?
- Haben die Programme einen Header?
- Wurden der Quelltext umfangreich kommentiert?
- Wurden die PAPs erstellt und abgelegt? Passen die PAPs 100% zum Programm?
Arbeitsergebnis in SVN: SVN Log
FAQ
- Muss ich die Lösungen selbst programmieren? Ja, nur Eigenleistung wird bewertet.
- Darf ich die Musterlösung 1:1 kopieren und als meine Leistung ausgeben? Nein, das ist ein Plagiat und wird als Täuschungsversuch gewertet.
Literatur
- Brühlmann, T.: Arduino Praxiseinstieg. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: HSHL-Bib, O'Reilly-URL
- Brühlmann, T.: Sensoren im Einsatz mit Arduino. Frechen : mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: HSHL-Bib, O'Reilly
- Snieders, R.: ARDUINO lernen. Nordhorn: 8. Auflage 2022. URL: https://funduino.de/vorwort
- Schneider, U.: Programmierrichtlinie für für die Erstellung von Software in C. Lippstadt, 1. Auflage 2022. PDF-Dokument (212 kb)
→ Termine 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
→ zurück zum Hauptartikel: Arduino Praxiseinstieg