Aufgabe Vorschlag A - 2.5.1 · Abitur Hessen Praktische Informatik LK 2022

Thema: Klassen und Methoden implementieren · Aus der Prüfung LK (2022)

Aufgabenstellung

Material 6

UML-Klassendiagramm Aquariumssteuerung

Material 7

Belegung der Ports (schematisch)

Hinweise: Der Temperatursensor LM 35 hat eine Empfindlichkeit von 10 mV/∘C10\,\text{mV}/^\circ\text{C} und einen messbaren Temperaturbereich von 00 bis 100∘ Celsius100^\circ\text{ Celsius}. Die Formel zur Berechnung der Temperatur in Abhängigkeit vom gemessenen Wert am analogen Eingang lautet:

Temperatur [∘C]=5.0∗100.0∗analogWert1024.0Temperatur\ [^\circ\text{C}] = \frac{5.0 * 100.0 * analogWert}{1024.0}

2.5.1 Die Klasse Steuerung (Material 6) überwacht und regelt die Temperatur eines Aquariums.

Bei der Erzeugung eines Steuerungsobjekts für das übergebene Aquarium auf dem angegebenen Device wird die optimale Temperatur (Attribut optimaleTemp) für die Lebensgemeinschaft des Aquariums anhand der Methode ermittleOptimaleTemp() initialisiert.

Die Methode ermittleAktuelleTemp() gibt einen über 20 eingelesene Messwerte des Temperatursensors gemittelten und in Grad Celsius umgewandelten Wert zurück, wobei zwischen den einzelnen Messungen 10 Millisekunden Wartezeit liegen.

Die Methode run() der Klasse Steuerung schaltet den Heizstab ein und prüft im Minutentakt das Erreichen der optimalen Temperatur. Ist diese erreicht, wird der Heizstab entsprechend ausgeschaltet.

Zur daraufhin beginnenden Überwachung wird die aktuelle Temperatur ermittelt und mit der optimalen Temperatur verglichen. Um ständige Schaltvorgänge zu verhindern, ist eine Abweichung von ±0,5\pm 0{,}5 Grad Celsius zu berücksichtigen. Ein Messintervall beträgt in der Regel 5 Minuten.

Wenn eine Messung unter oder über dem Sollbereich liegt, wird der Heizstab entsprechend geschaltet, das Ereignis gezählt und das Messintervall auf 1 Minute heruntergesetzt.

Wenn der Sollbereich nach 5 Minuten nicht wiederhergestellt ist, wird die Alarmleuchte eingeschaltet.

Implementieren Sie Klasse Steuerung mit dem Konstruktor und den Methoden run() sowie ermittleAktuelleTemp().

Hinweis: Die Dokumentation der Klasse VUSB ist in Material 5 zu finden. [12 BE]

Aufgabenstellung: Aufgabe Vorschlag A - 2.5.1 · Abitur Hessen Praktische Informatik LK 2022

Lösung

Nach den offiziellen Korrekturhinweisen

Implementieren Sie Klasse Steuerung mit dem Konstruktor und den Methoden run() sowie ermittleAktuelleTemp().

Lösung: ```java public class Steuerung { private Aquarium aqua; private float optimaleTemp; private VUSB vusb; public Steuerung(Aquarium aqua, int device) { this.aqua = aqua; vusb = new VUSB(device); optimaleTemp = ermittleOptimaleTemp(); } public void run() { vusb.writeDigital(128); boolean heizstabIstEingeschaltet = true; while (ermittleAktuelleTemp() < optimaleTemp) { warteMin(1); } vusb.writeDigital(0); heizstabIstEingeschaltet = false; int counter = 0; int wartezeit = 5; while (true) { warteMin(wartezeit); float tempAktuell = ermittleAktuelleTemp(); if (tempAktuell < (optimaleTemp - 0.5f)) { if (!heizstabIstEingeschaltet) { vusb.writeDigital(128); heizstabIstEingeschaltet = true; } wartezeit = 1; counter++; } else if (tempAktuell > (optimaleTemp + 0.5f)) { if (heizstabIstEingeschaltet) { vusb.writeDigital(0); heizstabIstEingeschaltet = false; } wartezeit = 1; counter++; } else { if (heizstabIstEingeschaltet) { vusb.writeDigital(0); heizstabIstEingeschaltet = false; } counter = 0; wartezeit = 5; } if (counter >= 5) { if (heizstabIstEingeschaltet) { vusb.writeDigital(129); } else { vusb.writeDigital(1); } } } } private float ermittleAktuelleTemp() { float resultTemp = 0f; for (int i = 0; i < 20; i++) { int analogValue = vusb.readAnalog1(); float temp = (5f * 100f * analogValue) / 1024f; resultTemp += temp; warteMs(10); } return resultTemp / 20; } } ```

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe Vorschlag A - 2 · LK 2022 · Aufgabe Vorschlag B - 1.5 · LK 2022 ›

Mehr Aufgaben zu Klassen und Methoden implementieren