Another 8x8 RGB matrix board


so Halley beat me, but only because my PCBs were rotting in a dark customs office. I wasn't notified it had arrived by our local mail.

Anyhow, IT'S ALIVE. It should be fully code compatible with Halley's shield - or vice versa :-)

Here are some pictures:

Some more are here

The oddest thing was, that the ATmega168 couldn't be flashed without a quartz. According to the datasheet it should have been set to run with the internal oscillator ?


I happen to have 5 PCBs and SMD parts for 4 more boards left. Just in case someone wants to play with it too :-)

Wow, nice job! That's pretty impressive-looking.


I like the madworm matrix smileys printed on it! What company did you use to make the board? I like your embedded-ATmel solution and the buttons on the back is a slick idea.

That looks fantastic. I like the integrated MCU too.


I used Seeedstudio's propaganda service. With all the delays I got from "competent" delivery companies it wasn't really fast, but from order to end of production it took about two weeks which is really OK for the price. At the time I ordered they officially only offered green solder mask, but I just said I'd like white and it worked just fine.

The white laminated solder mask is also really tough. I didn't try to destroy it with my iron, but given the size of my tip I couldn't avoid touching it numerous times. No harm done whatsoever :-)


Yes the mcu was essential to me. This one will go into a wooden enclosure eventually, so there's really no space for an arduino. I'll have to grind off a few mils to make it fit already.

madworm, yeah, I'm going to be offering my board through Propaganda too. I think there's room for two, especially since yours has the ATmega integrated and mine is a little more general-purpose. If I'd thought to ask, I'd have asked for black or blue soldermask. Oh well. :)

I ordered some SMT crystals and caps and resistors, but haven't yet bit the bullet to buy some ATmegas. If you don't mind me asking, have you calculated what your Bill of Materials is costing per board?

I was amazed at how resilient the soldermask from BatchPCB was... I actually melted a whole resistor array in half on the second board I built, but not even the slightest scorch mark on the solder mask.

How much did it cost me, hmmm. It sums up to about 20? for the parts.

I payed 9? for the LED matrix, 4? for the atmega and the next biggest thing were the headers.
The resistors, the caps and the led don’t really matter that much.

I LOVE IT!! please pm me with the infos on how to get hold of one of your leftovers boards (insert demoniac laughter here)

Thanks. 1 board is left :slight_smile:

Edit: all gone.


I've just ordered a batch of 25 boards. They will come with black solder mask and white silkscreen on both sides and are fully RoHS compliant. They basically look like the ones shown in the Wiki with inverted colors. There is a short writeup on the SeeedStudio Wiki and of course in my blog.

The controller board has additional connectors for PORTC and PORTD on its back side:


As you can see the RX/TX lines, the I²C lines and power lines are on them, so connecting to other boards or devices is easily done. The controller works with the RGB LED matrix sold by or seeedstudio.

So in case you don't want to wait for SeeedStudio's upcoming Rainbowduino, I'll be having some PCBs to give away for just production cost. Unless I get bitten by the DHL/customs curse of infinite inexplicable delay again that is.

madworm - VERY interested in getting a hold of one of these drivers once they are delivered. How can I get on the "customer list" once the boards arrive?

Regards, Joe


for people interested in getting a board please use this link:

request board

Any chance you'll have a bundle with the board and 5 SMT chips?

"The matrix V3 board with the blue LED and no LED matrix attached is the master" It's a simple arduino?


Let's say you could use a simple Arduino for the I²C master. I just happened to use two of these matrix boards. And one had no LED matrix attached.


And yes, the boards are 'just a simple arduino clone' with some parts to drive the LED matrix. More like a simple clone, that is no USB converter chip and no auto reset. I was thinking about putting the FTDI chip on there, but that would have added cost and increased it's size.

I am currently developing an 8x16 display (two modules) that will be attached to the side of the Arduino. It will use 12-bit PWM on all columns hence having...many colours [can't work it out at this time of night].

I am also going to make it expandable and may develop a completely surface mount; shield version in the future.


How many TLC5947 will you use ?

Anyhow, good to see the momentum draws in more people. Maybe we could manage to achieve some sort of common code in terms of primitive functions-names to set leds. So people don't have to learn new names for basically the same job. Unfortunately I don't know the status of Halley's library for his 8x8 shield.

If you plan to have PCBs made, I've used Seeedstudio and the quality is really good for the price. Although there was one especially hard to find small short on 1 of 6 boards. So I'd definitely not go below 8mil spacing and keep vias away from GND/VCC traces, especially if they're under headers and can't be inspected/repaired without desoldering a lot of parts ;-)

I'll be receiving a batch from "Gold Phoenix" and will report on how good they are.

I've decided to use TLC5940s instead because they're in a usable package and I already have 5 of them [I will use three] and some Darlington Arrays to drive the current to the columns.

Even though this is starting to veer off of madworm's board topic, I'm interested in what you just said about the TLC5940/Darlington combination. Is there a documented schematic for that? I wonder if there's any issue with the constant current outputs and the darlington inputs.

madworm, I promise to release the C++ class style library to the playground once my v5 boards check out. I can send you a private copy now, just to see if there are issues. It's really not THAT much different from yours.

I also wanted to know how you measured your "ISR is 50% of runtime." I fear my library is worse than that, closer to 75%, even though I thought some of my changes would measurably improve it.

In your latest controller version, it would seem possible to do the refreshing OUTSIDE the ISRs in a plain loop(), and did any remote communication duty inside. Then you could get brighter results except when communication started to drag down the duty.


I monitored the display_enable line on my scope. As it is changes state upon entry and exit of the ISR, it should be a good estimate for how long the code spends inside it. It happened to be a signal with duty cycle of about 50%. I also tried to adjust that by changing TIMER1's precharge value and it behaved as expected.

Also I found out that enabling global interrupts with sei() inside the framebuffer ISR didn't do much harm. I had hoped to increase the devices overall responsiveness to incoming commands on the serial lines. I haven't really tested it though.