Inhalte zur Vorlesungswoche #2, Entwicklung fehlertoleranter Software für eingebettete Echtzeitsysteme im Wintersemester 2024/25
(EN google-translate)
(PL google-translate)
Beschäftigung im Falle einer Verspätung:
|
|
78_Processing/02_Erste_Schritte
|
|
10_Informatik1/05_Softwareentwicklung/03_Objektorientierung
|
10_Informatik1/01_day_by_day/06_LV_06_05_2024
Themen heute:
|
1 Quiz
|
2 Wiederholung zu Pattern für fehlertoleranten Software-Entwurf
81_FTSD/05_Fehlertoleranz
3 Verteilung der Pattern auf die Gruppen zur seminaristischen Behandlung
Pattern: Mi 09.10.24 GRUPPE: A 1 Units of Mitigation 2 Correcting Audits Mi 16.10.24 GRUPPE: C 3 Redundancy 4 Recovery Block Mi 23.10.24 GRUPPE: D 5 Minimize Human Interaction 6 Maximize Human Participation Mi 30.10.24 GRUPPE: E 7 Maintenance Interface 8 Someone in Charge Mi 06.11.24 GRUPPE: B,F,G 9 Escalation // B 10 Fault Observer // G 11 Software Update // F
Code 0-1: Aufteilung
Behandlung der Pattern
|
4 Start mit den PCs mit Bootstick unter Xubuntu
Um mit den PCs im PC-Pool Hotspots erstellen zu können, ist es im Moment notwendig, an den USB-Ports sowohl einen Linux-Bootstick zu verwenden, als auch einen W-LAN-Stick.
Der Linux-Bootstick verhält sich dabei wie eine externe Festplatte und verändert nichts an der sonst verfügbaren Installation auf dem PC.
Über F8 gelangt man beim Start der PCs in das Bootmenü und kann dort den USB-Stick auswählen.
Legen Sie im HOME-Verzeichnis einen Ordner an, in dem Sie die von Ihnen entwickelten Materialien speichern. Sichern Sie sich das, was Sie in einer Sitzung erarbeitet haben am besten zusätzlich auf einem privaten USB-Stick.
Damit Daten vom Arduino an den PC gesendet und dort weiterverarbeitet werden können, müssen verschiedene Bedingungen erfüllt sein:
|
Das funktioniert nur, wenn...
|
Jede Gruppe muss einen Hotspot mit einem anderen Namen erstellen. Grundlage soll der Name der Gruppe sein, also A,B,C,D.
hotspotA hotspotB hotspotC hotspotD
Code 0-2: Hotspotnamen.
So wird ein Hospot erstellt: kramann.info/06_Ing/01_Bauplan/04_Hotspot
ÜBUNG
|
HINWEIS: Für diese Übung bleibt der Arduino die ganze Zeit einfach über USB-Kabel mit dem PC verbunden.
5 Einstieg mit dem Arduino NANO 33 IoT
Damit der Arduino NANO 33 IoT über die Arduino Entwicklungsumgebung programmiert werden kann, müssen dort zwei neue Libraries installiert werden, eine für den Crosscompiler und eine, die die Verwendung des IMU ermöglicht.
Unter nachfolgendem Link werden die grundlegenden Schritte gezeigt, um Beschleunigungsdaten mit dem Arduino NANO 33 IoT zu erfassen, per WiFi an einen Laptop zu senden und dort mit einem Java/Processing-Sketch weiter zu verarbeiten:
96_Arduino/30_Arduino_33_nano_IoT
Um diese Art der Datenkommunikation zu ermöglichen, ist es sinnvoll, dass auf dem Laptop ein Hotspot erzeugt wird und der Laptop als auch der Arduino sich mit diesem Hotspot verbinden. Wie das auf der Laptop-Seite unter Xubuntu geht, wird hier gezeigt:
06_Ing/01_Bauplan/04_Hotspot
6 Überblick zu Java / Processing
30_Informatik3/09_Java
78_Processing
92_Soundinstallation/03_material/11_Snippets
int x=0;
int y=0;
int z=0;
public void setup()
{
size(600,300);
frameRate(30);
}
public void draw()
{
background(x,y,z);
fill(255,0,0);
rect(0,0,100,100);
fill(0,255,0);
rect(100,0,100,100);
}
public void mousePressed()
{
if(mouseX<100 && mouseY<100)
{
x=255;
y=0;
z=0;
}
if(mouseX>100 && mouseX<200 && mouseY<100)
{
x=0;
y=255;
z=0;
}
}
Code 0-3: Sketch, der auf Klicks die Hintergrundfarbe ändert. Im Unterricht eines früheren Kurses entstanden.
7 Übung
|
96_Arduino/30_Arduino_33_nano_IoT
HINWEIS: Passen Sie vor dem Test die SSID des Hotspots im Arduino-Part an Ihren eigenen Hotspot an.
|
Im Unterricht entwickelte Sketche mit Processing:
public void setup()
{
size(640,480);
frameRate(30);
}
public void draw()
{
background(0,0,255);
fill(255,0,0);
//stroke(0,255,0);
noStroke();
//noFill();
ellipse(320,240,100,100);
}
Code 0-4: Test1001
int x = 0;
public void setup()
{
int y = 0;
size(640,480);
frameRate(30);
}
public void draw()
{
background(0,0,255);
fill(255,0,0);
//stroke(0,255,0);
noStroke();
//noFill();
ellipse(x,240,100,100);
x=x+5;
if(x>640) x=0;
}
Code 0-5: Test1002
int x = 0; // Variable für die horizontale Position des Kreises
public void setup()
{
int y = 0; // Lokale Variable 'y', wird jedoch nicht weiter verwendet
size(640,480); // Setzt die Größe des Fensters auf 640x480 Pixel
frameRate(30); // Setzt die Bildrate (fps) auf 30 Bilder pro Sekunde
}
public void draw()
{
background(0,0,B); // Setzt den Hintergrund mit einer blauen Farbkomponente, die durch 'B' gesteuert wird
fill(255,0,0); // Setzt die Füllfarbe auf Rot für die nächste Form
//stroke(0,255,0); // Kommentar: Grüne Kontur (nicht verwendet)
noStroke(); // Deaktiviert jegliche Kontur für Formen
//noFill(); // Kommentar: Kein Füllfarbmodus (nicht verwendet)
ellipse(x, my, 100, 100); // Zeichnet einen Kreis mit Durchmesser 100 an der Position (x, my)
textSize(40); // Setzt die Schriftgröße auf 40 Pixel
fill(255,255,255); // Setzt die Füllfarbe auf Weiß für den Text
text("HALLO x=" + x, 60, 60); // Zeigt den Text "HALLO x=<x-Wert>" an der Position (60, 60) an
x = x + 5; // Erhöht den Wert von x um 5, bewegt den Kreis nach rechts
if (x > 640) x = 0; // Setzt x zurück auf 0, wenn der Kreis den rechten Rand erreicht (beim Überschreiten der Fensterbreite)
}
int B = 255; // Anfangswert für die blaue Hintergrundfarbe
int mx = 0; // Variable für die x-Position der Maus (initial 0)
int my = 0; // Variable für die y-Position der Maus (initial 0)
public void keyPressed()
{
if (key == ' ') // Wenn die Leertaste gedrückt wird
B = 0; // Setzt die blaue Hintergrundfarbe auf 0 (schwarz)
}
public void mouseClicked()
{
mx = mouseX; // Speichert die aktuelle x-Position der Maus bei einem Mausklick
my = mouseY; // Speichert die aktuelle y-Position der Maus bei einem Mausklick
}
Code 0-6: Test1003 -- mit chatGPT kommentiert.
Hinweise dazu von chatGPT:
|