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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 34: Zeile 34:
<div class="mw-collapsible mw-collapsed">
<div class="mw-collapsible mw-collapsed">


'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoInterrupt/DemoInterrupt.ino SVN: DemoInterrupt.ino]
*'''Ansatz 1 - [[Arduino:_Interrupts|Interrupt Service Routine]]:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoInterrupt/DemoInterrupt.ino SVN: DemoInterrupt.ino]
 
* '''Ansatz 2 - <code>millis()</code>:''' [https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce Beispiel, wie man einen Taster entprellt.]
'''Arduino Beispiel:''' [https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce Beispiel, wie man einen Taster entprellt.]
</div>
</div>



Version vom 6. Oktober 2023, 09:39 Uhr

Abb. 1: Pulsierende LED

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

Eine Anleitung zur Verwendung von switch..case findet sich in der Arduino-Dokumentation.

Demo-Quelltext DemoSwitchCase

 
//*****************************************************************************
// 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:

  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

Tutorials

Demo

SVN: DemoInterrupt.ino

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

  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 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
→ zurück zum Hauptartikel: Arduino Praxiseinstieg