SpaceInLasers: Unterschied zwischen den Versionen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche
(Serielle Kommandos)
(Serielle Kommandos)
Zeile 53: Zeile 53:
 
|-
 
|-
 
|| Do nothing || 00 || - || - || - || -  
 
|| 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 || - || - || - || -
 +
|-
 +
|| UFO animation: useless with one led... || 10 || red || green || blue || -
 
|-
 
|-
 +
|}
 +
 +
 +
Analog Animationen aus AnalogDAnim.cpp _AONNAABBCCDD:
 +
{| class="wikitable" border="1" cellpadding="4" cellspacing="0" style="background:#f9f9f9; border-collapse:collapse;"
 +
! 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)
 
|}
 
|}
  

Version vom 25. Januar 2016, 20:41 Uhr

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 - - - -
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)


Animationen:

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


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"