Laser Shooting Gallery
- Von einer festen Position müssen Ziele mit dem Laser getroffen werden
- Typisch bis zu zwei Spieler gleichzeitig = zwei Pistolen
- Ziele bestehen aus einem Fototransistor und werden von einem Neopixel beleuchtet
- Bis zu 8 Ziele werden von einem Arduino verwaltet
- Bussystem mit RS485 zwischen den Ziel-Arduinos, den Pistolen-Arduinos und einem Spielmaster
- Spielmaster ist auch Busmaster, steuert das gesammte Spielgeschehen
- Aktiviert Leuchtziele
- Fragt Pistolentrigger ab
- Startet Schußsequenz
- Broadcast: "Bereit machen für Schuß". Die Nodes bringen Zeitintensive Aufgaben noch zu Ende, pausieren. Ggf. werden DMX-Lichter und andere langsame Störer abgeschaltet.
- Broadcast: "Schuß - Licht-Aus-Phase". Alle schnellen Lichter werden dunkel geschaltet.
- Broadcast: "Schuß - Einmeßphase". Der Dunkelwert der Sensoren wird nun gemessen.
- Broadcast: "Schuß - Bit0 - Bit7". Die Pistolen aktivieren den Laser mit bestimmten Code für jedes Bit. Pro Bit fragen die Zielcontroller mit etwas Verzögerung analog alle Kanäle ab und entscheiden ob das Bit 0 oder 1 ist.
- Broadcast: "Schuß beendet". Lichter wieder an, Zeitintensive Aufgaben werden weitergeführt.
- Unicast: Die Zielcontroller werden reihum abgefragt.
- Unicast: Ggf. werden Aktionen in den Zielcontrollern und den Pistolen getriggert, die einen Treffer anzeigen.
- Unklar ist noch, ob ggf. der gesammte Broadcast-Teil einfach Zeitgesteuert ablaufen wird.
Serielle Kommandos
Unicast Kommandos ist ein ASCII-Zeichen für die ID, diese ist 0-9 für die Targets und A-C für die Waffen-Controller. Alles andere sind Broadcast-Kommandos. Kommandos nur ASCII, terminiert Retrurn).
Broadcast Kommandos:
- sABC Bereit machen für Schuß, Licht-Aus + Schusswaffenselektion, Parameter wählt Waffen aus die schießen werden. Bei Empfang dieses Befehls werden Zeitintensive Tasks angehalten und ggf. Lichter aus gemacht.
- S Schuss abfeuern. Die Waffen senden den Schuss, die Empfänger empfangen den Schuss. Nach 9 Bitzeiten ist alles vorbei, Zeitintensive Tasks dürfen weiterlaufen und Lichter wieder aktiviert werden.
- I fragt ID des Arduinos ab, an dem Pin 13 mit A0 gebrückt war nach Reset
- I? fragt ID des Arduinos ab, kann bei mehreren zur Bus-Kollision führen
- Ixx schreibt ID des Arduinos, an dem Pin 13 mit A0 gebrückt war nach Reset. x steht für das ASCII-Zeichen der ID und muss zweimal hintereinander stehen.
Unicast Kommandos: _ ersetzen durch Target-Controller-ID
- _aONNAABBCCDD Neopixel Animation starten, O = Objekt Nummer, NN = Animation number (Hex), AABBCCDD (Hex, optionale Argumente)
- _AONNAABBCCDD Analog Animation starten, O = Objekt Nummer, NN = Animation number (Hex), AABBCCDD (Hex, optionale Argumente)
- _tr Targets am Block abrufen, Rückgabe: AABBCCDDEEFFGGHH = data value
- _tO Target mit Objekt Nummer O detailiert abfragen
- _b fragt Buttons und letzten Barrel-Count ab. Rückgabe AABB: AA Bitfeld für Buttons, 1 gedrückt, BB Barrelcount
Animationen:
- Gun Shot: Aa00710 (Für Barrel)
- Rumble Shot: AA011FF000401
- Blitz 8x: 4A120FF040408
- UFO: 5a01000004000
Spielprinzip
Shooting-Gallery
- Einzeln oder optional zu zweit auf maximale Punktzahl
- Feste Zeitdauer, evtl. Bonus-Zeit schießbar
- Nur leuchtende Ziele können getroffen werden
- Je länger Ziel leuchtet, desto weniger Punkte, Ziel geht erst bei Treffer aus (Option)
- Shotgun nach Barrel-Laden
- Limitierte Feuerrate, ggf. erhöhbar durch drehen am Barrel
Optionitis
- Video aus Gangansicht
Ultimedia
after countless fails ...
... we installed all the cool stuff in the "tunnel"