Arduino: Taster auswerten und LEDs ansteuern: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 65: Zeile 65:


'''Musterlösung:''' [https://funduino.de/nr-4-pulsierende-led Pulsierende LED]
'''Musterlösung:''' [https://funduino.de/nr-4-pulsierende-led Pulsierende LED]
Eine Anleitung zur Verwendung von <code>switch..case</code> findet sich in der [https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/ Arduino-Dokumentation].
Demo-Quelltext <code>DemoSwitchCase</code>
<source line lang="c" style="font-size:medium">
//*****************************************************************************
// 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;
</source>
</div>
</div>
-->
-->

Version vom 17. Oktober 2022, 14:27 Uhr

Abb. 1: Lernset - Einsteiger Kit für Arduino

Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatikpraktikum 1, 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 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

  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 3.3 ein switch...case verwendet?
  6. Welche Version der RGB-LED haben Sie verwendet (gemeinsame Anode oder Kathode)?
  7. Wurden jedes Programm mittels PAP geplant?
  8. Wurde auf magic numbers verzichtet?
  9. Wurde die Programmierrichtlinie eingehalten?

Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_03.pdf

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: [1]

Aufgabe 3.3: Auf Knopfdruck dimmen

Ein Taster dimmt eine LED:

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

Tipp: Nutzen Sie Ausgangsprogramm PulsierendeLED.ino aus Aufgabe 2.3 und nutzen Sie den Hardwareaufbau aus Aufgabe 3.2.

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

Arbeitsergebnisse in SVN: dimmeLED.ino

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:

  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

Musterlösung: [2]

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

Bewertung

Aufgabe Punkte
3.1 2
3.2 2
3.3 2
3.4 2
3.5 2

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)



→ zurück zum Hauptartikel:Arduino Praxiseinstieg