09_04_TemperaturAmpelBesser

Calliope-Kurs (Lehrer Herrengasse)

Jogi Künstner, Turbine Brunnen

Frühjahr 2019

Download Folien

Download Kursteil: 09_04_TemperaturAmpelBesser als DinA4-PDF-Folien
Download Kursteil: 09_04_TemperaturAmpelBesser als PDF-Folien im 16:10-Format

Die verbesserte Temperatur-Ampel

Echter grüner Bereich

Nun wollen wir die Temperatur-Ampel etwas verbessern.

Echter grüner Bereich

Neue Temperatur-Bereiche
Neue Temperatur-Bereiche

Wenn-Dann erweitert

Ebenso wie im “echten Leben” kann man auch das Wenn-Dann - Programmier-Konstrukt erweitern.

Mit solch einem Konstrukt können wir nun unserer Temperatur-Abfrage erweitern um eine zusätzliche Abfrage grösser 25° C
Und die Farben müssen wir natürlich auch noch anpassen.

Erweiterung in der Programmier-Oberfläche

Um das Wenn-Dann - Konstrukt in der Programmier-Oberfläche zu erweitern, muss im “Wenn-Dann-Puzzle-Stück” das Zahnrädchen benutzt werden.
Das öffnet die Tool (= Werkzeug)-Box des Wenn-Dann-Puzzleteils.

ToolBox
ToolBox

Erweiterung in der Programmier-Oberfläche

Leider merkt man bei diesen Spezialitäten, dass die Programmier-Oberfläche noch nicht an allen Stellen vom Englischen ins Deutsche übersetzt wurde, dann hier kommen plötzlich:

ToolBox Offen
ToolBox Offen

Erweiterung in der Programmier-Oberfläche

Die Benutzung ist hier auch etwas gewöhnungs-bedürftig:

Erweiterung in der Programmier-Oberfläche

Toolbox Miniatur
Toolbox Miniatur

Einbau der zusätzlichen Abfragen

Nun können wir also in die zusätzlichen Abfragen unsere weiteren Überprüfungen auf Temperatur > 25 einklicken (am Besten die Überprüfung per rechter Maustaste von oben kopieren) und die LED-Farben-Setzen befehle einklicken und die Farben entsprechend ändern.

Neues Programm ElseIf
Neues Programm ElseIf

Nun können wir das zuerst im Simulator ausprobieren, indem wir die Temperatur ändern und die Farbe der LED beobachten.

Ein Bug ( ein Fehler) !

Dazu können wir mal versuchen, die Temperatur auf > 26°C, also z.B. 30°C einzustellen und dann das Programm anschauen / beobachten.

Dazu eignet sich die Schnecke.
Die lässt das Programm im Simulator im Schneckentempo ablaufen und zeigt jeweils durch Hervorheben an, welcher Schritt gerade ausrchgeführt wird.

Ein Bug ( ein Fehler) !

Bugsuche Schnecke
Bugsuche Schnecke

Das ist schonmal eine grosse Hilfe und könnte uns bei der Fehlersuche unter die Arme greifen.

Ein Bug ( ein Fehler) !

Was passiert?
Auch eine Temperatur von z.B. 30°C, die ja als rot angezeigt werden soll, geht durch das ganze Wenn-Dann-Konstrukt durch. Wenn irgendeine Bedingung erfüllt ist, dann wird die zugehörige Aktion durchgeführt und dann das Konstrukt verlassen.

Umbau des Wenn-Dann-Konstrukts

Nachdem wir diesen Fehler gefunden haben, müssen wir unser “Wenn-Dann” - Konstrukt umbauen:

Vor dem Umbau spielen wir das hier einmal durch :

Vergleich auf “Papier”

gemessener Wert : 30

Vergleich auf “Papier”

gemessener Wert : 24

Vergleich auf “Papier”

gemessener Wert : 19

Neu zusammensetzen

Nun ziehen wir also unsere Vergleichs-Puzzle-Teile und unsere RGB-LED-Farben-Setz-Puzzle-Teile raus:

If Else Frei Geraeumt
If Else Frei Geraeumt

Neu zusammensetzen

und setzen es wie angedacht wieder zusammen.

Neue Struktur Und Geht
Neue Struktur Und Geht

Wenn wir nun die Temperatur mit der Maus im Simulator ändern, dann sehen wir, dass die Farb-Anzeige unsere LED wir gewünscht funktioniert.

Download in der Calliope

Jetzt ist der Programm-Code eigentlich gut genug, um eine echte Messung in unserem echten Calliope durchzuführen.

Wir laden das Programm dazu auf den Calliope

JavaScript-Code

Java-Script-Code

let AktuelleTemperatur = 0
basic.forever(() => {
    AktuelleTemperatur = input.temperature()
    basic.showNumber(AktuelleTemperatur)
    basic.pause(500)
    basic.showLeds(`
        # . . # #
        . . # . .
        . . # . .
        . . # . .
        . . . # #
        `)
    basic.pause(500)
    basic.clearScreen()
    basic.pause(500)
    if (AktuelleTemperatur > 25) {
        basic.setLedColor(Colors.Red)
    } else if (AktuelleTemperatur > 21) {
        basic.setLedColor(Colors.Red)
    } else {
        basic.setLedColor(Colors.Blue)
    }
})

Download Hex-Code

Hex-code

Lizenz/Copyright-Info

Für alle Texte und Bilder auf dieser Seite gilt: