Arduino: Sensoren einlesen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(53 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Kategorie:Arduino]]
[[Kategorie:Arduino]]
[[Datei:Lernset - Einsteiger Kit für Arduino.jpg|thumb|rigth|450px|Abb. 1: Lernset - Einsteiger Kit für Arduino]]
[[Datei:R20-A-4-2.jpg|thumb|rigth|300px|Abb. 1: Bewegungsmelder, PIR-Sensor - HC-SR501]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
{| class="wikitable"
'''Modul:''' Praxismodul I<br>
|-
'''Lehrveranstaltung:''' Mechatronik, Informatikpraktikum 1, 1. Semester, Wintersemester
| '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
|-
| '''Modul:''' || Praxismodul I
|-
| '''Lektion 4:''' || Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester
|}


== Inhalt ==
== Inhalt ==
Zeile 10: Zeile 15:
** Fotowiderstand (LDR)
** Fotowiderstand (LDR)
** Drehpotentiometer (Poti)
** Drehpotentiometer (Poti)
* Visualisierung von Messwerten im seriellen Plotter.


== Lernziele==
== Lernziele==
Zeile 15: Zeile 21:
* können die Funktionsweise der 3 Sensoren (PIR-Bewegungssensor, Fotowiderstand, Drehpotentiometer) erläutern.
* 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 Sensoren korrekt (elektrisch) anschließen.
* können Sie die Sensordaten anzeigen und auswerten.
* können Sie die Sensordaten im Seriellen Plotter anzeigen und auswerten.


== 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 der Drehpotentiometer technisch? Wie lässt sich das Poti kalibrieren?
# Wie funktioniert das [https://de.wikipedia.org/wiki/Potentiometer Drehpotentiometer] technisch? Wie lässt sich das Poti kalibrieren?
# Wurde der Quelltext durch Header und Kommentare aufgewertet?
# Wie geben Sie mehrere Signale im Seriellen Plotter aus?
# Wurden jedes Programm mittels PAP geplant?
# Wurde auf <code>magic numbers</code> verzichtet?
# Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]] eingehalten?


'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_04.pdf</code>
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_04.pdf</code>


== Versuchsdurchführung ==
== Tutorials ==
=== Aufgabe 4.1: Lernzielkontrolle ===
* [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool]
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.
* [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]


'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_04.pdf</code>
== 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/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSerialPlotter/DemoSerialPlotter.ino DemoSerialPlotter.ino], um Daten im Seriellen Plotter auszugeben.
# 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.
# Planen Sie die Software via PAP.
# Beantworten Sie die Lernzielkontrollfragen.
# Sichern Sie Ihre Unterlagen in SVN.


== Versuchsdurchführung ==
=== Aufgabe 4.1: Besprechung der Versuchsvorbereitung ===
Diskutieren Sie mit Prof. Schneider die Ergebnis Ihrer Vorbereitung.
----
=== 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|Piezo-Lautsprecher]] soll piepen, sobald eine Bewegung registriert wird.


'''Nützliche Befehle''': <code>pinmode(), digitalRead(), digitalWrite(), delay, if..else</code>
'''Nützliche Befehle''': <code>pinmode(), digitalRead(), digitalWrite(), delay, if..else</code>


