Close
0%
0%

LARP Gaming Computer Bracer

A fusion of costuming for a "Werewolf: The Apocalypse" LARP combined with tech pieces to track stats and "roll" using rock/paper/scissors.

Similar projects worth following
71 views
0 followers
A tech-enhanced bracer to use as both a costuming piece and a character sheet/dice for a Werewolf-based LARP.

My character in a "Werewolf: The Apocalypse" Live Action Role-Playing (LARP) game is a member of the tribe "Glass Walkers" which openly embraces technology. He even has the "Steel Fur" trait which gives him cybernetic implants.


My friend and pack-mate in the game has the same ability and we wanted to make a way to track various stats in the game in a way that better suited our characters. Additionally the game uses rock/paper/scissors as a dice mechanic and Griffin's (the physical designer) wife also plays and knows his "tells" for RPS. So we wanted to make a computerized version that wouldn't have the tells.

The bracer has one touchscreen to display and track the stats, an accelerometer, an a 8x8 LED matrix to display glyphs and RPS symbols. The bracer will have an outer smoke/clear pexiglass layer and built with foam core. There is an underlayer of EL tape for effect.

  • 1 × Accelerometer Breakout Board
  • 1 × ATMega Chip
  • 1 × MAX Driver Chip
  • 1 × Touch Display
  • 1 × Transparent Smoke Acrylic Sheet

View all 8 components

  • Rock, Paper, Scissors!

    Chad Lawson02/21/2017 at 00:39 0 comments

    After spending a lot of time with the accelerometer sample code in Arduino and mapping my movements to a CSV, I wrote some code to handle the RPS when the arm is moved in the normal "throwing chops" motion.

    #include <Wire.h>
    #include <Adafruit_MMA8451.h>
    #include <Adafruit_Sensor.h>
    
    #define TIMEUPDOWN  150
    #define TIMEBETWEEN 800
    #define THRESHDOWN  -8000
    #define THRESHUP    8000
    
    Adafruit_MMA8451 mma = Adafruit_MMA8451();
    int fistPumpCount = 0;
    int lastUp = 0;
    int lastDown = 0;
    
    void setup(void) {
      Serial.begin(9600);
      
      Serial.println("Let's throw chops!");
      
      if (! mma.begin()) {
        //Serial.println("Couldnt start");
        while (1);
      }
      //Serial.println("MMA8451 found!");
      
      mma.setRange(MMA8451_RANGE_2_G);
      
    }
    
    void loop() {
      unsigned long timeStamp = millis();  
    
      mma.read();
      int fistPump = mma.y;
    
      if(fistPump > THRESHUP) {
        
        int timeDiff = timeStamp - lastUp;
        if( timeDiff > TIMEUPDOWN ) {
          lastUp = timeStamp;
          if( timeDiff < TIMEBETWEEN ) {
            fistPumpCount++;
          } else {
            fistPumpCount = 1;
          }
          Serial.print("Pump Up: ");
          Serial.print(fistPumpCount);
          Serial.println();
        }
      }
    
      if(fistPumpCount == 3) {
        randomSeed(timeStamp);
        int roshambo = random(1,4); // Stupid exclusive bit
        switch(roshambo) {
          case 1:
            Serial.println("Rock");
            break;
          case 2:
            Serial.println("Paper");
            break;
          case 3:
            Serial.println("Scissors");
            break;
        }
        fistPumpCount = 0;
      }
    }

View project log

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates