Arduino: Infrarotsensor einlesen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(82 dazwischenliegende Versionen desselben Benutzers 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:SHARP IR Abstandssensor GP2Y0A21YK0F.png|thumb|rigth|300px|Abb. 1: IR-Abstandssensor Sharp GP2Y0A41SK0F]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
{|
'''Modul:''' Praxismodul I<br>
|-
'''Lehrveranstaltung:''' Mechatronik, Informatikpraktikum 1, 1. Semester, Wintersemester
| '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
|-
| '''Modul:''' || Praxismodul I
|-
| '''Lektion 5:''' || Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester
|}


== Inhalt ==
== Inhalt ==
* Deklaration und Verwendung von Arrays
* Kapselung einer Teilaufgabe in einer Funktion
* Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
* Funktion des Sharp Entfernungssensors GP2Y0A41SK0F
* Einlesen des Entfernungssensors mit dem Arduino
* Einlesen des Entfernungssensors mit dem Arduino
* Darstellung der Messwerte
* Darstellung der Messwerte
* Kennlinienkalibrierung
* Kennlinienkalibrierung
 
== Video Tutorials==
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tutorial Arrays&thinsp;</strong>
|-
|
<iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=52d1eee9-b0f9-455a-80db-af3f00f2529b&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe>
|-
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tutorial: Lookup Table&thinsp;</strong>
|-
|
<iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=98958e23-9c36-48cf-b912-af3c00601ce1&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe>
|-
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tutorial: Lookup Table programmieren&thinsp;</strong>
|-
|
<iframe key="panopto" path="/Panopto/Pages/Embed.aspx?id=3b45bf84-7d4e-49e5-bc0c-af4600ef47ee&autoplay=false&offerviewer=true&showtitle=true&showbrand=true&captions=false&interactivity=all" height="405" width="720" style="border: 1px solid #464646;" allowfullscreen allow="autoplay"></iframe>
|-
|}
== Lernziele==
== Lernziele==
Nach Durchführung dieser Lektion
Nach Durchführung dieser Lektion
* können Sie den Sensor korrekt (elektrisch) anschließen.
* können Sie den IR-Sensor korrekt (elektrisch) anschließen.
* können die Messwerte mit dem Serial Plotter der Arduino IDE anzeigen.
* können die Messwerte mit dem Serial Plotter der Arduino IDE anzeigen.
* können Sie ein Array anlegen und auf die Array-Elemente zugreifen.
* können Sie funktional programmieren.
* können Sie die Sensordaten in die gemessene Entfernung umrechnen.
* können Sie die Sensordaten in die gemessene Entfernung umrechnen.
* können Sie die Messwerte charakterisieren.
* können Sie die Messwerte charakterisieren.
== Vorbereitung ==


== Lernzielkontrolle ==
== Lernzielkontrolle ==
# Welcher Primärsensor kommt im Sharp GP2Y0A21YK0F zum Einsatz?
# Wie funktioniert der Sensor GP2Y0A41SK0F technisch?  
# Wie funktioniert der Sensor GP2Y0A41SK0F technisch?  
# Welchen Primärsensor verwendet der Sensor GP2Y0A41SK0F?
# Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße <code>U1</code>?
# Wie funktioniert der Fotowiderstand technisch? Wozu dienen die Widerstände?
# Wie wird die Ausgangsgröße (<code>U1</code>) digitalisiert (<code>D1</code>)?
# Wie funktioniert der Drehpotentiometer technisch? Wie lässt sich das Poti kalibrieren?
# Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße <code>D1</code> in die Distanz <code>d</code> umgerechnet?
# Wurde der Quelltext durch Header und Kommentare aufgewertet?
# Wurde der Quelltext durch Header und Kommentare aufgewertet?
# Wurden jedes Programm mittels PAP geplant?
# Wurden jedes Programm mittels PAP geplant?
Zeile 32: Zeile 60:


'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
== Tutorials ==
* [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Arduino: Using the Serial Plotter Tool]
* [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ]
* [[Sharp_GP2Y0A41SK0F| Wiki: SHARP IR Abstandsensor]]
* [[Arduino:_Bibliothek_einbinden|Wiki: HSHL-Bibliothek einbinden]]
* [https://www.arduino.cc/reference/de/ Arduino Befehlsübersicht]
== Demos ==
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoArray/DemoArray.ino DemoArray.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoSharpIR/DemoSharpIR.ino DemoSharpIR.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoLookupTable/DemoLookupTable.ino DemoLookupTable.ino]
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Arduino/ArduinoLibOrdner/ArduinoUnoR3/examples/DemoLookupTableIR/DemoLookupTableIR.ino DemoLookupTableIR.ino]
== Versuchsvorbereitung ==
[[Datei:Batterie-Tester.jpg |thumb|rigth|300px|Abb. 2: Batterie-Tester]]
# Studieren Sie die Tutorials und Demos.
# Studieren Sie das [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/Demos/Arduino/DemoSharpIR/DemoSharpIR.ino DemoSharpIR.ino], um Daten im Seriellen Plotter auszugeben.
# Recherchieren Sie die Funktion des Sensors anhand von Fachliteratur und des [[Medium:GP2Y0A41SK0F.pdf|Datenblatts]] oder [[Sharp_GP2Y0A41SK0F|Wiki-Artikels]].
# Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
# Nutzen Sie die Abbildung auf Seite 4 des [[Medium:GP2Y0A41SK0F.pdf|Datenblatts]], um eine Tabelle Spannung/Distanz aufzustellen (vgl. Tab. 1).
# Machen Sie sich mit der Funktion der analogen Eingänge vertraut: [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ]. Messen Sie gemäß Abb. 2 die Spannung einen AA Batterie in V. (Hinweis: KEINE 9-V-BLOCK nutzen! Spannung von mehr als 5&thinsp;V können den '''Arduino zerstören'''.)
# Nutzen Sie die [https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/ Arduino Referenz: <code>analogRead()</code> ] und erweitern Sie Ihre Tabelle um die Spalte Digitalwert <code>D1</code> (vgl. Tab. 1).
# Planen Sie die Software via PAP.
# Beantworten Sie die Lernzielkontrollfragen.
# Sichern Sie Ihre Unterlagen in SVN.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung&thinsp;</strong>
|-
| '''Musterlösung:''' für den Batterie-Tester <br>
<syntaxhighlight lang="c" style="background-color: #EFF1C1; font-size:small">
const unsigned int AUFLOESUNG_u16 = 1023; //2^10-1
const float ARDUINO_SPANNUNG_f32  = 5.0;
void setup() {
  Serial.begin(BAUD_RATE);
}
void loop() {
  unsigned int Digitalwert_u16 = analogRead(A0); // Quantisierung der Apannung am Analogen Eingang A0
  Serial.print(ARDUINO_SPANNUNG_f32 * AUFLOESUNG_u16/Digitalwert_u16); // Umrechnung Digitalwert in V
  Serial.println("V");
</syntaxhighlight>
|-
|}
{| class="wikitable"
|+ style = "text-align: left"|Tabelle 1: Kennlinie des IR-Distanzsensors
|-
| '''Spannung <code>U1</code> in V'''|| '''Distanz <code>d</code> in cm'''|| '''Digitalwert <code>D1</code>'''
|-
| 3|| 3,6 || 614
|-
| 2.02|| 6 || 413
|-
| 0.82|| 16 || 168
|-
| ..|| .. || ..
|-
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Tipps&thinsp;</strong>
|-
|
* Nutzen Sie Werte über den gesamten Wertebereich [0.2&thinsp;V .. 3.2&thinsp;V].
* Sie können die Werte auch durch reale Messungen auf ein statisches Ziel ermitteln.
* Umrechnungsformel: <math>D_1 = U_1\cdot \frac{1023}{5\,V}</math>
|-
|}


== Versuchsdurchführung ==
== Versuchsdurchführung ==
Zeile 38: Zeile 133:


'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
'''Arbeitsergebnisse''' in SVN: <code>Lernzielkontrolle_Termin_05.pdf</code>
----


