Arduino: Sensoren einlesen: Unterschied zwischen den Versionen
(30 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Arduino]] | [[Kategorie:Arduino]] | ||
[[Datei:R20-A-4-2.jpg|thumb|rigth|300px|Abb. 1: Bewegungsmelder, PIR-Sensor - HC-SR501]] | [[Datei:R20-A-4-2.jpg|thumb|rigth|300px|Abb. 1: Bewegungsmelder, PIR-Sensor - HC-SR501]] | ||
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | {| class="wikitable" | ||
'''Modul:''' Praxismodul I | |- | ||
''' | | '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | ||
|- | |||
| '''Modul:''' || Praxismodul I | |||
|- | |||
| '''Lektion 4:''' || Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester | |||
|} | |||
== Inhalt == | == Inhalt == | ||
Zeile 19: | Zeile 24: | ||
== Lernzielkontrolle == | == Lernzielkontrolle == | ||
# Wie funktioniert der PIR-Bewegungssensor technisch? Auf welche Strahlung reagiert er? Welche Einstellmöglichkeiten besitzt er? | # Wie funktioniert der [[Bewegungsmelder,_PIR-Sensor_-_HC-SR501|PIR-Bewegungssensor]][[Datei:WikiLink.png|14px]] technisch? Auf welche Strahlung reagiert er? Welche Einstellmöglichkeiten besitzt er? | ||
# Wie funktioniert der Fotowiderstand technisch? Wozu dienen die Widerstände? | # Wie funktioniert der [[Fotowiderstand_LDR|Fotowiderstand]][[Datei:WikiLink.png|14px]] technisch? Wozu dienen die Widerstände? | ||
# Wie funktioniert | # Wie funktioniert das [https://de.wikipedia.org/wiki/Potentiometer Drehpotentiometer] technisch? Wie lässt sich das Poti kalibrieren? | ||
# Wie geben Sie mehrere Signale im Seriellen Plotter aus? | # Wie geben Sie mehrere Signale im Seriellen Plotter aus? | ||
# Wurde der Quelltext durch Header und Kommentare aufgewertet? | # Wurde der Quelltext durch [[Header_Beispiel_f%C3%BCr_C|Header]][[Datei:WikiLink.png|14px]] und Kommentare aufgewertet? | ||
# Wurden jedes Programm mittels PAP geplant? | # Wurden jedes Programm mittels [[Software_Planung|PAP]][[Datei:WikiLink.png|14px]] geplant? | ||
# Wurde auf <code>magic numbers</code> verzichtet? | # Wurde auf <code>magic numbers</code> verzichtet? | ||
# Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]] eingehalten? | # Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]][[Datei:WikiLink.png|14px]] eingehalten? | ||
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_04.pdf</code> | '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_04.pdf</code> | ||
== Tutorials == | |||
* [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool] | |||
* [https://www.arduino.cc/reference/de/ Arduino Befehlsübersicht] | |||
* [[Bewegungsmelder,_PIR-Sensor_-_HC-SR501|PIR-Sensor - HC-SR501]] [[Datei:WikiLink.png|14px]] | |||
* [[Fotowiderstand_LDR|Fotowiderstand LDR]] [[Datei:WikiLink.png|14px]] | |||
* [[Arduino:_Bibliothek_einbinden|Arduino-Bibliothek einbinden]] [[Datei:WikiLink.png|14px]] | |||
* [[Software_Planung| Software-Planung mit PAP]] [[Datei:WikiLink.png|14px]] | |||
* [[Header_Beispiel_f%C3%BCr_C|Header Beispiele für Quelltext in C]] [[Datei:WikiLink.png|14px]] | |||
== Demo == | |||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSerialPlotter/DemoSerialPlotter.ino DemoSerialPlotter.ino] | |||
== Versuchsvorbereitung == | == Versuchsvorbereitung == | ||
# Studieren Sie das Tutorial [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool] und nutzen Sie das Demo [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/ | # Studieren Sie das Tutorial [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool] und nutzen Sie das Demo [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSerialPlotter/DemoSerialPlotter.ino DemoSerialPlotter.ino], um Daten im Seriellen Plotter auszugeben. | ||
# Recherchieren Sie die Funktion der Sensoren (PIR-Bewegungssensor, LDR, Drehpoti) anhand von Fachliteratur. | # Recherchieren Sie die Funktion der Sensoren ([[Bewegungsmelder,_PIR-Sensor_-_HC-SR501|PIR-Bewegungssensor]], [[Fotowiderstand_LDR|LDR]], Drehpoti) anhand von Fachliteratur. | ||
# Bauen Sie die Schaltungen zur Auswertung der Sensoren auf. | # Bauen Sie die Schaltungen zur Auswertung der Sensoren auf. | ||
# Planen Sie die Software via PAP. | # Planen Sie die Software via PAP. | ||
Zeile 43: | Zeile 60: | ||
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_04.pdf</code> | '''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_04.pdf</code> | ||
---- | |||
=== Aufgabe 4.2: Der Bewegungsmelder HC-SR501 === | === Aufgabe 4.2: Der Bewegungsmelder HC-SR501 === | ||
Ein Piezo-Lautsprecher soll piepen, sobald eine Bewegung registriert wird. | Ein Piezo-Lautsprecher soll piepen, sobald eine Bewegung registriert wird. | ||
Zeile 73: | Zeile 90: | ||
=== Aufgabe 4.4: Drehregler - Drehpotentiometer === | === Aufgabe 4.4: Drehregler - Drehpotentiometer === | ||
Eine LED soll blinken. Die Blinkgeschwindigkeit soll mit einem Drehregler eingestellt werden. Zeigen Sie den Wert des Drehpotentiometers sowie den Wert des LED-Ports (z. B. 13) im | Eine LED soll blinken. Die Blinkgeschwindigkeit soll mit einem Drehregler eingestellt werden. Zeigen Sie den Wert des Drehpotentiometers sowie den Wert des LED-Ports (z. B. 13) im Serial Plotter aus. | ||
'''Nützliche Befehle''': <code>pinmode(), analogRead(), analogWrite(), delay(), map()</code> | '''Nützliche Befehle''': <code>pinmode(), analogRead(), analogWrite(), delay(), map()</code> | ||
Zeile 85: | Zeile 102: | ||
|} | |} | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong> | | <strong>[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSerialPlotter/DemoSerialPlotter.ino <code>DemoSerialPlotter.ino</code>] </strong> | ||
|- | |- | ||
| | | <syntaxhighlight lang="c" style="background-color: #EFF1C1; font-size:larger"> | ||
/* Variablen deklarieren */ | |||
int Zufallsvariable_s16 = 0; | |||
static const int KONSTANTE_s16 = 500; | |||
static const int BAUDRATE_s16 = 9600; // 9600 Baud | |||
void setup() { | |||
Serial.begin(BAUDRATE_s16); // Serielle Ausgabe mit 9600 Baud starten | |||
} | |||
void loop() { | |||
Zufallsvariable_s16 = random(0, 1000); // Zufallsvariable erzeugen | |||
Serial.print("Variable 1:"); | |||
Serial.print(Zufallsvariable_s16); | |||
Serial.print(","); // Werte mit Komma trennen | |||
Serial.print("Variable 2:"); | |||
Serial.println(KONSTANTE_s16); // CRLF oder LF | |||
} | |||
</syntaxhighlight><br> | |||
|- | |- | ||
|} | |} | ||
Zeile 121: | Zeile 157: | ||
---- | ---- | ||
→ Termine [[Einführungsveranstaltung Informatikpraktikum 1|0]] [[Einarbeitung_in_die_Versionsverwaltung_SVN|1]] [[Einstieg_in_die_Welt_des_Arduino|2]] [[Arduino: Taster auswerten und LEDs ansteuern|3]] [[Arduino:_Sensoren_einlesen|4]] [[Arduino:_Infrarotsensor_einlesen|5]] [[Arduino:_Infrarotsensor_entstören|6]] [[Arduino:_Programmier- | → Termine [[Einführungsveranstaltung Informatikpraktikum 1|0]] [[Einarbeitung_in_die_Versionsverwaltung_SVN|1]] [[Einstieg_in_die_Welt_des_Arduino|2]] [[Arduino: Taster auswerten und LEDs ansteuern|3]] [[Arduino:_Sensoren_einlesen|4]] [[Arduino:_Infrarotsensor_einlesen|5]] [[Arduino:_Infrarotsensor_entstören|6]] [[Arduino:_Programmier-Challenge_I_WS_WS_24/25|7]] [[Arduino:_IR-Theremin|8]] [[Arduino:_Aktoren|9]] [[Arduino:_LCD_Display_mit_I2C_Schnittstelle|10]] [[Arduino:_Ultraschall_Entfernungsmessung|11]] [[Arduino:_Ultraschallsensor_entstören|12]] [[Arduino:_Temperaturmessung_mit_NTC_und_PTC|13]] [[Arduino:_Programmier-Challenge_II_WS_WS_24/25|14]]<br> | ||
→ zurück zum Hauptartikel: [[ | → zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_24/25|Arduino Praxiseinstieg]] |
Aktuelle Version vom 23. Oktober 2024, 08:58 Uhr
Autor: | Prof. Dr.-Ing. Schneider |
Modul: | Praxismodul I |
Lektion 4: | Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester |
Inhalt
- Einbindung von digitalen und analogen Sensoren:
- PIR-Bewegungssensor (HC-SR501)
- Fotowiderstand (LDR)
- Drehpotentiometer (Poti)
- Visualisierung von Messwerten im seriellen Plotter.
Lernziele
Nach Durchführung dieser Lektion
- können die Funktionsweise der 3 Sensoren (PIR-Bewegungssensor, Fotowiderstand, Drehpotentiometer) erläutern.
- können Sie die Sensoren korrekt (elektrisch) anschließen.
- können Sie die Sensordaten im Seriellen Plotter anzeigen und auswerten.
Lernzielkontrolle
- Wie funktioniert der PIR-Bewegungssensor technisch? Auf welche Strahlung reagiert er? Welche Einstellmöglichkeiten besitzt er?
- Wie funktioniert der Fotowiderstand technisch? Wozu dienen die Widerstände?
- Wie funktioniert das Drehpotentiometer technisch? Wie lässt sich das Poti kalibrieren?
- Wie geben Sie mehrere Signale im Seriellen Plotter aus?
- Wurde der Quelltext durch Header und Kommentare aufgewertet?
- Wurden jedes Programm mittels PAP geplant?
- Wurde auf
magic numbers
verzichtet? - Wurde die Programmierrichtlinie eingehalten?
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_04.pdf
Tutorials
- Using the Serial Plotter Tool
- Arduino Befehlsübersicht
- PIR-Sensor - HC-SR501
- Fotowiderstand LDR
- Arduino-Bibliothek einbinden
- Software-Planung mit PAP
- Header Beispiele für Quelltext in C
Demo
Versuchsvorbereitung
- Studieren Sie das Tutorial Using the Serial Plotter Tool und nutzen Sie das Demo DemoSerialPlotter.ino, um Daten im Seriellen Plotter auszugeben.
- Recherchieren Sie die Funktion der Sensoren (PIR-Bewegungssensor, LDR, Drehpoti) anhand von Fachliteratur.
- Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
- Planen Sie die Software via PAP.
- Beantworten Sie die Lernzielkontrollfragen.
- Sichern Sie Ihre Unterlagen in SVN.
Versuchsdurchführung
Aufgabe 4.1: Lernzielkontrolle
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.
Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_04.pdf
Aufgabe 4.2: Der Bewegungsmelder HC-SR501
Ein Piezo-Lautsprecher soll piepen, sobald eine Bewegung registriert wird.
Nützliche Befehle: pinmode(), digitalRead(), digitalWrite(), delay, if..else
Arbeitsergebnisse in SVN: BewegungsmelderMitPiezo.ino
Musterlösung |
Bewegungsmelder HC-SR501 |
Aufgabe 4.3: Fotowiderstand (LDR) am Arduino auslesen
Eine LED soll leuchten, wenn es dunkel wird bzw. wenn ein Fotowiderstand abgedeckt wird.
Nützliche Befehle: pinmode(), analogRead(), digitalWrite(), if..else
Arbeitsergebnisse in SVN: LDRSteuertLED.ino
Musterlösung |
Funduino: Fotowiderstand (LDR) am Arduino auslesen |
Aufgabe 4.4: Drehregler - Drehpotentiometer
Eine LED soll blinken. Die Blinkgeschwindigkeit soll mit einem Drehregler eingestellt werden. Zeigen Sie den Wert des Drehpotentiometers sowie den Wert des LED-Ports (z. B. 13) im Serial Plotter aus.
Nützliche Befehle: pinmode(), analogRead(), analogWrite(), delay(), map()
Arbeitsergebnisse in SVN: PotiSteuertLED.ino
Tutorial |
Using the Serial Plotter Tool |
DemoSerialPlotter.ino
|
/* Variablen deklarieren */
int Zufallsvariable_s16 = 0;
static const int KONSTANTE_s16 = 500;
static const int BAUDRATE_s16 = 9600; // 9600 Baud
void setup() {
Serial.begin(BAUDRATE_s16); // Serielle Ausgabe mit 9600 Baud starten
}
void loop() {
Zufallsvariable_s16 = random(0, 1000); // Zufallsvariable erzeugen
Serial.print("Variable 1:");
Serial.print(Zufallsvariable_s16);
Serial.print(","); // Werte mit Komma trennen
Serial.print("Variable 2:");
Serial.println(KONSTANTE_s16); // CRLF oder LF
}
|
Musterlösung |
Potentiometer zum Regeln der Blinkgeschwindigkeit einer LED verwenden |
Aufgabe 4.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