stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 79

Tag 79 von 365 · Einsteiger · Monat 3: Erste Systeme

Knopf als Schalter

Ein Knopf meldet nur einen kurzen Puls. Mit Flanke und xor wird daraus ein Schalter, eine Sperrzeit fängt Doppeldrücke ab.

Lektion 14 Min. Woche 12

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.

Achtung

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.

Tipp

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 Activate zählt.
  • Nach jedem Umschalten zählt SPERRZEIT Takte 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

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall