Arduino: Sensoren einlesen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(29 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]]
{|
{| class="wikitable"
|-
|-
| '''Autor:'''  || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
| '''Autor:'''  || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
Zeile 24: 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 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?
# 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?
# 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>
== Tutorials ==
== Tutorials ==
* [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool]
* [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]
* [https://www.arduino.cc/reference/de/ Arduino Befehlsübersicht]
* [[Fotowiderstand_LDR|Fotowiderstand LDR]]
* [[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 ==
== Demo ==
Zeile 44: Zeile 45:
== 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/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSerialPlotter/DemoSerialPlotter.ino DemoSerialPlotter.ino], um Daten im Seriellen Plotter auszugeben.
# 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, [[Fotowiderstand_LDR|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 51: Zeile 52:


== Versuchsdurchführung ==
== Versuchsdurchführung ==
=== Aufgabe 4.1: Lernzielkontrolle ===
=== Aufgabe 4.1: Besprechung der Versuchsvorbereitung ===
Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.
Diskutieren Sie mit Prof. Schneider die Ergebnis Ihrer Vorbereitung.  
 
'''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|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>
Zeile 85: Zeile 84:


=== 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.&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>
Zeile 97: Zeile 96:
|}
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Demo&thinsp;</strong>
| <strong>[https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSerialPlotter/DemoSerialPlotter.ino <code>DemoSerialPlotter.ino</code>]&thinsp;</strong>
|-
|-
| [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSerialPlotter/DemoSerialPlotter.ino SVN: DemoSerialPlotter.ino]
| <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 111: Zeile 129:


=== Aufgabe 4.5: Nachhaltige Doku ===
=== Aufgabe 4.5: Nachhaltige Doku ===
Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN.
* Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN.
* Wurden die Regeln für den Umgang mit SVN eingehalten?
* Beachten Sie dabei die [[Software_Anforderungen|Software Anforderungen]].
* Wurde die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie]] eingehalten?
 
* Wurde nachhaltig dokumentiert?
'''Arbeitsergebnisse''' in SVN: <code>SVN Log</code>, <code>Lernzielkontrolle_Termin_04.pdf</code>
* 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>


== FAQ ==
== [[Datei:Lektionen.jpg|60px]] Ausblick zur nächsten Lektion ==
* Muss ich die Lösungen selbst programmieren? '''Ja, nur Eigenleistung wird bewertet.'''
In der nächsten Lektion wird mit Licht eine Entfernung gemessen. Die damit verbundenen Themen sind:
* Darf ich die Musterlösung 1:1 kopieren und als meine Leistung ausgeben? '''Nein, das ist ein [[Software_Plagiat|Plagiat]] und wird als Täuschungsversuch gewertet.'''
* 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 ==
Zeile 133: Zeile 152:


----
----
→ 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_23/24|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_I_WS_23/24|14]]<br>
→ 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_23/24|Arduino Praxiseinstieg]]
→ 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