xyzio

Posts Tagged ‘beaglebone

Driving Adafruit’s RGB Matrix with Python on the BeagleBone Black

leave a comment »

I wrote this code to drive the Adafruit 32×64 RGB Matrix using a Beaglebone Black and Adafruit’s IO Python library.  The code is super simple – it writes a static color background to the top and bottom halves of the display through the shift registers and triggers the latch.  It then iterates through the addresses so the LEDs for that row turn on and then goes to the next address.  This should create a background color through persistence of vision.

Along the way I discovered:

The Python Library isn’t fast enough to drive the RGB matrix to provide a persistent display.  There is flicker and when updating colors, you see each row turn on and off.  You literally see the delay.  There are ways to speed up the writes by using the PRU or direct IO writes.  But I should not have to do that on a 1GHz processor.

The RGB matrix doesn’t light up unless you continually change the address.  This was really annoying when I was figuring things out.  I did not find this documented anywhere on the web except on rayslogic’s RGB writeup.

It appears the BeagleBone Black’s IO pins cannot push enough current to turn on the input schmitt triggers.  I spent a lot of time being frustrated because I couldn’t get the green and blue LEDs to light up on my board.
Finally I noticed the green LEDs were barely on and had a brightness gradient from low to high address.  My guess is the address pin was barely turning on which meant 0 was the most common address – hence the higher brightness on the lower rows.  I got around this by plugging the G(reen) input directly into the 5V pin on the BeagleBone Black.  Of course this now meant the green LEDs are always on!

Adafruit charges too much for the RGB panels.  For example, the seller kbellenterprises on ebay has a 16×32 RGB matrix for $16 including shipping.  Adafruit has the same panel for $25 and you pay for shipping.

Adafruit charges too much for male-to-male jumper wires.  The seller funny-diy on ebay sells 40 for $1.80 with shipping while Adafruit charges $4+shipping for their so-called “premium” wires.  Adafruit needs to rename them to “premium-priced“.

My Python Code:
https://bitbucket.org/xyzio/rgbmatrix/src/master/bb_python/logic.py

Sources:
http://www.rayslogic.com/propeller/programming/AdafruitRGB/AdafruitRGB.htm
https://learn.adafruit.com/setting-up-io-python-library-on-beaglebone-black/overview

 

Advertisements

Written by M Kapoor

April 3, 2015 at 4:12 pm