=== Aufgabe 5.2: Der Bewegungsmelder HC-SR501 ===
=== Aufgabe 5.2: Der Abstandssensor Sharp GP2Y0A21YK0F ===
Ein Piezo-Lautsprecher soll piepen, sobald eine Bewegung registriert wird.
# Setzen Sie Ihre geplante Software 1:1 um.
# Stellen Sie die Messwerte <code>D1</code> im Seriellen Monitor und Plotter dar.


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


'''Arbeitsergebnisse''' in SVN: <code>BewegungsmelderMitPiezo.ino</code>
'''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code>
<div class="mw-collapsible mw-collapsed">
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Demo&thinsp;</strong>
|-
|
'''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoSharpIR/DemoSharpIR.ino Demo: DemoSharpIR.ino]
|-
|}
----


'''Musterlösung:''' [https://funduino.de/nr-8-bewegungsmelder]
=== Aufgabe 5.3: Sensorkennlinie ===
</div>
# Erweitern Sie Ihr Programm <code>leseSharpIR.ino</code>. Rechnen Sie das Digitalwort <code>D1</code> in die Messdistanz <code>d</code> um.
# Stellen Sie die Distanz <code>d</code> im Seriellen Monitor und Plotter dar.
# Verifizieren Sie Ihr Ergebnis mit einem Gliedermaßstab.
# Was fällt Ihnen bei den Messwerten auf?


=== Aufgabe 5.3: Fotowiderstand (LDR) am Arduino auslesen ===
'''Nützliche Befehle''': <code>Serial.begin(), Serial.println(), analogRead(), LookupTable(), analogRead()</code>
Eine LED soll leuchten, wenn es dunkel wird bzw. wenn ein Fotowiderstand abgedeckt wird.


'''Nützliche Befehle''': <code>pinmode(), analogRead(), digitalWrite(), if..else</code>
'''Arbeitsergebnisse''' in SVN: <code>leseSharpIR.ino</code>
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Demo&thinsp;</strong>
|-
| '''Demo:''' [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Demos/Arduino/DemoLookupTable/DemoLookupTable.ino DemoLookupTable.ino]
|-
|}
----


