Inhalte zur Vorlesungswoche #3, Entwicklung fehlertoleranter Software für eingebettete Echtzeitsysteme im Wintersemester 2024/25
(EN google-translate)
(PL google-translate)
Beschäftigung im Falle einer Verspätung wie letzte Woche:
- Arbeiten Sie sich in die Java-basierte Entwicklungsumgebung Processing ein.
|
Nutzen Sie chatGPT, um sich die Programme erklären zu lassen.
Sammeln Sie Fragen zur Programmentwicklung mit Processing.
processing.org
- Gehen Sie dazu die folgenden Beispiele praktisch am PC unter Xubuntu durch:
|
78_Processing/02_Erste_Schritte
- Gehen Sie in Processing die verschiedenen Testbeispiele aus den Libraries durch (z.B. Datei->Beispiele->Basics->Image->LoadDisplayImage).
|
- Gehen Sie diesen Beitrag zu Objektorientierung mit Processing durch und sammeln Fragen dazu:
|
10_Informatik1/05_Softwareentwicklung/03_Objektorientierung
- Versuchen Sie hier die Aufgabe 6.3 und später eventuell auch 6.4 zu lösen:
|
10_Informatik1/01_day_by_day/06_LV_06_05_2024
Themen heute:
- Quiz
- Präsentation und Diskussion zu 3 Redundancy, 2 Recovery Block, GRUPPE C
- Programmiertechnik: Datentypen, Klassen und Objekte in Java
- Theoretische Behandlung von Zustandsmaschinen als Grundlage für die Lösung der Aufgabe 2 von letzter Woche
- Präsentation einer möglichen Lösung zur Aufgabe 2 von letzter Woche: Erfassen der Boxgeschwindigkeit
- ÜBUNG
|
1 Quiz
- Erläutern Sie den Begriff Mitigation
- Erläutern Sie den Begriff Correcting Audits
|
2 Präsentation und Diskussion zu 3 Redundancy, 2 Recovery Block, GRUPPE C
- Bitte bereiten Sie Folien ggf. als pdf-Dokument vor.
- Nutzen Sie bitte die Möglichkeit die Folien bei Moodle hochzuladen.
- So kann die Präsentation vom Dozenten-PC erfolgen.
|
3 Programmiertechnik: Datentypen, Klassen und Objekte in Java
Einfache Datentypen in Java: 30_Informatik3/09_Java/02_GettingStarted
Klassen und Objekte allgemein: 30_Informatik3/01_Vom_struct_zur_Klasse/06_Objektabstraktion
- Java-Beispiel: Eine selbst geschriebene Klasse "Knopf" und die Erzeugung und Verwendung zweier ihrer Objekte
|
Knopf knopf1;
Knopf knopf2;
int x;
public void setup()
{
size(600,300);
frameRate(30);
knopf1 = new Knopf(10,10,200,50);
knopf2 = new Knopf(10,70,200,50);
}
public void draw()
{
background(255);
knopf1.draw();
knopf2.draw();
}
public void mousePressed()
{
knopf1.clicked(mouseX,mouseY);
knopf2.clicked(mouseX,mouseY);
}
Code 0-1: Hauptteil des Sketches
public class Knopf
{
private int x,y,breite,hoehe;
private boolean an;
public Knopf(int x,int y,int breite,int hoehe)
{
this.an = false;
this.x = x;
this.y = y;
this.breite = breite;
this.hoehe = hoehe;
}
public void draw()
{
if(this.an)
fill(0,255,0);
else
fill(255,0,0);
rect(x,y,breite,hoehe);
}
public void clicked(int x, int y)
{
if(x>this.x && x<this.x+this.breite && y>this.y && y<this.y+this.hoehe)
{
this.an=!this.an;
}
}
}
Code 0-2: Klasse Knopf in extra Tab.
4 Theoretische Behandlung von Zustandsmaschinen als Grundlage für die Lösung der Aufgabe 2 von letzter Woche
67_Echtzeitsysteme/12_Zustandsmaschine
5 Präsentation einer möglichen Lösung zur Aufgabe 2 von letzter Woche: Erfassen der Boxgeschwindigkeit
96_Arduino/30_Arduino_33_nano_IoT/01_Snippet_Boxschnelle
6 ÜBUNG
- Es werden die Laptops 1 bis 7 verwendet.
- An Laptop 1 arbeitet Gruppe A, 2 B, 3 C, 4 D, 5 E, 6 F, 7 G.
|
Aufgabe 1
- Vollziehen Sie das Snippet zur Boxschnelle praktisch nach.
- Überlegen Sie sich dann ein Konzept, dass ohne Drücken der Computertaste auskommt, sondern rein über die Sensordaten funktioniert.
- Setzen Sie dieses Konzept um.
|
Aufgabe 2
- Die räumlichen Orientierung des Arduino relativ zur Richtung der Erdbeschleunigung ist eindeutig zwei Winkeln zuzuordnen.
- Man kann sich das so vortellen, dass die Spitze von Vektor Z (Senkrechte auf Arduino-Board) immer eindeutig auf einen Punkt einer gedachten ihn umhüllenden Sphere zeigt.
- Die Abweichung dieses aktuellen Punktes von der Position in Nulllage, kann über zwei orthogonale Winkel beschrieben werden.
- Überlegen Sie sich die mathematische Umrechnung des aktuellen Beschleunigungsvektors in zwei orthogonale Winkel in dem hier beschriebenen Sinn.
- Setzen Sie das Ganze als Programm um und zeigen die Winkel in Grad als Zahlenwerte im Processing-Programmteil an.
|
Überlegen Sie, wie sich das Konzept des Recoveryblocks auf das Erfordernis die beiden Winkel bereitzustellen anwenden lässt.