Einführungsveranstaltung Informatikpraktikum 2 im SoSe 2023: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 121: | Zeile 121: | ||
== Einstiegsaufgabe == | == Einstiegsaufgabe == | ||
=== Aufgabe 1.1: Softwareplanung === | |||
Planen Sie die Arduino-Software als PAP. | |||
'''Arbeitsergebnisse''' in SVN: <code>Softwareplanung_Termin_01.pap</code> | |||
=== Aufgabe 1.2: Positionserfassung mit Ultraschall === | |||
# Lesen Sie die Messwerte des Ultraschall-Sensors aus auf statische Ziele im gesamten Messbereich | |||
aus. Schreiben Sie hierzu ein Arduino-Programm messeEntfernung.ino. Messen Sie | |||
zyklisch die Zeit mit dem Befehl <code>millis()</code>. | |||
# Nutzen Sie das Programm Putty, um die Daten der seriellen Schnittstelle in der ASCII-Datei <code>Ultraschallmessung.txt</code> zu speichern. Eine Anleitung finden Sie unter der URL [[Einrichtung_von_PuTTY]]. | |||
# Schreiben Sie einmalig als Header die Bezeichnung der Messwerte Zeit in ms und Strecke in cm in die Textdatei. | |||
'''Nützliche Befehle''': <code>pinMode(), digitalWrite(), pulseIn(), delayMicroseconds(), millis()</code> | |||
'''Arbeitsergebnisse''' in SVN: <code>Ultraschallmessung.txt, messeEntfernung.ino</code> | |||
<div class="mw-collapsible mw-collapsed"> | |||
</div> | |||
=== Aufgabe 1.3: Darstellung in MATLAB<sup>®</sup> === | |||
Ein Taster dimmt eine LED: | |||
# Tastendruck: an, 100% Lichtleistung | |||
# Tastendruck: an, 50% Lichtleistung | |||
# Tastendruck: aus 0% | |||
'''Tipp''': Nutzen Sie Ausgangsprogramm <code>PulsierendeLED.ino</code> aus Aufgabe 2.3 und nutzen Sie den Hardwareaufbau aus Aufgabe 3.2. | |||
'''Nützliche Befehle''': <code>pinmode(), analogWrite(), delay(), switch..case</code> | |||
'''Arbeitsergebnisse''' in SVN: <code>dimmeLED.ino</code> | |||
<div class="mw-collapsible mw-collapsed"> | |||
Eine Anleitung zur Verwendung von <code>switch..case</code> findet sich in der [https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/ Arduino-Dokumentation]. | |||
Demo-Quelltext <code>DemoSwitchCase</code> | |||
<source line lang="c" style="font-size:small"> | |||
//***************************************************************************** | |||
// Modul : DemoSwitchCase * | |||
// * | |||
// Datum : 17.10.2022 * | |||
// * | |||
// Funktion : Demo für eine switch...case-verzweigung * | |||
// * | |||
// Implementation : Arduino IDE vers. 2.0.0 * | |||
// * | |||
// Hardware : Arduino UNO R3 * | |||
// * | |||
// Author : (c) 2022, Dr. Ulrich Schneider * | |||
// * | |||
// Letzte Änderung : 17.10.2022 * | |||
// * | |||
//***************************************************************************** | |||
byte Cnt_u8 =0; // Zählvariable wird angelegt und initialisiert | |||
void setup() { | |||
Serial.begin(9600); // Seriellen Monitor initialisieren, 9600 Baud | |||
} | |||
void loop() { | |||
Cnt_u8++; // Zähler inkrementieren | |||
if (Cnt_u8>2) Cnt_u8=0; // Überlauf ab 2: 012012... | |||
switch (Cnt_u8) | |||
{ | |||
case 0: | |||
Serial.println("Fall 0"); | |||
break; | |||
case 1: | |||
Serial.println("Fall 1"); | |||
break; | |||
case 2: | |||
Serial.println("Fall 2"); | |||
break; | |||
default: | |||
// wird in diesem Beispiel nicht erreicht | |||
break; | |||
} | |||
delay(500); // ms für die Darstellung | |||
} | |||
end; | |||
</source> | |||
</div> | |||
=== Aufgabe 3.4: Ansteuerung einer farbigen LED === | |||
Eine RGB-LED soll in verschiedenen Farben leuchten. Auf Druck des Tasters soll die RGB-LED in folgenden Modi betrieben werden: | |||
# Weiß | |||
# Rot | |||
# Blau | |||
# Grün | |||
# Langsamer Übergang durch das gesamte Farbspektrum (Einschlaflicht) | |||
'''Nützliche Befehle''': <code>pinmode(), analogWrite(), delay()</code> | |||
'''Arbeitsergebnisse''' in SVN: <code>steureFarbigeLED.ino</code> | |||
<div class="mw-collapsible mw-collapsed"> | |||
'''Musterlösung:''' [https://funduino.de/nr-20-rgb-led] | |||
</div> | |||
=== Aufgabe 3.5: Nachhaltige Doku === | |||
Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | |||
* 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> | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[AlphaBot_SoSe23|Informatik Praktikum 2]] | → zurück zum Hauptartikel: [[AlphaBot_SoSe23|Informatik Praktikum 2]] |
Version vom 19. März 2023, 10:41 Uhr
Autor: Prof. Dr.-Ing. Schneider
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester
Sprechstunde: Montag. 11:00 - 12:00 Uhr, nach Vereinbarung
Einführungsveranstaltung: 20. & 23.03.2023
Modulbeschreibung
Die Lehrveranstaltung Informatik Praktikum 2 ist Teil des Moduls MTR-B-2-2.11.
Qualifikationsziele
Die Studierenden können das an der Hochschule erworbene Wissen in der beruflichen Praxis bzw. in vergleichbaren Aufgabenstellungen anwenden und verfügen daher über eine verbesserte instrumentale Kompetenz. Die Studierenden können praxisorientierte Aufgaben analysieren und geeignete Problemlösungsmethoden im Kontext der Ingenieurdisziplinen anwenden.
Aufbauend auf das Informatik Praktikum 1 können die Studierenden
- strukturiert Software planen und visualisieren.
- mit einem SW-Versionierungstool umgehen.
- komplexe Aufgaben der Informatik systematisch lösen.
- Fehler analysieren und beheben.
- mit dem Simulationstool MATLAB/Simulink umgehen.
- Ergebnisse anschaulich und verständlich präsentieren.
- Ergebnisse nachhaltig dokumentieren.
Inhalte
Informatik Praktikum 2:
- Einführung
- Praktische Umsetzung der Programmierkenntnisse in Projekten
- Dokumentation und Präsentation der Ergebnisse
- In Abhängigkeit der Aufgabenstellungen kann zusätzlich eine Hardwareplattform z. B. Lego Mindstorms/Arduino eingesetzt werden und eine Simulation und Programmierung mit MATLAB®/Simulink erfolgen.
Lehrform des Informatikpraktikum 2
2 SWS Praktikum (2 SWS)
Prüfungsform des Informatikpraktikum 2
- Anwesenheitspflicht an allen Praktikumsterminen (Anwesenheitskontrolle)
- Vorbereitung des Praktikumstags und Überprüfung in Form von mündlichen Antestaten
- Durchführung im Praktikum
- Nachbereitung in Form von Versuchsberichten bzw. Protokollen (Hausarbeit)
Bewertung
- Bewertung der Abgaben anhand der Bewertungskriterien für Software.
- Plagiate (ähnliche Lösungen) werden mit der Note 6.0 bewertet.
- Die Versuche finden chronologisch statt.
- Wer diesen Termin unentschuldigt verpasst, kann dieses Semester nicht am Praktikum teilnehmen. Legen Sie im Krankheitsfall eine ärztliche Bescheinigung bei Prof. Schneider vor.
- Beantworten Sie die Aufgaben im Team und und sichern Sie die Programme/Lösungen in SVN. Wechseln Sie sich bitte bei Upload ab, damit sichtbar ist, dass beide Teammitglieder am Projekt arbeiten. regelmäßige Teilnahme
Workload des Informatikpraktikum 2
ETCS | Workload gesamt | Präsenz | Selbststudium |
---|---|---|---|
2,5 | 75 h | 30 h | 45 h (3 h/w) |
Hinweis: Das Praktikum ist ein Submodul. Haben Sie dies bestanden, bleibt der Status bestanden auch beim Nichtbestehen des Moduls erhalten.
Informationsplattformen
Nachfolgende Informationsplattformen finden im Praktikum Anwendung
HSHL-Wiki
- Aufgabenstellungen
- Anleitungen
- Bewertungskriterien
- Literaturhinweise
- Links
- Downloads
Versionsverwaltung SVN
- Demo-Quelltext
- Gruppenordner
- Softwareablageort
- Versionsverwaltung
- Kollaboriertes Arbeiten
- Datensicherung via TortoiseSVN Client
Voraussetzung für die Teilnahme
- Gruppeneinteilung
- Prüfung des SVN-Zugangs
- Einarbeitung in SVN
- Einstieg in die Welt des Arduino
- Einführung_in_MATLAB
- Vorbereitung der Praktika
Gruppeneinteilung
Die Gruppeneinteilung erfolgt über die Lernplattform
Sicherheitseinweisung
- Studieren Sie die Sicherheitsunterlagen auf der Lernplattform.
- Bestätigen Sie auf der Lernplattform, dass Sie diese studiert und verstanden haben.
- Ohne Sicherheitseinweisung dürfen Sie das Labor nicht betreten.
Erwartungen an die Teilnehmenden
- Voraussetzungen erfüllen
- Vorbereitung der Termine
- Aktive Teilnahme - Fragen stellen
- Auseinandersetzung mit den Demos
- Teilnahme an allen Terminen
- Pünktlichkeit
- Teilnahme an Gruppenarbeiten
- Teilnahme am Tutorium
Tutorial zum Einstieg
- Was ist ein Plagiat?
- Einarbeitung in die Versionsverwaltung SVN
- Software Planung mit PAP
- Einstieg in die Welt des Arduino
- Einführung in MATLAB®
- Programmierrichtlinien
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.
Einstiegsaufgabe
Aufgabe 1.1: Softwareplanung
Planen Sie die Arduino-Software als PAP.
Arbeitsergebnisse in SVN: Softwareplanung_Termin_01.pap
Aufgabe 1.2: Positionserfassung mit Ultraschall
- Lesen Sie die Messwerte des Ultraschall-Sensors aus auf statische Ziele im gesamten Messbereich
aus. Schreiben Sie hierzu ein Arduino-Programm messeEntfernung.ino. Messen Sie
zyklisch die Zeit mit dem Befehl millis()
.
- Nutzen Sie das Programm Putty, um die Daten der seriellen Schnittstelle in der ASCII-Datei
Ultraschallmessung.txt
zu speichern. Eine Anleitung finden Sie unter der URL Einrichtung_von_PuTTY. - Schreiben Sie einmalig als Header die Bezeichnung der Messwerte Zeit in ms und Strecke in cm in die Textdatei.
Nützliche Befehle: pinMode(), digitalWrite(), pulseIn(), delayMicroseconds(), millis()
Arbeitsergebnisse in SVN: Ultraschallmessung.txt, messeEntfernung.ino
Aufgabe 1.3: Darstellung in MATLAB®
Ein Taster dimmt eine LED:
- Tastendruck: an, 100% Lichtleistung
- Tastendruck: an, 50% Lichtleistung
- Tastendruck: aus 0%
Tipp: Nutzen Sie Ausgangsprogramm PulsierendeLED.ino
aus Aufgabe 2.3 und nutzen Sie den Hardwareaufbau aus Aufgabe 3.2.
Nützliche Befehle: pinmode(), analogWrite(), delay(), switch..case
Arbeitsergebnisse in SVN: dimmeLED.ino
Eine Anleitung zur Verwendung von switch..case
findet sich in der Arduino-Dokumentation.
Demo-Quelltext DemoSwitchCase
//*****************************************************************************
// Modul : DemoSwitchCase *
// *
// Datum : 17.10.2022 *
// *
// Funktion : Demo für eine switch...case-verzweigung *
// *
// Implementation : Arduino IDE vers. 2.0.0 *
// *
// Hardware : Arduino UNO R3 *
// *
// Author : (c) 2022, Dr. Ulrich Schneider *
// *
// Letzte Änderung : 17.10.2022 *
// *
//*****************************************************************************
byte Cnt_u8 =0; // Zählvariable wird angelegt und initialisiert
void setup() {
Serial.begin(9600); // Seriellen Monitor initialisieren, 9600 Baud
}
void loop() {
Cnt_u8++; // Zähler inkrementieren
if (Cnt_u8>2) Cnt_u8=0; // Überlauf ab 2: 012012...
switch (Cnt_u8)
{
case 0:
Serial.println("Fall 0");
break;
case 1:
Serial.println("Fall 1");
break;
case 2:
Serial.println("Fall 2");
break;
default:
// wird in diesem Beispiel nicht erreicht
break;
}
delay(500); // ms für die Darstellung
}
end;
Aufgabe 3.4: Ansteuerung einer farbigen LED
Eine RGB-LED soll in verschiedenen Farben leuchten. Auf Druck des Tasters soll die RGB-LED in folgenden Modi betrieben werden:
- Weiß
- Rot
- Blau
- Grün
- Langsamer Übergang durch das gesamte Farbspektrum (Einschlaflicht)
Nützliche Befehle: pinmode(), analogWrite(), delay()
Arbeitsergebnisse in SVN: steureFarbigeLED.ino
Musterlösung: [1]
Aufgabe 3.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
→ zurück zum Hauptartikel: Informatik Praktikum 2