'''Arbeitsergebnisse''' in SVN: <code>LDRSteuertLED.ino</code>
=== Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors ===
<div class="mw-collapsible mw-collapsed">
Bestimmen Sie die nachfolgenden Werte, um den IR-Sensor zu beschreiben
* [https://de.wikipedia.org/wiki/Messbereich Messbereich] in cm
* [https://de.wikipedia.org/wiki/Aufl%C3%B6sung_(Digitaltechnik) Auflösung] (Zeit, Distanz)
* [https://de.wikipedia.org/wiki/Empfindlichkeit_(Technik) Empfindlichkeit]


'''Musterlösung:''' [https://funduino.de/nr-6-fotowiderstand]
'''Nützliche Befehle''': <code>millis(), Serial.print(), Serial.println()</code>
</div>


=== Aufgabe 5.4: Drehregler - Drehpotentiometer ===
'''Arbeitsergebnisse''' in SVN: <code>Sensorcharakterisierung.pdf</code>
Eine LED soll blinken. Die Blinkgeschwindigkeit soll mit einem Drehregler eingestellt werden.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
 
| <strong>Musterlösung&thinsp;</strong>
'''Nützliche Befehle''': <code>pinmode(), analogRead(), analogWrite(), delay(), map()</code>
|-
 
|
'''Arbeitsergebnisse''' in SVN: <code>PotiSteuertLED.ino</code>
* Den Messbereich beschreibt der kleinste und größte Messwert [3,50]cm.
<div class="mw-collapsible mw-collapsed">
* Die Auflösung ist der kleinstmögliche Werteschritt. Hier Zeit: 5-7&thinsp;ms, Spannung: 0,0048V
 
* Die Empfindlichkeit berechnet sich aus <math>E=\frac{\Delta y}{\Delta x}</math>. Im nichtlinearen Fall entsprich dies der 1. Ableitung.
'''Musterlösung:''' [https://funduino.de/nr-7-potentiometer]
|-
</div>
|}
----


=== Aufgabe 5.5: Nachhaltige Doku ===
=== Aufgabe 5.5: Nachhaltige Doku ===
Zeile 83: Zeile 199:
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>


== Bewertung ==
== FAQ ==
{| class="wikitable"
* 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 [[Software_Plagiat|Plagiat]] und wird als Täuschungsversuch gewertet.'''
| '''Aufgabe'''|| '''Punkte'''
 
|-
| 5.1|| 2
|-
| 5.2|| 2
|-
| 5.3|| 2
|-
| 5.4|| 2
|-
| 5.5|| 2
|-
|}
== Tutorials ==
* [https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-serial-plotter Using the Serial Plotter Tool]
* [[SHARP_IR_Abstandsensor_GP2Y0A21YK0F| Wiki: SHARP IR Abstandsensor]]
== Demos ==
* []
== 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]
# Brühlmann, T.: ''Sensoren im Einsatz mit Arduino''. Frechen : mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=130719&query_desc=kw%2Cwrdl%3A%20Br%C3%BChlmann HSHL-Bib], [https://learning.oreilly.com/library/view/sensoren-im-einsatz/9783958451520/?ar O'Reilly]
# Brühlmann, T.: ''Sensoren im Einsatz mit Arduino''. Frechen: mitp Verlag, 1. Auflage 2017. ISBN: 9783958451520. URL: [https://hshl.bsz-bw.de/cgi-bin/koha/opac-detail.pl?biblionumber=130719&query_desc=kw%2Cwrdl%3A%20Br%C3%BChlmann HSHL-Bib], [https://learning.oreilly.com/library/view/sensoren-im-einsatz/9783958451520/?ar O'Reilly]
# Snieders, R.: ''ARDUINO lernen''. Nordhorn: 8. Auflage 2022. URL: [https://funduino.de/vorwort https://funduino.de/vorwort]
# Snieders, R.: ''ARDUINO lernen''. Nordhorn: 8. Auflage 2022. URL: [https://funduino.de/vorwort https://funduino.de/vorwort]
# Schneider, U.: ''Programmierrichtlinie für für die Erstellung von Software in C.'' Lippstadt, 1. Auflage 2022. [[Medium:Programmierrichtlinie.pdf|PDF-Dokument (212&thinsp;kb)]]
# Schneider, U.: ''Programmierrichtlinie für für die Erstellung von Software in C.'' Lippstadt: 1. Auflage 2022. [[Medium:Programmierrichtlinie.pdf|PDF-Dokument (212&thinsp;kb)]]
# Sharp: ''GP2Y0A41SK0F''. URL: [https://de.farnell.com/sharp/gp2y0a41sk0f/distanzmesssensor/dp/1618431]. [[Medium:GP2Y0A41SK0F.pdf|PDF-Dokument (858&thinsp;kb)]]
# Sharp: ''GP2Y0A41SK0F''. URL: [https://de.farnell.com/sharp/gp2y0a41sk0f/distanzmesssensor/dp/1618431]. [[Medium:GP2Y0A41SK0F.pdf|Datenblatt (858&thinsp;kb)]]


----
----
→ 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_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_II_WS_23/24|14]]<br>
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_23/24|Arduino Praxiseinstieg]]

Aktuelle Version vom 28. Oktober 2023, 10:02 Uhr

Abb. 1: IR-Abstandssensor Sharp GP2Y0A41SK0F
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lektion 5: Mechatronik, Informatikpraktikum, 1. Semester, Wintersemester

Inhalt

  • 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

Video Tutorials

Lernziele

Nach Durchführung dieser Lektion

  • können Sie den IR-Sensor korrekt (elektrisch) anschließen.
  • können die Messwerte mit dem Serial Plotter der Arduino IDE anzeigen.
  • können Sie ein Array anlegen und auf die Array-Elemente zugreifen.
  • können Sie funktional programmieren.
  • können Sie die Sensordaten in die gemessene Entfernung umrechnen.
  • können Sie die Messwerte charakterisieren.

Lernzielkontrolle

  1. Welcher Primärsensor kommt im Sharp GP2Y0A21YK0F zum Einsatz?
  2. Wie funktioniert der Sensor GP2Y0A41SK0F technisch?
  3. Was misst der Sensor GP2Y0A41SK0F? Was ist seine Ausgangsgröße U1?
  4. Wie wird die Ausgangsgröße (U1) digitalisiert (D1)?
  5. Auf welchen Wegen lässt sich die digitalisierte Ausgangsgröße D1 in die Distanz d umgerechnet?
  6. Wurde der Quelltext durch Header und Kommentare aufgewertet?
  7. Wurden jedes Programm mittels PAP geplant?
  8. Wurde auf magic numbers verzichtet?
  9. Wurde die Programmierrichtlinie eingehalten?

Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_05.pdf

Tutorials

Demos

Versuchsvorbereitung

Abb. 2: Batterie-Tester
  1. Studieren Sie die Tutorials und Demos.
  2. Studieren Sie das Using the Serial Plotter Tool und nutzen Sie das Demo DemoSharpIR.ino, um Daten im Seriellen Plotter auszugeben.
  3. Recherchieren Sie die Funktion des Sensors anhand von Fachliteratur und des Datenblatts oder Wiki-Artikels.
  4. Bauen Sie die Schaltungen zur Auswertung der Sensoren auf.
  5. Nutzen Sie die Abbildung auf Seite 4 des Datenblatts, um eine Tabelle Spannung/Distanz aufzustellen (vgl. Tab. 1).
  6. Machen Sie sich mit der Funktion der analogen Eingänge vertraut: Arduino Referenz: analogRead() . Messen Sie gemäß Abb. 2 die Spannung einen AA Batterie in V. (Hinweis: KEINE 9-V-BLOCK nutzen! Spannung von mehr als 5 V können den Arduino zerstören.)
  7. Nutzen Sie die Arduino Referenz: analogRead() und erweitern Sie Ihre Tabelle um die Spalte Digitalwert D1 (vgl. Tab. 1).
  8. Planen Sie die Software via PAP.
  9. Beantworten Sie die Lernzielkontrollfragen.
  10. Sichern Sie Ihre Unterlagen in SVN.
Tabelle 1: Kennlinie des IR-Distanzsensors
Spannung U1 in V Distanz d in cm Digitalwert D1
3 3,6 614
2.02 6 413
0.82 16 168
.. .. ..

Versuchsdurchführung

Aufgabe 5.1: Lernzielkontrolle

Präsentieren Sie Prof. Schneider das Ergebnis der Lernzielkontrolle.

Arbeitsergebnisse in SVN: Lernzielkontrolle_Termin_05.pdf


Aufgabe 5.2: Der Abstandssensor Sharp GP2Y0A21YK0F

  1. Setzen Sie Ihre geplante Software 1:1 um.
  2. Stellen Sie die Messwerte D1 im Seriellen Monitor und Plotter dar.

Nützliche Befehle: Serial.begin(), Serial.println(), analogRead()

Arbeitsergebnisse in SVN: leseSharpIR.ino


Aufgabe 5.3: Sensorkennlinie

  1. Erweitern Sie Ihr Programm leseSharpIR.ino. Rechnen Sie das Digitalwort D1 in die Messdistanz d um.
  2. Stellen Sie die Distanz d im Seriellen Monitor und Plotter dar.
  3. Verifizieren Sie Ihr Ergebnis mit einem Gliedermaßstab.
  4. Was fällt Ihnen bei den Messwerten auf?

Nützliche Befehle: Serial.begin(), Serial.println(), analogRead(), LookupTable(), analogRead()

Arbeitsergebnisse in SVN: leseSharpIR.ino


Aufgabe 5.4: Charakterisierung des Sharp Abstandssensors

Bestimmen Sie die nachfolgenden Werte, um den IR-Sensor zu beschreiben

Nützliche Befehle: millis(), Serial.print(), Serial.println()

Arbeitsergebnisse in SVN: Sensorcharakterisierung.pdf


Aufgabe 5.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

  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)
  5. Sharp: GP2Y0A41SK0F. URL: [1]. Datenblatt (858 kb)

→ Termine 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
→ zurück zum Hauptartikel: Arduino Praxiseinstieg