Das lernst du heute
- Ein Knopfdruck schaltet um
- Flanke statt Dauersignal
- Entprellen
Ein Hebel bleibt, wo du ihn hinstellst. Ein Knopf (StructureLogicButton) springt zurück. Trotzdem willst du oft mit einem Knopf das Licht ein- und beim nächsten Druck wieder ausschalten, wie mit einem Lichtschalter im Flur.
Was der Knopf meldet
Drückst du den Knopf, springt Activate auf 1. Nach gut einer halben Sekunde setzt das Spiel ihn selbst auf 0 zurück. Ein Druck ist also ein kurzer Puls, und der Chip sieht ihn einen oder zwei Takte lang. Solange der Puls läuft, nimmt der Knopf keinen neuen Druck an.
Der naive Versuch
lbn knopf TASTER HASH("Lichttaster") Activate Average
xor licht licht knopf # bei 1 umschalten
Das schaltet in jedem Takt um, in dem Activate 1 ist. Sieht der Chip den Puls zwei Takte lang, schaltet er an und gleich wieder aus. Das Licht reagiert scheinbar zufällig.
Flanke statt Dauersignal
Umschalten soll nur die steigende Flanke, also der eine Takt, in dem der Knopf von 0 auf 1 geht:
sgt flanke knopf alt # gerade gedrueckt?
move alt knopf
xor licht licht flanke # nur bei der Flanke umschalten
sbn LAMPE HASH("Flurlicht") On licht
xor mit 1 dreht den Zustand um, xor mit 0 lässt ihn stehen. Genau das braucht ein Umschalter.
Entprellen mit Sperrzeit
Echte Taster prellen: Der Kontakt klappert und liefert mehrere Flanken hintereinander. Der Knopf im Spiel prellt nicht, aber Spieler drücken gern zweimal schnell hintereinander. Eine kurze Sperrzeit nach jedem Umschalten fängt das ab:
slez frei sperre # Sperrzeit abgelaufen?
and flanke flanke frei
xor licht licht flanke
sub sperre sperre 1
select sperre flanke SPERRZEIT sperre
max sperre sperre 0
Nach einem Umschalten steht sperre auf SPERRZEIT und zählt jeden Takt um 1 herunter. Erst bei 0 zählt die nächste Flanke wieder.
Ohne Flanke hängt das Verhalten vom Takt ab: Mal sieht der Chip den Puls einmal, mal zweimal. Solche Fehler fallen beim Testen leicht durch und tauchen dann im Spiel auf.
Fehlt der Knopf, liefert Average NaN. sgt mit NaN ist 0, es gibt keine Flanke, und das Licht bleibt, wie es ist. Für Licht ist das in Ordnung.
Übung
Aufgabe
Der Knopf „Lichttaster“ (StructureLogicButton) schaltet die Wandleuchten „Flurlicht“ um: ein Druck an, der nächste aus.
- Nur die steigende Flanke von
Activatezählt. - Nach jedem Umschalten zählt
SPERRZEITTakte lang keine neue Flanke. - Fehlt der Knopf, bleibt das Licht, wie es ist – ohne Fehler.
Hinweise
Hinweis 1
Flanke: sgt flanke knopf alt, danach move alt knopf.
Hinweis 2
Sperre: slez frei sperre und and flanke flanke frei – nur ohne laufende Sperre zählt die Flanke.
Hinweis 3
Umschalten mit xor licht licht flanke, dann sperre herunterzählen und bei einer Flanke mit select neu setzen.
Quiz
4 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