Zuletzt geändert am 28. Januar 2016 um 23:47

SpaceInLasers

Version vom 28. Januar 2016, 23:47 Uhr von Shintaro (Diskussion | Beiträge) (Serielle Kommandos)

SpaceNlasers header.jpg

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.

Hardware

  • Empfänger: SFH 300-3/4 (geht direkt mit dem internen Pull-Up am Analog-Eingang)

Empfang des Schusses ohne Startreferenz

  • Empfänger liefern analoges Signal, das wird auch analog eingelesen. Je mehr Licht empfangen wird, desto geringer wird der gelesene Analog-Wert
  • Bei Umgebungslicht den Wert für Sensor-Dunkel langsam nachführen
  • Ab unterschreiten eines Thresholds kann vom ersten Bit ausgegangen werden (das ist immer 1 = Licht an)
  • Irgendwie (TM) die Länge dieses Bits bestimmen - wenn lang genug, bei Flankenwechsel auf Bit-Empfangsmodus gehen

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


Neopixel Animationen aus FastLEDAnim.cpp _aONNAABBCCDD:

Effekt NN = Animation number AA BB CC DD
Do nothing 00 - - - -
Blank all (set to Black) 01 - - - -
Set to color RGB 02 red green blue -
Shot like effect: White, flickering dim down 255 steps 07 Speed in 0.1ms per step, 0 switch to fire effect - - -
Fire like effect: Lava-Palette flickering 08 - - - -
wave animation parallel, (destroy animation) 09 red green blue speed factor as two digit hex, min = 1 higher is faster
wave animation seriel sequence RGB 0A red green blue speed factor as two digit hex, min = 1 higher is faster
UFO animation: useless with one led... 10 red green blue -


Analog Animationen aus AnalogDAnim.cpp _AONNAABBCCDD:

Effekt NN = Animation number AA BB CC DD
Do nothing 00 - - - -
Blank all (set to PWM 0) 01 - - - -
Set PWM directly 02 PWM value - - -
Fade PWM up 10 Start value Stop value Speed in 0.1ms steps Repeat count (0=forever)
Fade PWM down 11 Start value Stop value Speed in 0.1ms steps Repeat count (0=forever)
Flash 20 On PWM value (Off is 0) On time in 10ms steps Off time in 10ms steps Repeat count (0=forever)
Blink 21 On PWM value (Off is 0) On time in 100ms steps Off time in 100ms steps Repeat count (0=forever)


Animationen:

  • Gun Shot: Aa00710 (Für Barrel)
  • Rumble Shot: AA011FF000401
  • Blitz 8x: 4A120FF040408

Virobi UFO Animationen:

  • Off: A60000000000
  • Motor konfiguration: A500BBCC

BB = Motor speed normal mode 00-FF CC = Motor speed panic mode 00-FF

  • Normal Mode: A601RRGGBB00

RR = red [00-FF] GG = green [00-FF] BB = blue [00-FF]

  • Panic Mode: A60ARRGGBB00

RR = red [00-FF] GG = green [00-FF] BB = blue [00-FF]


Schuß IDs (1 = Laser On):

  • Waffe A Hauptschuß: 0x91 [0 1001 0001], Sekundärschuß: 0x95 [0 1001 0101]
  • Waffe B Hauptschuß: 0xA2 [0 1010 0010], Sekundärschuß: 0xA6 [0 1010 0110]

Game Code

Source code git hub [1]

Class reference [2]

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
  • galvoscanner [3]

Make Rhein Main 2016 - Location Bilder

Ultimedia

after countless fails ...

Fail.gif

... we installed all the cool stuff in the "tunnel"