This repository holds a firmware for CircuitSetup's Time Circuits Display kit which allows to control each element through DMX. It is designed to work using the Sparkfun LED-to-DMX shield. (DMX control is also available for Flux Capacitor and SID).
CircuitSetup's TCD with this firmware was used in this musical:
Click to watch the video |
DMX channel | Function |
1 | Destination Time: Month |
2 | Destination Time: Day |
3 | Destination Time: Year 1000s |
4 | Destination Time: Year 100s |
5 | Destination Time: Year 10s |
6 | Destination Time: Year 1s |
7 | Destination Time: Hour |
8 | Destination Time: Minute |
9 | Destination Time: AM/PM |
10 | Destination Time: Colon (0-85=off; 86-170=on; 171-255=blink) |
11 | Destination Time: Brightness (0=off; 1-255=darkest-brightest) |
12 | Present Time: Month |
13 | Present Time: Day |
14 | Present Time: Year 1000s |
15 | Present Time: Year 100s |
16 | Present Time: Year 10s |
17 | Present Time: Year 1s |
18 | Present Time: Hour |
19 | Present Time: Minute |
20 | Present Time: AM/PM |
21 | Present Time: Colon (0-85=off; 86-170=on; 171-255=blink) |
22 | Present Time: Brightness (0=off; 1-255=darkest-brightest) |
23 | Last Time Departed: Month |
24 | Last Time Departed: Day |
25 | Last Time Departed: Year 1000s |
26 | Last Time Departed: Year 100s |
27 | Last Time Departed: Year 10s |
28 | Last Time Departed: Year 1s |
29 | Last Time Departed: Hour |
30 | Last Time Departed: Minute |
31 | Last Time Departed: AM/PM |
32 | Last Time Departed: Colon (0-85=off; 86-170=on; 171-255=blink) |
33 | Last Time Departed: Brightness (0=off; 1-255=darkest-brightest) |
If speedo support is enabled (by defining TC_HAVESPEEDO in tcd_global.h), additional channels are supported:
DMX channel | Function |
57 | Speedo: Speed (0-255 = 0-88mph) |
58 | Speedo: Brightness (0=off; 1-255=darkest-brightest) |
The DMX protocol uses no checksums. Therefore, transmission errors cannot be detected. Typically, such errors manifest themselves in flicker or a corrupted display for short moments. Since the TCD is no ordinary light fixture, this can be an issue.
In order to at least filter out grossly malformed/corrupt DMX data packets, the firmware supports a simple DMX packet verifier: For a DMX data packet to be considered valid, channel 46 must be at value 100. If a packet contains any other value for this channel, the packet is ignored.
To enable this filter, DMX_USE_VERIFY must be #defined in tcd_global.h. This feature is disabled by default, because it hinders a global "black out". If your DMX controller can exclude channels from "black out" (or this function is not to be used), and you experience flicker, you can try to activate this packet verifier.
To update the firmware without Arduino IDE/PlatformIO, copy a pre-compiled binary (filename must be "tcdfw.bin") to a FAT32 formatted SD card, insert this card into the TCD, and power up. The TCD will display "UPDATING" and update the firmware. Afterwards it will reboot.
Requires esp_dmx library v4.0.1 or later.
TCD | LED-to-DMX shield |
PWR Trigger (IO13) | J1 P14 |
TT OUT (IO14) | J1 P15 |
TT IN (IO27) | J1 P16 |
5V/GND from "Fake Power" or "Time Travel" | J12 |
The required 3.3V are generated through a voltage converter (like this one) attached to the LCD-to-DMX shield:
GND is taken from J1 P4, 5V from J2 P3. The 3.3V output is on J1 P2.