Objective: Program a simple test in Python, running on a Raspberry Pi, to control a large LED display in real time.
A previous project I’ve created is a large 8′ x 4′ LED board that displays randomized abstract patterns, run by an Arduino-compatible chipKIT UNO32 microcontroller. An example of the visuals produced can be viewed here (this is video of a smaller 4′ x 4′ display, but the result is the same). This exercise explores how to control that same board using a Raspberry Pi programmed with Python.
Here is video document of the result:
Raspberry Pi interfacing with WS2801 LED display.
The code for this example is available via Github here (it’s the “joystick_move_test.py file”).
This program relies heavily on the Python Pygame library for the graphics, animation and joystick interfacing, and on the Adafruit Python WS2801 code to control the WS2801 LEDs via Python and the Adafruit Python GPIO library to interface the LEDs with the Pi’s pin outs. (These are the same Adafruit libraries that I’ve tried using in Processing’s Python mode on the Pi without success…but they work just fine in native Python.)
For the Pygame graphics and controller features, the following online tutorials were very valuable and used as a starting point:
- http://programarcadegames.com/index.php?chapter=introduction_to_graphics&lang=en
- http://programarcadegames.com/index.php?chapter=controllers_and_graphics&lang=en
- http://thepythongamebook.com/en:pygame:step003
As mentioned in the video, some visual glitching occasionally occurs on the LED board during the test. Using shorter (and perhaps thicker gauge) wires for the DATA and CLOCK connections between the Pi and the LEDs would likely alleviate or eliminate this issue.