8 x 8 pixel RGB Display

This is a prototype for a 8 * 8 pixel RGB LED display. Multiplexing and PWM-ing should be done by the host controller.

I have it working with 8 intensities per primary color on an Arduino.

LED intensity depends on the current though the LED (the forward current I)

The problem with LED matrices is that the cheaper ones (around 9 EUR) mix LED’s from different batches with different currents (I{{sub|f}}) and intensities at the same voltage. The more expensive models (around 25 USD) use LED’s from the same batch or bin.

Here is an example of one the less expensive LED matrix :

The way around this is to use constant current drivers like the TLC5916.

<more to follow>

8 x 8 pixel red display

The 8 x 8 pixel red display is one of the first projects I did after a long hiatus. I wanted to build something useless and work on my C programming skills.

The schema was made in CadSoft Eagle, the layout was laser-printed overhead sheet and the board was etched on the kitchen. Nowadays I use MakePCB or Sparkfun‘s BatchPCB.

The schematic is really simple : a 74HCT595 as high side driver, and a 74HCT595 driving a ULN2803 as low side driver.

I kept the board simple as well so I could etch it myself.

The built up board :

The software bitbangs a couple of IO ports to control the two shift registers, intensity variation is done by changing the duty cycle of the leds. This example has 3 bits intensity (8 different intensities).  We can use these “8 pixels x 8 pixels x 3 bit” intensity as 3 bitmaps with 8 pixels x 8 pixels. The highest valued bitmap (the MSB of the intenisty) is shown 2 x als long as the second highest. The second highest value is shown 2 x as long as the LSB.

Example 2 :

Making character bitmaps is a lot of work. If you have access to a unix box of sorts you can use figlet and the 5×7 font to generate these for you.

This will result in a monospaced font which are not as pretty as the hand made fonts.

For instance, you can generate the character “0” with :

figlet -f 5x7 0 | tr ' #' '01' | sed "s/\([01]\{6\}\)/B8(\100),/"

And this will output :
B8(01000000),
B8(10100000),
B8(10100000),
B8(10100000),
B8(10100000),
B8(01000000),
B8(00000000),

I used Tom Torfs binconst macro to make the bitmaps usable.

Example 3 :