Das lernst du heute
- Werte vorberechnen
- Tabelle im Stack
- Index aus Messwert
Die Abluft der Werkstatt soll mit der Temperatur stärker laufen – aber nicht linear. Bis 22 °C fast nichts, ab 30 °C kräftig, ab 34 °C voll. Eine Formel dafür wäre lang und schwer zu ändern. Eine Tabelle ist kurz und jeder sieht sofort, was passiert.
Werte vorberechnen
Eine Nachschlagetabelle enthält fertige Ergebnisse. Statt zu rechnen, schaut der Chip nach. Das lohnt sich in drei Fällen:
- Die Kennlinie hat keine einfache Formel (Knicke, Stufen, Erfahrungswerte).
- Die Formel ist teuer, etwa mit
pow,expoder einer Schleife. - Jemand soll die Werte später anpassen, ohne die Rechnung zu verstehen.
Tabelle im Stack
Die Tabelle legst du einmal vor start: mit poke an. Jeder Platz ist eine Stufe:
| Index | Temperatur | Pumpe |
|---|---|---|
| 0 | 20–21 °C | 0 |
| 1 | 22–23 °C | 5 |
| 2 | 24–25 °C | 10 |
| 3 | 26–27 °C | 20 |
| 4 | 28–29 °C | 30 |
| 5 | 30–31 °C | 50 |
| 6 | 32–33 °C | 70 |
| 7 | ab 34 °C | 100 |
Index aus dem Messwert
Vier Schritte machen aus einer Temperatur einen Tabellenplatz: Versatz abziehen, durch die Schrittweite teilen, abrunden, begrenzen.
sub idx temp CELSIUSOFFSET
sub idx idx T_START # Versatz
div idx idx SCHRITT # Schrittweite
floor idx idx
clamp idx idx 0 LETZTER # nie außerhalb der Tabelle
get wert db idx
27 °C ergibt (27 − 20) / 2 = 3,5, abgerundet 3 – die Pumpe läuft mit 20. Unter 20 °C wird der Index negativ, clamp macht 0 daraus. Über 34 °C bleibt er bei 7.
Ein Index außerhalb der Tabelle liest fremde Daten oder hält den Chip an. Ohne clamp liefert 50 °C den Index 15 – dort steht vielleicht dein Ringpuffer. clamp ist bei jeder Tabelle Pflicht, ebenso ein gültiger Index bei NaN.
Eine Tabelle kostet eine Zeile pro Eintrag. Bei 8 Einträgen ist das günstig, bei 50 nicht mehr. Morgen siehst du, wie Interpolation mit wenigen Stützstellen auskommt.
Schaubild
Übung
Aufgabe
Die Tabelle liegt schon im Stack. Lies die Temperatur des Sensors „Werkstatt“, berechne den Index (Start 20 °C, 2 °C je Platz, 0 bis 7) und schreibe den Tabellenwert als Setting an die Pumpe „Abluft“. Ohne Sensor bekommt die Pumpe 0.
Hinweise
Hinweis 1
Index: Celsius, minus T_START, durch SCHRITT, floor, clamp idx idx 0 LETZTER.
Hinweis 2
get wert db idx holt den Tabellenwert.
Hinweis 3
Bei NaN zuerst einen gültigen Index setzen, am Ende den Wert mit select auf 0.
Quiz
3 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator 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