Skip to content
/ RGB_DMD Public
forked from ecurtz/RGB_DMD

Display Pinball DMD signals on RGB LED panels using a Teensy Development Board.

License

Notifications You must be signed in to change notification settings

PPUC/RGB_DMD

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RGB_DMD LED Matrix Display for Pinball

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, eli@nuprometheus.com but is built on top of open source work by many people, primarily the SmartMatrix display library.

Contents

License

The RGB_DMD source code is released under the MIT License.

HEX Folder

Contains compiled .hex versions of the project, which can be loaded directly to the board using the Teensy Loader or Teensy Qt applications.

SRC Folder

Contains the Arduino / C++ source code for the project.

UTIL Folder

Utilities for testing and configuring data.

Building RGB_DMD

Tools

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.

Libraries

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.

Settings

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.

Using DMD Input

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.

Using USB Input

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.

Sending From Python

Using USB input from Python requires the PySerial Extension. If you are using PyProcGame or the Mission Pinball Framework PySerial may already be installed.

Sending From C/C++/C#

About

Display Pinball DMD signals on RGB LED panels using a Teensy Development Board.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 94.2%
  • C 5.8%