Das lernst du heute
- Zustände als Text anzeigen
- Wechseltexte
- Zahl und Text kombinieren
Eine einzige kleine Anzeige im Flur soll zwei Dinge zeigen: ob die Temperatur in Ordnung ist und wie warm es genau ist. Abwechselnd, als Text. Dafür brauchst du alles aus dieser Woche: STR(), Felder mit ins, Bits mit ext und den String-Modus der Anzeige.
Die Anlage
| Gerät | Prefab | Name |
|---|---|---|
| Gassensor | StructureGasSensor | „Raum“ |
| LED-Anzeige | StructureConsoleLED5 | „Info“ |
Zahl und Text kombinieren
STR() kann keine Register lesen. Aber jedes Zeichen ist ein 8-Bit-Feld, und Ziffern sind ASCII-Codes: „0“ ist 48, „1“ ist 49 und so weiter. Also nimmst du eine Vorlage und setzt die Ziffern zur Laufzeit ein:
| Zeichen | T | = | Zehner | Einer | C |
|---|---|---|---|---|---|
| Bits | 32–39 | 24–31 | 16–23 | 8–15 | 0–7 |
STR("T=00C") ist die Vorlage. Zehner und Einer rechnest du mit div, floor und mod aus, addierst 48 und setzt sie mit ins an ihre Stelle.
Wechseltexte
Ein Takt-Zähler läuft hoch. Bit 2 des Zählers wechselt alle vier Takte zwischen 0 und 1 – genau der Rhythmus für den Wechsel. ext tmp takt 2 1 holt es heraus, ohne dass du einen zweiten Zähler brauchst.
Teilziele
- Die Anzeige steht im String-Modus und zeigt bei 22 °C „OK“.
- Unter 18 °C zeigt sie „LOW“, über 26 °C „HIGH“.
- Im Zahlentakt steht dort „T=22C“, zweistellig auch bei 5 °C („T=05C“).
- Alle vier Takte wechselt die Anzeige zwischen Zustand und Zahl.
- Ohne Sensor steht dort nur noch „ERROR“.
Die Temperatur muss vor dem Zerlegen in 0 bis 99 liegen. clamp temp temp 0 99 sorgt dafür, dass bei Hitze „T=99C“ erscheint statt eines kaputten Zeichens.
„T=00C“ hat fünf Zeichen. Mehr als sechs passen nicht in eine Zahl – „T=22.5C“ ist deshalb unmöglich. Plane Anzeigetexte immer mit Zeichenzahl.
Projektaufgabe
Aufgabe
Baue die Textanzeige nach den Teilzielen oben. defines und aliase stehen schon da.
Teilziele
- Teilziel 1: String-Modus und OK
- Teilziel 2: LOW und HIGH
- Teilziel 3: Zahl als Text
- Teilziel 4: Wechsel alle 4 Takte
- Teilziel 5: Sensor fehlt
Hinweise
Hinweis 1
Zehner: div ziffer temp 10, floor, add ziffer ziffer ASCII0, ins zahl ziffer 16 8.
Hinweis 2
Einer: mod ziffer temp 10, plus 48, ins zahl ziffer 8 8.
Hinweis 3
Wechsel: add takt takt 1, ext tmp takt 2 1, select text tmp zahl text.
Quiz
2 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Alle Teilziele des Projekts bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden