Skip to content

Latest commit

 

History

History
86 lines (64 loc) · 3.31 KB

README.md

File metadata and controls

86 lines (64 loc) · 3.31 KB

Voting machine

Reduce the time spent managing tokens and cards for voting while playing The Resistance: Avalon.

How to use it

Startup:

  1. Connect the player controllers to the coordinator.
  2. Connect the coordinator to power.
  3. Have everyone push one of the buttons on their controller.
  4. Push the button on the coordinator once.
  5. Each players controller should light up.

To start a public vote, i.e., determine if a group of players selected by the leader will go on a quest, press the coordinator button once. All the lights will turn off and everyone can cast their vote. Once all votes have been cast the controllers will light up showing each players' vote.

To start a private vote, i.e., decide if a quest succeeds or fails, press the coordinator button once for each player going on the mission. Each player on the mission can then vote and once all votes have been cast the controllers of players who voted will light up, but the results of the votes will be shuffled among players to maintain anonymity.

How to build it

Parts

Physical components

  • Convert the .scad files in to .stl files with OpenSCAD.
  • Print 10 copies of the controller.
  • You'll need one coordinator, but you'll likely need to modify it to fit your layout of the components.
  • I glued a sheet of rubber to the button of each controller to prevent them from sliding and help determine which side is which.
  • I attached the coordinator case to the circuit board with zip ties.

Wiring

Controller wiring diagram

The diagram above shows the wiring of one of the controllers. All of the controllers share the wire from the relay. The relay can be omitted if each controller is given a dedicated pin on the microcontroller for the pin for that wire, however on the Teensy 3.1 this means using the surface mount headers. Pin 1 and 14 on the diagram increment for each additional controller.

Each controller was partially assembled and soldered together. Each LED can be attached diagonally across the back of the corresponding button. The coordinator was assembled on perf-board.

Programming

You'll need two libraries, Bounce2 and Entropy. I compiled and uploaded coordinator.c with Arduino.

How to improve it

  • Buttons on the controllers need some feedback. I choose soft buttons to avoid making it detectable when people vote, but its not clear to players that their vote has been cast.
  • Automatic registration of players at startup.
  • Wireless controllers would be cool.

License

Copyright (c) 2017 Kevin Stock

Distributed under the MIT license.