Arduino: IR-Theremin: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung Markierung: Zurückgesetzt |
|||
| Zeile 1: | Zeile 1: | ||
[[ | [[Datei:Arduino Uno R3.jpg|thumb|rigth|400px|Abb. 1: Arduino Uno R3]] | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| '''Autor:'''|| [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | | '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | ||
|- | |- | ||
| '''Modul:''' ||Praxismodul I | | '''Modul:''' || Praxismodul I | ||
|- | |- | ||
| '''Lektion | | '''Gruppe:''' || B | ||
|- | |||
| '''Lektion 7:''' || Mechatronik, Informatikpraktikum, 1. Semester | |||
|- | |||
| '''SVN-URL:''' || https://svn.hshl.de/svn/Informatikpraktikum_1/trunk | |||
|} | |} | ||
= | = 📖 Inhalt = | ||
In dieser Lektion werden die grundlegenden Konzepte der Programmierung eines Arduino Uno eingeführt. Anhand einfacher praktischer Aufgaben lernen die Studierenden, ein Arduino-Programm zu erstellen, zu simulieren und schrittweise zu erweitern. | |||
Zunächst werden die Entwicklungsumgebung Wokwi und die grundlegende Programmstruktur mit den Funktionen <code>setup()</code> und <code>loop()</code> kennengelernt. Anschließend werden digitale Ausgänge zur Ansteuerung von LEDs und digitale Eingänge zum Einlesen von Tastern verwendet. | |||
Darauf aufbauend werden einfache Programmabläufe mit Variablen, bedingten Verzweigungen und zeitlichen Verzögerungen umgesetzt. Abschließend werden analoge Eingangswerte mit einem Potentiometer erfasst und mithilfe eines PWM-Signals zur Einstellung der LED-Helligkeit verwendet. | |||
Ein weiterer Bestandteil der Lektion ist die Einführung in die Versionsverwaltung mit Subversion (SVN). Die Studierenden lernen, Projekte aus dem zentralen Repository auszuchecken, Änderungen zu speichern (<code>Commit</code>) und den aktuellen Projektstand zu aktualisieren (<code>Update</code>). | |||
Die Aufgaben werden schrittweise bearbeitet und durch eigenständige Änderungen am Programm ergänzt. Die Ergebnisse werden in Wokwi simuliert, überprüft und für die weitere Bearbeitung in SVN gesichert. | |||
== Eingeführte Begriffe und Konzepte == | |||
Die Bedienoberfläche uSVN und der Client Turtoise SVN wird vorgestellt. | |||
Der Umgang mit den wesentlichen Funktionen wird geübt. | |||
Neue Begriffe sind: | |||
*<code>Checkout</code> | |||
*<code>Commit</code> | |||
*<code>Update</code> | |||
*<code>Tag</code> | |||
*<code>Branch</code> | |||
*<code>Trunk</code> | |||
*<code>Show Log</code> | |||
*<code>Repro-browser</code> | |||
*<code>Revert</code> | |||
*<code>Clean up</code> | |||
*<code>Get lock</code> | |||
*<code>Merge</code> | |||
*<code>Diff</code> | |||
Neue Arduino-Begriffe sind: <code>Sketch</code>, <code>Serial.begin()</code>, <code>Serial.print()</code>, <code>Serial.println()</code>, <code>pinMode()</code>, <code>digitalWrite()</code>, <code>delay()</code> | |||
== | == Voraussetzungen == | ||
Grundlagen der PC-Bedienung sind erforderlich. | |||
== 🎯 Lernziele == | |||
Nach Durchführung dieser Lektion können die Studierenden: | |||
* mit der Versionskontrolle SVN umgehen. | |||
* die grundlegende Struktur eines Arduino-Programms erläutern und die Aufgaben der Funktionen <code>setup()</code> und <code>loop()</code> beschreiben. | |||
* digitale Ein- und Ausgänge konfigurieren und zur Ansteuerung von LEDs sowie zum Einlesen von Tastern verwenden. | |||
* einfache Programmabläufe mit Variablen und bedingten Verzweigungen (<code>if-else</code>) erstellen. | |||
* zeitliche Abläufe mithilfe der Funktion <code>delay()</code> programmieren. | |||
* analoge Eingangswerte mit analogRead() erfassen und deren Wertebereich interpretieren. | |||
* PWM-Signale zur Einstellung der LED-Helligkeit mit <code>analogWrite()</code> verwenden. | |||
* einfache Arduino-Programme selbstständig erstellen, simulieren, testen und gezielt verändern. | |||
* die Funktionsweise ihrer Programme anhand des Quellcodes und der zugehörigen Schaltung erklären. | |||
== | == 🚀 Getting Started == | ||
Den Einstieg in die Welt des Arduino in der Programmierung finden Sie hier: | |||
https://funduino.com/blogs/anleitungen/tagged/arduino-erste-schritte | |||
=== [[Datei:SchrittfuerSchritt.jpg|frameless|40px|baseline]] Schritt für Schritt Anleitungen === | |||
# [https://funduino.com/blogs/anleitungen/nr-1-blinkende-led LED ansteuern] | |||
# [https://funduino.com/blogs/anleitungen/nr-5-taster-am-arduino Ein Taster steuert eine LED] | |||
# [https://funduino.de/nr-2-wechselblinker Wechselblinker] | |||
# [https://funduino.com/blogs/anleitungen/nr-7-potentiometer Helligkeit einstellen] | |||
= | = ✅ Vorbereitung = | ||
== Vorbereitung Aufgabe 1: Umgang mit SVN == | |||
== Vorbereitung == | Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor. | ||
Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor. | # Studieren Sie folgenden Wiki-Artikel: [[Software Versionsverwaltung mit SVN]]. | ||
# | # Legen Sie auf Ihrem Rechner ein (lokales) SVN-Projektarchiv an, z. B. <code>D:\SVN\Gruppenordner</code>. | ||
# | # Checken Sie mit <code>SVN/Checkout</code> eine Arbeitskopie des Arbeitsordners aus. URL: <code>https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Gruppen/WS2627</code> | ||
# Schreiben Sie eine Textdatei <code>Test.txt</code> mit beliebigem Inhalt. | |||
# | # Sichern Sie Ihre Daten auf dem SVN Server mit <code>SVN/Commit</code>; Schreiben Sie einen passenden Log-Text. | ||
# | # Checken Sie eine 2. Arbeitskopie aus. | ||
# Sichern Sie | # Ändern Sie etwas in beiden Arbeitskopien gleichzeitig, aber in unterschiedlichen Zeilen | ||
# Sichern Sie beider Arbeitskopien auf dem SVN Server mit <code>SVN/Commit</code>; Schreiben Sie einen passenden Log-Text. | |||
# Analysieren Sie die Differenz mit <code>SVN/Diff</code>. | |||
# Ändern Sie etwas in beiden Arbeitskopien gleichzeitig, aber in GLEICHEN Zeilen | |||
# Sichern Sie beider Arbeitskopien auf dem SVN Server mit <code>SVN/Commit</code>; Schreiben Sie einen passenden Log-Text. | |||
# Lösen Sie den Konflikt mit: <code>SVN/Merge</code> | |||
# Legen Sie einen <code>SVN/Tag</code> an. | |||
'''Arbeitsergebnisse''' in SVN: | |||
== | * <code>Test.txt</code> mit Historie (s.o.) | ||
- | == Vorbereitung Aufgabe 2: Arduino Uno R3 == | ||
Befassen Sie sich mit der [[Arduino|Arduino-Uno Hardware]] und beantworten Sie die Fragen: | |||
''' | # Welches sind die technischen Daten eines Arduino UNO R3? | ||
## Mikrocontroller | |||
## Spannungsversorgung | |||
## Betriebsspannung | |||
## Digitale I/O | |||
'''Nützliche Befehle''': <code> | ## Analoge I/O | ||
-- | ## Strom pro digitalem Pin | ||
## Flash Memory | |||
## SRAM | |||
# | ## EEPROM | ||
## Taktfrequenz | |||
## Programmierschnittstelle | |||
# | ## ISCP-Schnittstelle | ||
# Recherchieren und erläutern Sie diese Fachbegriffe. | |||
# Untersuchen Sie die Steckplatine (Engl. breadboard). Wie ist es aufgebaut? | |||
'''Arbeitsergebnis''': <code>ArduinoUnoSpec.pdf</code> | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipp 1 </strong> | |||
|- | |||
| Die Lösungen finden Sie in der [https://store.arduino.cc/products/arduino-uno-rev3 Arduino Dokumentation.] | |||
|- | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipp 2 </strong> | |||
|- | |||
| Die Funktion der Steckplatine wird auf [https://de.wikipedia.org/wiki/Steckplatine Wikipedia] gut beschrieben. | |||
|- | |||
|} | |||
== Vorbereitung Aufgabe 3: LED ansteuern == | |||
Erstellen Sie in [https://wokwi.com/ Wokwi] eine Schaltung mit einem Arduino Uno und einer LED. | |||
Die LED soll: | |||
# 1 Sekunde leuchten. | |||
# 1 Sekunde ausgeschaltet sein. | |||
# Diesen Vorgang dauerhaft wiederholen. | |||
# Ändern Sie die Wartezeiten so, dass die LED doppelt so schnell blinkt. | |||
'''Arbeitsergebnis''' in SVN: <code>steureLED.ino</code> | |||
'''Nützliche Befehle''': [https://www.arduino.cc/reference/de/language/functions/digital-io/pinmode/ <code>pinMode()</code>], [https://www.arduino.cc/reference/de/language/functions/digital-io/digitalwrite/ <code>digitalWrite()</code>], [https://www.arduino.cc/reference/de/language/functions/time/delay/ <code>delay()</code>] | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipp </strong> | |||
|- | |||
| | |||
* Verwenden Sie Pin 8. | |||
* <code>pinMode()</code> legt fest, ob ein Pin Eingang oder Ausgang ist. | |||
* <code>digitalWrite()</code> schaltet einen Pin ein oder aus. | |||
* <code>delay()</code> erzeugt eine Wartezeit in Millisekunden. | |||
|- | |||
|} | |||
== Vorbereitung Aufgabe 4: Ein Taster steuert eine LED == | |||
Erweitern Sie in [https://wokwi.com/ Wokwi] die Schaltung um einen Taster. | |||
#Die LED soll leuchten, solange der Taster gedrückt wird. | |||
#Wird der Taster losgelassen, soll die LED ausgehen. | |||
#Ändern Sie das Programm so, dass die LED bei jedem Tastendruck ihren Zustand wechselt. | |||
'''Arbeitsergebnis''' in SVN: <code>schalteLED.ino</code> | |||
'''Nützlicher Befehl''': [https://docs.arduino.cc/language-reference/de/funktionen/digital-io/digitalread/ <code>digitalRead()</code>] | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipp </strong> | |||
|- | |||
| | |||
*Taster an Pin 2 anschließen. | |||
*Verwenden Sie <code>INPUT_PULLUP</code>. | |||
*Lesen Sie den Taster mit <code>digitalRead()</code> aus. | |||
*Der Rückgabewert ist <code>HIGH</code> oder <code>LOW</code>. | |||
|- | |||
|} | |||
== Vorbereitung Aufgabe 5: Helligkeit einstellen == | |||
# Simulieren Sie Ihre Schaltung mit [https://wokwi.com/ Wokwi]. | |||
#Schließen Sie ein Potentiometer und eine LED an. | |||
#Drehen Sie am Potentiometer. Die Helligkeit der LED soll sich entsprechend verändern. | |||
#Sorgen Sie dafür, dass die LED erst ab einem bestimmten Potentiometerwert leuchtet. | |||
''' | '''Arbeitsergebnis''' in SVN: <code>dimmeLED.ino</code> | ||
''' | '''Nützliche Befehle''': [https://docs.arduino.cc/language-reference/de/funktionen/analog-io/analogRead/ <code>analogRead()</code>], [https://docs.arduino.cc/language-reference/de/funktionen/analog-io/analogWrite/<code>analogWrite()</code>], [https://docs.arduino.cc/language-reference/de/funktionen/math/map/ <code>map()</code>], [https://docs.arduino.cc/language-reference/de/funktionen/time/delay/ <code>delay()</code>] | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong> | | <strong>Tipp </strong> | ||
|- | |- | ||
| | | | ||
*Potentiometer an Analogpin A0 anschließen. | |||
*LED an Pin 9 anschließen. | |||
*Verwenden Sie <code>analogRead()</code> und <code>analogWrite()</code>. | |||
*Der Analogwert liegt zwischen 0 und 1023. | |||
*Der PWM-Wert liegt zwischen 0 und 255. | |||
|- | |- | ||
|} | |} | ||
=== Aufgabe | = 🛠️ Versuchsdurchführung = | ||
{| class="wikitable" | |||
# | |- | ||
! Uhrzeit !! Aufgabe !! Dauer | |||
|- | |||
| 11:00 Uhr || Umgang mit SVN || 10 min | |||
|- | |||
| 11:10 Uhr || LED ansteuern || 15 min | |||
|- | |||
| 11:25 Uhr || Wechselblinker || 10 min | |||
|- | |||
| 11:35 Uhr || Ein Taster steuert eine LED || 20 min | |||
|- | |||
| 11:55 Uhr || Helligkeit einstellen || 20 min | |||
|- | |||
| 12:15 Uhr || Programme in SVN sichern || 5 min | |||
|- | |||
| 12:20 Uhr || Laborplatz aufräumen || 10 min | |||
|- | |||
| 12:30 Uhr || Praktikumsende || | |||
|} | |||
== Aufgaben 1: Umgang mit SVN == | |||
* Loggen Sie sich via [https://svn.hshl.de/usvn/login/ USVN] ein und ändern Sie Ihr Passwort | |||
* Vorname.Nachname@stud.hshl.de::Kennwort1 (z. B. Max_Mustermann Kennwort1) | |||
* Prüfen Sie, ob Sie Zugang zum passenden Repositorium haben. | |||
* Installieren Sie Tortoise SVN für Windows (Mac) in englischer Sprache. | |||
* Legen Sie sich auf der Datenpartition unter </code>D:\SVN</code> ein Repositorium "Inf1P" an. | |||
* Machen Sie sich mit der Funktion von SVN bekannt. | |||
* Sichern Sie alle Ihren Quelltext in Ihrem Gruppenordner. | |||
{| class="wikitable" | |||
|+ style = "text-align: left"| Tabelle 1: Nützliche Links für den Semesterstart | |||
|- | |||
| HSHL Wiki ||<code>https://wiki.hshl.de/</code> | |||
|- | |||
| uSVN Benutzeroberfläche ||<code>https://svn.hshl.de/</code> | |||
|- | |||
| SVN Checkout URL || <code>https://svn.hshl.de/svn/Informatikpraktikum_1/trunk</code> | |||
|- | |||
| SVN-Anleitung || [[Software Versionsverwaltung mit SVN]] | |||
|} | |||
== Aufgaben 2: LED ansteuern == | |||
# Laden Sie aus SVN <code>steureLED.ino</code>. | |||
# Bauen Sie die LED Schaltung auf. | |||
# Die LED soll: | |||
## 1 Sekunde leuchten. | |||
## 1 Sekunde ausgeschaltet sein. | |||
## Diesen Vorgang dauerhaft wiederholen. | |||
# Ändern Sie die Wartezeiten so, dass die LED doppelt so schnell blinkt. | |||
# Kommentieren Sie Ihr Programm ausführlich. | |||
# Stellen Sie Ihr Programm Prof. Schneider vor. | |||
'''Arbeitsergebnis''' in SVN: <code>steureLED.ino</code> | |||
'''Nützliche Befehle''': <code> | '''Nützliche Befehle''': [https://www.arduino.cc/reference/de/language/functions/digital-io/pinmode/ <code>pinMode()</code>], [https://www.arduino.cc/reference/de/language/functions/digital-io/digitalwrite/ <code>digitalWrite()</code>], [https://www.arduino.cc/reference/de/language/functions/time/delay/ <code>delay()</code>] | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong> | | <strong>Tipp </strong> | ||
|- | |- | ||
| | | | ||
''' | * Die LED benötigt einen Vorwiderstand von 220 Ω. | ||
|} | |||
== Aufgabe 3: Wechselblinker == | |||
Zwei Leuchtdioden sollen abwechselnd blinken. | |||
'''Nützliche Befehle''': <code>pinmode(), digitalWrite(), delay</code> | |||
'''Arbeitsergebnisse''' in SVN: <code>Wechselblinker.ino</code> | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| [https://funduino.de/nr-2-wechselblinker Wechselblinker] | |||
|- | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| [https://funduino.de/nr-2-wechselblinker Wechselblinker] | |||
|- | |- | ||
|} | |} | ||
== Aufgabe 4: Ein Taster steuert eine LED == | |||
Erweitern Sie die Schaltung um einen Taster. | |||
# | #Die LED soll jedem Tastendruck ihren Zustand wechselt. | ||
# | # Werten Sie Ihr Programm mit [[Header_Beispiel_für_C|Header]] und Kommentaren auf. | ||
# | # Stellen Sie Ihr Programm Prof. Schneider vor. | ||
''' | '''Arbeitsergebnis''' in SVN: <code>schalteLED.ino</code> | ||
''' | '''Nützlicher Befehl''': [https://docs.arduino.cc/language-reference/de/funktionen/digital-io/digitalread/ <code>digitalRead()</code>] | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| Zeile 124: | Zeile 282: | ||
|- | |- | ||
| | | | ||
*Taster an Pin 2 anschließen. | |||
*Verwenden Sie <code>INPUT_PULLUP</code>. | |||
*Lesen Sie den Taster mit <code>digitalRead()</code> aus. | |||
*Der Rückgabewert ist <code>HIGH</code> oder <code>LOW</code>. | |||
|- | |- | ||
|} | |} | ||
---- | == Aufgaben 5: Helligkeit einstellen == | ||
#Schließen Sie ein Potentiometer und eine LED an. | |||
#Drehen Sie am Potentiometer. Die Helligkeit der LED soll sich entsprechend verändern. | |||
#Sorgen Sie dafür, dass die LED erst ab einem bestimmten Potentiometerwert leuchtet. | |||
# Werten Sie Ihr Programm mit [[Header_Beispiel_für_C|Header]] und Kommentaren auf. | |||
# Stellen Sie Ihr Programm Prof. Schneider vor. | |||
'''Arbeitsergebnis''' in SVN: <code>dimmeLED.ino</code> | |||
'''Nützliche Befehle''': [https://docs.arduino.cc/language-reference/de/funktionen/analog-io/analogRead/ <code>analogRead()</code>], [https://docs.arduino.cc/language-reference/de/funktionen/analog-io/analogWrite/<code>analogWrite()</code>], [https://docs.arduino.cc/language-reference/de/funktionen/math/map/ <code>map()</code>], [https://docs.arduino.cc/language-reference/de/funktionen/time/delay/ <code>delay()</code>] | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipp </strong> | |||
|- | |||
| | |||
*Potentiometer an Analogpin A0 anschließen. | |||
*LED an Pin 9 anschließen. | |||
*Verwenden Sie <code>analogRead()</code> und <code>analogWrite()</code>. | |||
*Der Analogwert liegt zwischen 0 und 1023. | |||
*Der PWM-Wert liegt zwischen 0 und 255. | |||
|- | |||
|} | |||
== Aufgabe 6: Nachhaltige Dokumentation == | |||
* Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | * Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | ||
* Beachten Sie dabei die [[Software_Anforderungen|Software Anforderungen]]. | * Beachten Sie dabei die [[Software_Anforderungen|Software Anforderungen]] | ||
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | |||
== 🔄 SVN-Repositorium == | |||
https://svn.hshl.de/svn/Informatikpraktikum_1/trunk | |||
== Tutorial und Dokumentationen == | |||
* [[Software Versionsverwaltung mit SVN]] | |||
* [https://www.arduino.cc/reference/de/ Arduino Befehlsübersicht] | |||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Literatur/SVN/Versionskontrolle.pdf Komplexitätsbeherrschung durch Versionskontrolle Komplexitätsbeherrschung durch Versionskontrolle] | |||
* [https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Literatur/SVN/Source%20Control%20mit%20SVN%20vs.%20GIT.pdf Source Control mit SVN vs. GIT Source Control mit SVN vs. GIT] | |||
* [https://osdn.net/projects/tortoisesvn/storage/1.14.3/Documentation/TortoiseSVN-1.14.3-de.pdf/ Handbuch Tortoise SVN (Deutsch)] | |||
* [https://osdn.net/projects/tortoisesvn/storage/1.14.3/Documentation/TortoiseMerge-1.14.3-de.pdf/ Handbuch Tortoise Merge (Deutsch)] | |||
* [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie für C]] | |||
Mit den folgenden Video Tutorial lernen Sie spielend leicht und kostenlos den Einstieg in die Versionskontrolle: | |||
* Christopher Janietz - Versionskontrolle mit Git und SVN bei [https://www.linkedin.com/learning/versionskontrolle-mit-git-und-svn/willkommen-zu-versionskontrolle-mit-git-und-svn?u=76882098 LinkedIn] | |||
* Julian Robichaux - SVN for Java Developers bei [https://www.linkedin.com/learning/svn-for-java-developers/tortoisesvn-on-windows?u=76882098 LinkedIn] | |||
== [[ | Mit den folgenden Video Tutorial lernen Sie spielend leicht und kostenlos den Einstieg in die Arduino-Welt: | ||
* Thomas Rode - Arduino Grundkurs bei [https://www.linkedin.com/learning-login/share?forceAccount=false&redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Farduino-grundkurs%3Ftrk%3Dshare_ent_url&account=76882098 LinkedIn] | |||
* Thomas Rose - Arduino: Kleine Projekte spielerisch umsetzen bei [https://www.linkedin.com/learning/arduino-kleine-projekte-spielerisch-umsetzen/willkommen-zu-arduino-kleine-projekte-spielerisch-umsetzen?u=76882098 LinkedIn] | |||
* Thomas Rose - Lichtsteuerung mit dem Arduino bei [https://www.linkedin.com/learning-login/share?forceAccount=false&redirect=https%3A%2F%2Fwww.linkedin.com%2Flearning%2Flichtsteuerung-mit-dem-arduino%3Ftrk%3Dshare_ent_url&account=76882098 LinkedIn] | |||
Den '''kostenlosen Zugang''' zum LinkedIN Portal erhalten Sie über den [https://hshl.bsz-bw.de/cgi-bin/koha/opac-main.pl Bibliothekskatalog] im Bereich "Lizenzierte Datenbanken". | |||
= | = [[Datei:Lektionen.jpg|60px]] Ausblick zur nächsten Lektion = | ||
Die nächste Lektion gibt eine Einführung in die Grundlagen der Programmierung: | |||
* Programmierrichtlinien | |||
* Taster mittels Arduino auslesen, entprellen, Pull-Up/Pull-Down-Widerstand | |||
* Zähler inkrementieren | |||
* <code>switch..case</code>-Verzweigung | |||
* Ansteuerung einer RGB-LED | |||
---- | ---- | ||
→ Termine [[Einführungsveranstaltung Informatikpraktikum 1|1]] [[Einarbeitung_in_die_Versionsverwaltung_SVN|2]] [[Einstieg_in_die_Welt_des_Arduino|3]] [[Arduino: Taster auswerten und LEDs ansteuern|4]] [[Arduino:_Sensoren_einlesen|5]] [[Arduino:_Infrarotsensor_einlesen|6]] [[Arduino | → Termine von Gruppe B [[Einführungsveranstaltung Informatikpraktikum 1|1]] [[Einarbeitung_in_die_Versionsverwaltung_SVN|2]] [[Einstieg_in_die_Welt_des_Arduino|3]] [[Arduino: Taster auswerten und LEDs ansteuern|4]] [[Arduino:_Sensoren_einlesen|5]] [[Arduino:_Infrarotsensor_einlesen|6]] [[Erste Schritte mit dem Arduino Uno R3|7]] [[Ereignisgesteuerte_Programmierung|8]] [[Sensoren_einlesen_und_Messwerte_verarbeiten|9]] [[Arduino:_Aktoren|10]] [[Arduino:_LCD_Display_mit_I2C_Schnittstelle|11]] [[Arduino:_Ultraschall_Entfernungsmessung|12]] [[Arduino:_Ultraschallsensor_entstören|13]] [[Arduino:_Temperaturmessung_mit_NTC_und_PTC|14]] [[Arduino:_Programmier-Challenge_II_WS_25/26|15]]<br> | ||
→ zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_26/27|Arduino Praxiseinstieg]]<br> | → zurück zum Hauptartikel: [[Arduino_Praxiseinstieg_WS_26/27|Arduino Praxiseinstieg]]<br> | ||
→ Haben Sie Fragen? [[Informatik Praktikum FAQ]] | → Haben Sie Fragen? [[Informatik Praktikum FAQ]] | ||
Version vom 13. November 2026, 06:10 Uhr

| Autor: | Prof. Dr.-Ing. Schneider |
| Modul: | Praxismodul I |
| Gruppe: | B |
| Lektion 7: | Mechatronik, Informatikpraktikum, 1. Semester |
| SVN-URL: | https://svn.hshl.de/svn/Informatikpraktikum_1/trunk |
📖 Inhalt
In dieser Lektion werden die grundlegenden Konzepte der Programmierung eines Arduino Uno eingeführt. Anhand einfacher praktischer Aufgaben lernen die Studierenden, ein Arduino-Programm zu erstellen, zu simulieren und schrittweise zu erweitern.
Zunächst werden die Entwicklungsumgebung Wokwi und die grundlegende Programmstruktur mit den Funktionen setup() und loop() kennengelernt. Anschließend werden digitale Ausgänge zur Ansteuerung von LEDs und digitale Eingänge zum Einlesen von Tastern verwendet.
Darauf aufbauend werden einfache Programmabläufe mit Variablen, bedingten Verzweigungen und zeitlichen Verzögerungen umgesetzt. Abschließend werden analoge Eingangswerte mit einem Potentiometer erfasst und mithilfe eines PWM-Signals zur Einstellung der LED-Helligkeit verwendet.
Ein weiterer Bestandteil der Lektion ist die Einführung in die Versionsverwaltung mit Subversion (SVN). Die Studierenden lernen, Projekte aus dem zentralen Repository auszuchecken, Änderungen zu speichern (Commit) und den aktuellen Projektstand zu aktualisieren (Update).
Die Aufgaben werden schrittweise bearbeitet und durch eigenständige Änderungen am Programm ergänzt. Die Ergebnisse werden in Wokwi simuliert, überprüft und für die weitere Bearbeitung in SVN gesichert.
Eingeführte Begriffe und Konzepte
Die Bedienoberfläche uSVN und der Client Turtoise SVN wird vorgestellt. Der Umgang mit den wesentlichen Funktionen wird geübt. Neue Begriffe sind:
CheckoutCommitUpdateTagBranchTrunkShow LogRepro-browserRevertClean upGet lockMergeDiff
Neue Arduino-Begriffe sind: Sketch, Serial.begin(), Serial.print(), Serial.println(), pinMode(), digitalWrite(), delay()
Voraussetzungen
Grundlagen der PC-Bedienung sind erforderlich.
🎯 Lernziele
Nach Durchführung dieser Lektion können die Studierenden:
- mit der Versionskontrolle SVN umgehen.
- die grundlegende Struktur eines Arduino-Programms erläutern und die Aufgaben der Funktionen
setup()undloop()beschreiben. - digitale Ein- und Ausgänge konfigurieren und zur Ansteuerung von LEDs sowie zum Einlesen von Tastern verwenden.
- einfache Programmabläufe mit Variablen und bedingten Verzweigungen (
if-else) erstellen. - zeitliche Abläufe mithilfe der Funktion
delay()programmieren. - analoge Eingangswerte mit analogRead() erfassen und deren Wertebereich interpretieren.
- PWM-Signale zur Einstellung der LED-Helligkeit mit
analogWrite()verwenden. - einfache Arduino-Programme selbstständig erstellen, simulieren, testen und gezielt verändern.
- die Funktionsweise ihrer Programme anhand des Quellcodes und der zugehörigen Schaltung erklären.
🚀 Getting Started
Den Einstieg in die Welt des Arduino in der Programmierung finden Sie hier:
https://funduino.com/blogs/anleitungen/tagged/arduino-erste-schritte
Schritt für Schritt Anleitungen
✅ Vorbereitung
Vorbereitung Aufgabe 1: Umgang mit SVN
Bereiten Sie sich anhand der nachfolgenden Aufgaben auf den Praktikumstermin vor.
- Studieren Sie folgenden Wiki-Artikel: Software Versionsverwaltung mit SVN.
- Legen Sie auf Ihrem Rechner ein (lokales) SVN-Projektarchiv an, z. B.
D:\SVN\Gruppenordner. - Checken Sie mit
SVN/Checkouteine Arbeitskopie des Arbeitsordners aus. URL:https://svn.hshl.de/svn/Informatikpraktikum_1/trunk/Gruppen/WS2627 - Schreiben Sie eine Textdatei
Test.txtmit beliebigem Inhalt. - Sichern Sie Ihre Daten auf dem SVN Server mit
SVN/Commit; Schreiben Sie einen passenden Log-Text. - Checken Sie eine 2. Arbeitskopie aus.
- Ändern Sie etwas in beiden Arbeitskopien gleichzeitig, aber in unterschiedlichen Zeilen
- Sichern Sie beider Arbeitskopien auf dem SVN Server mit
SVN/Commit; Schreiben Sie einen passenden Log-Text. - Analysieren Sie die Differenz mit
SVN/Diff. - Ändern Sie etwas in beiden Arbeitskopien gleichzeitig, aber in GLEICHEN Zeilen
- Sichern Sie beider Arbeitskopien auf dem SVN Server mit
SVN/Commit; Schreiben Sie einen passenden Log-Text. - Lösen Sie den Konflikt mit:
SVN/Merge - Legen Sie einen
SVN/Tagan.
Arbeitsergebnisse in SVN:
Test.txtmit Historie (s.o.)
Vorbereitung Aufgabe 2: Arduino Uno R3
Befassen Sie sich mit der Arduino-Uno Hardware und beantworten Sie die Fragen:
- Welches sind die technischen Daten eines Arduino UNO R3?
- Mikrocontroller
- Spannungsversorgung
- Betriebsspannung
- Digitale I/O
- Analoge I/O
- Strom pro digitalem Pin
- Flash Memory
- SRAM
- EEPROM
- Taktfrequenz
- Programmierschnittstelle
- ISCP-Schnittstelle
- Recherchieren und erläutern Sie diese Fachbegriffe.
- Untersuchen Sie die Steckplatine (Engl. breadboard). Wie ist es aufgebaut?
Arbeitsergebnis: ArduinoUnoSpec.pdf
| Tipp 1 |
| Die Lösungen finden Sie in der Arduino Dokumentation. |
| Tipp 2 |
| Die Funktion der Steckplatine wird auf Wikipedia gut beschrieben. |
Vorbereitung Aufgabe 3: LED ansteuern
Erstellen Sie in Wokwi eine Schaltung mit einem Arduino Uno und einer LED.
Die LED soll:
- 1 Sekunde leuchten.
- 1 Sekunde ausgeschaltet sein.
- Diesen Vorgang dauerhaft wiederholen.
- Ändern Sie die Wartezeiten so, dass die LED doppelt so schnell blinkt.
Arbeitsergebnis in SVN: steureLED.ino
Nützliche Befehle: pinMode(), digitalWrite(), delay()
| Tipp |
|
Vorbereitung Aufgabe 4: Ein Taster steuert eine LED
Erweitern Sie in Wokwi die Schaltung um einen Taster.
- Die LED soll leuchten, solange der Taster gedrückt wird.
- Wird der Taster losgelassen, soll die LED ausgehen.
- Ändern Sie das Programm so, dass die LED bei jedem Tastendruck ihren Zustand wechselt.
Arbeitsergebnis in SVN: schalteLED.ino
Nützlicher Befehl: digitalRead()
| Tipp |
|
Vorbereitung Aufgabe 5: Helligkeit einstellen
- Simulieren Sie Ihre Schaltung mit Wokwi.
- Schließen Sie ein Potentiometer und eine LED an.
- Drehen Sie am Potentiometer. Die Helligkeit der LED soll sich entsprechend verändern.
- Sorgen Sie dafür, dass die LED erst ab einem bestimmten Potentiometerwert leuchtet.
Arbeitsergebnis in SVN: dimmeLED.ino
Nützliche Befehle: analogRead(), analogWrite(), map(), delay()
| Tipp |
|
🛠️ Versuchsdurchführung
| Uhrzeit | Aufgabe | Dauer |
|---|---|---|
| 11:00 Uhr | Umgang mit SVN | 10 min |
| 11:10 Uhr | LED ansteuern | 15 min |
| 11:25 Uhr | Wechselblinker | 10 min |
| 11:35 Uhr | Ein Taster steuert eine LED | 20 min |
| 11:55 Uhr | Helligkeit einstellen | 20 min |
| 12:15 Uhr | Programme in SVN sichern | 5 min |
| 12:20 Uhr | Laborplatz aufräumen | 10 min |
| 12:30 Uhr | Praktikumsende |
Aufgaben 1: Umgang mit SVN
- Loggen Sie sich via USVN ein und ändern Sie Ihr Passwort
- Vorname.Nachname@stud.hshl.de::Kennwort1 (z. B. Max_Mustermann Kennwort1)
- Prüfen Sie, ob Sie Zugang zum passenden Repositorium haben.
- Installieren Sie Tortoise SVN für Windows (Mac) in englischer Sprache.
- Legen Sie sich auf der Datenpartition unter D:\SVN ein Repositorium "Inf1P" an.
- Machen Sie sich mit der Funktion von SVN bekannt.
- Sichern Sie alle Ihren Quelltext in Ihrem Gruppenordner.
| HSHL Wiki | https://wiki.hshl.de/
|
| uSVN Benutzeroberfläche | https://svn.hshl.de/
|
| SVN Checkout URL | https://svn.hshl.de/svn/Informatikpraktikum_1/trunk
|
| SVN-Anleitung | Software Versionsverwaltung mit SVN |
Aufgaben 2: LED ansteuern
- Laden Sie aus SVN
steureLED.ino. - Bauen Sie die LED Schaltung auf.
- Die LED soll:
- 1 Sekunde leuchten.
- 1 Sekunde ausgeschaltet sein.
- Diesen Vorgang dauerhaft wiederholen.
- Ändern Sie die Wartezeiten so, dass die LED doppelt so schnell blinkt.
- Kommentieren Sie Ihr Programm ausführlich.
- Stellen Sie Ihr Programm Prof. Schneider vor.
Arbeitsergebnis in SVN: steureLED.ino
Nützliche Befehle: pinMode(), digitalWrite(), delay()
| Tipp |
|
Aufgabe 3: Wechselblinker
Zwei Leuchtdioden sollen abwechselnd blinken.
Nützliche Befehle: pinmode(), digitalWrite(), delay
Arbeitsergebnisse in SVN: Wechselblinker.ino
| Musterlösung |
| Wechselblinker |
| Musterlösung |
| Wechselblinker |
Aufgabe 4: Ein Taster steuert eine LED
Erweitern Sie die Schaltung um einen Taster.
- Die LED soll jedem Tastendruck ihren Zustand wechselt.
- Werten Sie Ihr Programm mit Header und Kommentaren auf.
- Stellen Sie Ihr Programm Prof. Schneider vor.
Arbeitsergebnis in SVN: schalteLED.ino
Nützlicher Befehl: digitalRead()
| Tipp |
|
Aufgaben 5: Helligkeit einstellen
- Schließen Sie ein Potentiometer und eine LED an.
- Drehen Sie am Potentiometer. Die Helligkeit der LED soll sich entsprechend verändern.
- Sorgen Sie dafür, dass die LED erst ab einem bestimmten Potentiometerwert leuchtet.
- Werten Sie Ihr Programm mit Header und Kommentaren auf.
- Stellen Sie Ihr Programm Prof. Schneider vor.
Arbeitsergebnis in SVN: dimmeLED.ino
Nützliche Befehle: analogRead(), analogWrite(), map(), delay()
| Tipp |
|
Aufgabe 6: Nachhaltige Dokumentation
- Sichern Sie alle Ergebnisse mit beschreibendem Text (
message) in SVN. - Beachten Sie dabei die Software Anforderungen
Arbeitsergebnis in SVN: SVN Log
🔄 SVN-Repositorium
https://svn.hshl.de/svn/Informatikpraktikum_1/trunk
Tutorial und Dokumentationen
- Software Versionsverwaltung mit SVN
- Arduino Befehlsübersicht
- Komplexitätsbeherrschung durch Versionskontrolle Komplexitätsbeherrschung durch Versionskontrolle
- Source Control mit SVN vs. GIT Source Control mit SVN vs. GIT
- Handbuch Tortoise SVN (Deutsch)
- Handbuch Tortoise Merge (Deutsch)
- Programmierrichtlinie für C
Mit den folgenden Video Tutorial lernen Sie spielend leicht und kostenlos den Einstieg in die Versionskontrolle:
- Christopher Janietz - Versionskontrolle mit Git und SVN bei LinkedIn
- Julian Robichaux - SVN for Java Developers bei LinkedIn
Mit den folgenden Video Tutorial lernen Sie spielend leicht und kostenlos den Einstieg in die Arduino-Welt:
- Thomas Rode - Arduino Grundkurs bei LinkedIn
- Thomas Rose - Arduino: Kleine Projekte spielerisch umsetzen bei LinkedIn
- Thomas Rose - Lichtsteuerung mit dem Arduino bei LinkedIn
Den kostenlosen Zugang zum LinkedIN Portal erhalten Sie über den Bibliothekskatalog im Bereich "Lizenzierte Datenbanken".
Ausblick zur nächsten Lektion
Die nächste Lektion gibt eine Einführung in die Grundlagen der Programmierung:
- Programmierrichtlinien
- Taster mittels Arduino auslesen, entprellen, Pull-Up/Pull-Down-Widerstand
- Zähler inkrementieren
switch..case-Verzweigung- Ansteuerung einer RGB-LED
→ Termine von Gruppe B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
→ zurück zum Hauptartikel: Arduino Praxiseinstieg
→ Haben Sie Fragen? Informatik Praktikum FAQ