This is the software for a stop watch designed for roller derby jam timing. It's made out of an arduino with a 128×32 OLED display.
If there's enough interest, i'll produce a small batch of CounterClocks, so let me know.
If you like this project, please consider supporting my League, Bear City Roller Derby
Pull requests welcome.
- Adafruit_GFX
- Adafruit_SSD1306
- Adafruit_FeatherOLED
- ESP8266WiFi (If you use the Adafruit Feather HUZZAH)
Yes, it's crooked and rough, but it works like a charm.
In the top left corner, Jam and Period number are indicated. Below the period clock is shown. In the left bottom, the current state is displayed.
On the right bottom, symbols indicate remaining Team Timeouts and Official Reviews. And the big clock on the right shows the clock for Jam, Lineup, Timeout and Halftime.
There are three buttons: Button A (Green), Button B (Red) and Button C (Black). There's also a vibrating motor, giving some haptic feedback.
If configured (wifi
set to true
), the device will try to connect to a WiFi Network. If successful, there are three differnt Options:
Button A will start the device in full WiFi mode, every event will be sent to the server. Button B will start the device in Clock Sync mode, only the period clock will be synced after the begin of each Jam. Button C will disable the WiFi.
The game is started by pressing any of these buttons. The game then starts in Lineup Mode.
In Lineup Mode the timer is set to 30 Seconds and will count down to 0. At 0 the device switches to Jam Mode automatically and resume the Period Clock if stopped.
At five seconds the device will buzz. At four to one seconds, the device will do a short buzz every second. At zero seconds, when the jam starts, the device will do a long buzz.
Pressing Button A will start the jam immediately and the device will switch to Jam Mode.
When the Period Clock ist stopped (after a timeout or in the beginning of a period), pressing Button B will set the Lineup Clock to 5 seconds immediately.
Pressing Button C will start a timeout and the device will switch to Timeout Mode.
When the Period Clock is at 00:00, the device will switch to Halftime or End of Game Mode.
In Jam Mode, the timer is set to 2:00 and will count down to 0. The last 5 seconds will be indicated by a short buzz every second. At 0 the Jam ends and the devices switches back to Lineup Mode.
Pressing Button A or B will call off the jam immediately and the device will switch to Lineup Mode, when the Jam is on for at least 3 seconds.
Pressing Button C will start a timeout and the device will switch to Timeout Mode. When Button C is pressed within the first three seconds, it is assumed the Timeout was called during Lineup and the Jam wasn't started.
In Timeout mode, the Period Clock is stopped.
Every Timeout starts as an Official Timeout. Pressing Button C cycles through Timeout and Adjust Modes.
Pressing Button A or B will end the official Timeout and the device will switch to Lineup Mode.
When the Period Clock was at unter 30 seconds at the end of the last jam, Button A will resume the Period Clock, Button B will not. Use Button B at your discretion when an Official Timeout is called after a Team Timeout or Official Review to prevent the Official Timeout from killing the otherwise set Jam. (Yes, that's a bit mindboggling.)
A Team Timeout will end autmatically at 60 seconds and the device will switch to Lineup Mode.
Pressing Button A will decrease the number of Team Timeouts shown on the right. Pressing Button B will decrease the number of Team Timeouts shown on the left.
When the Timeout Clock passes 50 seconds, the device will give a short buzz to remember the JT to give a verbal 10 seconds notice. From 55 to 59 Seconds, the device will give a short buzz.
When the Timeout Clock passes 60 seconds while not in Team Timeout Mode, pressing button A will end the Timeout in Team Timeout Mode.
Pressing Button A will mark the Official Review Icon shown on the right. Pressing Button B will mark the Official Review Icon shown on the left.
A buzz will indicate the one minute mark in Official Review mode.
After one minute, Pressing Button A or B will end the Official Review. While Button A will retain the Review Icon, Button B will delete it. Ending the Timeout in any other mode will always retain the review.
Pressing Button A will increase the number of Seconds or Minutes on the Period Clock. Pressing Button A will decrease the number of Seconds or Minutes on the Period Clock.
Pressing Button A will increase the number of Jams. Pressing Button B will decrease the number of Jams.
The Halftime will not end automatically. Pressing Button A or B will end the Halftime and start a new Period. Official Reviews will be restored and the device will switch to Lineup Mode.
Pressing Button C will reset the Halftime Clock, start a timeout and the device will switch to Timeout Mode. This is useful when someone uses their Official Review after the last Jam.
Pressing Button B will initiate an overtime Jam. The Lineup Clock will be set to 60 seconds and the device will switch to Lineup Mode.
Pressing Button C will start a timeout and the device will switch to Timeout Mode. This is useful when someone uses their Official Review after the last Jam.
The WiFi protocol is rather simple. The device will sent UDP packets to port 16016 on it's Network Gateway. These contain some ascii commands:
gst
: Start of Gameeog
: End of gamepen
: End of Periodjst
: Start of Jamjen
: End of Jamoto
: Official Timeouttto:1
: Team-Timeout (Team 1)tto:2
: Team-Timeout (Team 2)orv:1
: Official-Review (Team 1)orv:2
: Official-Review (Team 2)rrv:1
: Retained Review (Team 1)lrv:2
: Lost Review (Team 2)rsm
: Resume Game (After Timeout or Intermission)otj
: Overtime Jamclk:<time>
: Set Period Clock to this number of remaining Milliseconds
See Scorehub for an implementation.
Those are the parts i used for my prototype.
- Adafruit Feather HUZZAH with ESP8266 WiFi
- Adafruit FeatherWing OLED
- Vibrating Mini Motor Disc
- 16mm Panel Mount Momentary Pushbutton Black, Red, Green
- 250 mAh LiPo Battery
- Some Pin Headers
And for the Casing
- Some Scrap 3mm Plexiglass
- 4× 15mm M3 Spacers ans Screws
- 4× 18mm M2.5 Hex Bolts and Nuts
- A leftover lanyard
Tools and Materials
- Soldering iron and tin solder
- Screwdriver and Plyers
- Drill tool
- Glue and Velcro
In case you want to recreate my prototype, you
- Source a nice case
The Font is based on Tom Thumb and Licensed under a 3-clause BDS license. Everythin else is released into the public domain.