RGB_DMD is software for displaying either colorized signals from a pinball machine or color images from a host PC onto RGB LED matrix displays using the Teensy 3.2 development board and a custom carrier board. RGB_DMD was written by Eli Curtz, [email protected] but is built on top of open source work by many people, primarily the SmartMatrix display library.
The RGB_DMD source code is released under the MIT License.
Contains compiled .hex versions of the project, which can be loaded directly to the board using the Teensy Loader or Teensy Qt applications.
Contains the Arduino / C++ source code for the project.
Utilities for testing and configuring data.
Arduino IDE is required for recompiling RGB_DMD from source or customizing the code.
Teensyduino is a required plugin that adds Teensy support to the Arduino IDE as well as the Teensy Loader tool for transferring compiled code to the development board.
These are additional third party code required when building RGB_DMD. They are distributed as source on github and are installed as described under Manual Installation at the Arduino reference.
SmartMatrix is used for outputting the signal to the RGB matrix. Link is to my fork which is required for hardware compatibility and has some optimizations.
FastCRC is used to calculate a checksum for DMD frames so they can be uniquely identified.
The Arduino IDE should be set to compile for Teensy by selecting Teensy 3.1 from the Tools : Board menu in the Arduino IDE.
RGB_DMD should be built to run at the 96MHz optimized (overclock) setting using the Tools : CPU Speed menu.
Pinball machines use a set of 6 signals to control a plasma or LED DMD. RGB_DMD captures these inputs to determine which CPU system the pin is using and rebuild the display images.
DOT CLOCK: Repeatedly switches between high and low to mark when the dot data should be read.
DOT DATA: Will be either on or off for each of the 128 dots in a single row of the DMD.
COLUMN LATCH: Marks the end of the row of dot data.
DISPLAY ENABLE: Turns the actual display output on and off. By varying the display enable time the overall brightness can be adjusted, and varying the time for different data on the same row is used to produce the effect of multiple shades on a single color DMD.
ROW CLOCK: Moves to the next display row. Separate from the column latch because one row may be updated and latched several times with different data before the transition.
ROW DATA: Used with row clock to mark the transition from the last row back to the first.
RGB_DMD may be controlled over USB from a host computer to store settings for the DMD input or display full color images for homebrew pinball machines.
Using USB input from Python requires the PySerial Extension. If you are using PyProcGame or the Mission Pinball Framework PySerial may already be installed.