'''Arbeitsergebnisse''' in SVN: <code>BewegungsmelderMitPiezo.ino</code>
'''Arbeitsergebnisse''' in SVN: <code>BewegungsmelderMitPiezo.ino</code>
<div class="mw-collapsible mw-collapsed">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
| <strong>Musterlösung&thinsp;</strong>
'''Musterlösung:''' [https://funduino.de/nr-8-bewegungsmelder]
|-
</div>
| [https://funduino.de/nr-8-bewegungsmelder Bewegungsmelder HC-SR501]
|-
|}
----


=== Aufgabe 4.3: Fotowiderstand (LDR) am Arduino auslesen ===
=== Aufgabe 4.3: Fotowiderstand (LDR) am Arduino auslesen ===
Zeile 51: Zeile 75:


'''Arbeitsergebnisse''' in SVN: <code>LDRSteuertLED.ino</code>
'''Arbeitsergebnisse''' in SVN: <code>LDRSteuertLED.ino</code>
<div class="mw-collapsible mw-collapsed">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
| <strong>Musterlösung&thinsp;</strong>
'''Musterlösung:''' [https://funduino.de/nr-6-fotowiderstand]
|-
</div>
| [https://funduino.de/nr-6-fotowiderstand Funduino: Fotowiderstand (LDR) am Arduino auslesen]
|-
|}
----


=== 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 Drehreglers sowie den Wert des LED-Ports (z.&thinsp;B. 13) im Seriel Plotter aus.
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.&thinsp;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>


'''Arbeitsergebnisse''' in SVN: <code>PotiSteuertLED.ino</code>
'''Arbeitsergebnisse''' in SVN: <code>PotiSteuertLED.ino</code>
<div class="mw-collapsible mw-collapsed">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
'''Tutorial:''' [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool]
| <strong>Tutorial&thinsp;</strong>
 
|-
'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSerialPlotter/DemoSerialPlotter.ino SVN: DemoSerialPlotter.ino]
| [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool]
 
|-
'''Musterlösung:''' [https://funduino.de/nr-7-potentiometer]
|}
</div>
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSerialPlotter/DemoSerialPlotter.ino <code>DemoSerialPlotter.ino</code>]&thinsp;</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


=== Aufgabe 4.5: Nachhaltige Doku ===
void setup() {
Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN.
Serial.begin(BAUDRATE_s16);            // Serielle Ausgabe mit 9600 Baud starten
* Wurden die Regeln für den Umgang mit SVN eingehalten?
}
* Wurde die [[Medium:Programmierrichtlinie.pdf|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: <code>SVN Log</code>
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>


== Bewertung ==
{| class="wikitable"
|-
|-
| '''Aufgabe'''|| '''Punkte'''
|}
|-
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| 4.1|| 2
| <strong>Musterlösung&thinsp;</strong>
|-
| 4.2|| 2
|-
|-
| 4.3|| 2
| [https://funduino.de/nr-7-potentiometer Potentiometer zum Regeln der Blinkgeschwindigkeit einer LED verwenden]
|-
| 4.4|| 2
|-
| 4.5|| 2
|-
|-
|}
|}
----
=== Aufgabe 4.5: Nachhaltige Doku ===
* Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN.
* Beachten Sie dabei die [[Software_Anforderungen|Software Anforderungen]].
'''Arbeitsergebnisse''' in SVN: <code>SVN Log</code>, <code>Lernzielkontrolle_Termin_04.pdf</code>
== [[Datei:Lektionen.jpg|60px]] Ausblick zur nächsten Lektion ==
In der nächsten Lektion wird mit Licht eine Entfernung gemessen. Die damit verbundenen Themen sind:
* Deklaration und Verwendung von Arrays
* Kapselung einer Teilaufgabe in einer Funktion
* Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
* Einlesen des Entfernungssensors mit dem Arduino
* Darstellung der Messwerte
* Kennlinienkalibrierung
== Literatur ==
== Literatur ==
# Brühlmann, T.: ''Arduino Praxiseinstieg''. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=125816&query_desc=kw%2Cwrdl%3A%20arduino HSHL-Bib], [https://learning.oreilly.com/library/view/arduino-praxiseinstieg/9783747500569/ O'Reilly-URL]
# Brühlmann, T.: ''Arduino Praxiseinstieg''. Heidelberg: mitp, 4. Auflage 2019. ISBN 978-3-7475-0056-9. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=125816&query_desc=kw%2Cwrdl%3A%20arduino HSHL-Bib], [https://learning.oreilly.com/library/view/arduino-praxiseinstieg/9783747500569/ O'Reilly-URL]
Zeile 105: Zeile 152:


----
----
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg|Arduino Praxiseinstieg]]
→ 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_24/25|14]]<br>
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_25/26|Arduino Praxiseinstieg]]<br>
→ Haben Sie Fragen? [[Informatik Praktikum FAQ]]<br>

Aktuelle Version vom 19. März 2026, 10:11 Uhr

Abb. 1: Bewegungsmelder, PIR-Sensor - HC-SR501
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

  1. Wie funktioniert der PIR-Bewegungssensor technisch? Auf welche Strahlung reagiert er? Welche Einstellmöglichkeiten besitzt er?
  2. Wie funktioniert der Fotowiderstand technisch? Wozu dienen die Widerstände?
  3. Wie funktioniert das Drehpotentiometer technisch? Wie lässt sich das Poti kalibrieren?
  4. Wie geben Sie mehrere Signale im Seriellen Plotter aus?

Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_04.pdf

Tutorials

Demo

Versuchsvorbereitung

  1. Studieren Sie das Tutorial Using the Serial Plotter Tool und nutzen Sie das Demo DemoSerialPlotter.ino, um Daten im Seriellen Plotter auszugeben.
  2. Recherchieren Sie die Funktion der Sensoren (PIR-Bewegungssensor, LDR, Drehpoti) anhand von Fachliteratur.
  3. Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
  4. Planen Sie die Software via PAP.
  5. Beantworten Sie die Lernzielkontrollfragen.
  6. Sichern Sie Ihre Unterlagen in SVN.

Versuchsdurchführung

Aufgabe 4.1: Besprechung der Versuchsvorbereitung

Diskutieren Sie mit Prof. Schneider die Ergebnis Ihrer Vorbereitung.


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


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


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


Aufgabe 4.5: Nachhaltige Doku

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

Arbeitsergebnisse in SVN: SVN Log, Lernzielkontrolle_Termin_04.pdf


Ausblick zur nächsten Lektion

In der nächsten Lektion wird mit Licht eine Entfernung gemessen. Die damit verbundenen Themen sind:

  • Deklaration und Verwendung von Arrays
  • Kapselung einer Teilaufgabe in einer Funktion
  • Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
  • Einlesen des Entfernungssensors mit dem Arduino
  • Darstellung der Messwerte
  • Kennlinienkalibrierung

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
→ Haben Sie Fragen? Informatik Praktikum FAQ