Beta Board Preview
The nice folks at iTead Studio were kind enough to send me a beta of their new LED matrix controller called Colorduino.
The Colorduino takes a lot of the difficulty out of of controlling an RGB LED matrix, something I was stumped with as a beginner in electronics. It’s built around the ATmega328 CPU, the heart of the Arduino platform, and builds on previous matrix controllers like the Rainbowduino from Seeed Studio. iTead have made sure the Colorduino is pin compatible with the Rainbowduino so it can slot in with existing projects, but have upped the specifications to get better performance.
One of the Colorduino’s main features is that it uses a DM163 LED driver chip to provide hardware PWM. This allows each Red Green and Blue channel to have an 8 bit colour depth, resulting in a theoretical 16 million possible colours per pixel! As a comparison the Rainbowduino uses software PCM to achieve a 4 bit colour depth – that’s 4096 colours per pixel (which can be pushed to 5 bit firmware tweaks). Whether all those 16 millions colours are perceptible to the human eye is another question. iTead say their approach provides more accurate colour control than other boards.
The DM163 chip also provides 3 x 6bit correction registers, useful for calibrating the respective brightness of each color channel in software. This can be used for example to adjust the white balance of the display.
The physical board is a little smaller than an LED matrix and is designed so multiple Colorduino’s can be plugged together to make larger grids of LED matrices. Data is passed between boards using the I2C protocol. I2C is well supported on the Arduino and there is lots of demo code out there to get you started.
Power to the board is either via pin headers or 2 sets of mini screw terminals. A slide switch selects between the two. Various Pins are brought out the edge of the board including RX, TX and DTS, which can be used to reprogram the onboard ATmega chip, and SCA and SCL for I2C communication. A green LED on the front of the board indicates power, although it is mostly obscured as soon as you plug the matrix panel in. A schematic of the board and demo code is available here.
iTead have taken on Rainbowduino’s “Plug and Shine” ethos, making Colorduino ideal for beginners. I found setup really simple: after plugging in the LED matrix panel to the Colorduino, I applied 5v power to the board and was presented with the demo sketch that’s installed by default on the onboard ATmega CPU. This runs through a variety of patterns as seen in this video. Please note the flickering is just on the video, the display is rock solid and very very bright!
As mentioned iTead provide the demo sketch on their site to tinker with. It’s nicely set out and commented so you can easily see what each bit does. There are functions to draw pixels, print text or fill the screen with a certain colour. If you are a beginner it’s quite satsifying and it won’t take long before you are tweaking the arrays of pixel data to draw your own pictures.
After you’ve tweaked the demo sketch you’ll want to upload it to the Colorduino to see your changes. There is no USB port on the Colorduino, so you can’t just plug it into a PC like an Arduino, however if you have a spare Arduino lying around there is a trick you can do.
Simply remove the ATmega chip from your Arduino and connect the Colorduino to the Arduino board as follows.
- Arduino RX to Colorduino RX
- Arduino TX to Colorduino TX
- Arduino Reset to Colorduino DTR
- Arduino +5v and GND to Colorduino +5v and GND.
This essentially turns the Arduino into USB to serial programmer. Then you can upload your sketch to the Colorduino using the Arduino software as normal.
Alternatively you could also use something like a USBtinyISP, as the Colorduino has an ICSP header port too.
As iTead use the DM163 LED controller to do the hard work of driving the display, there are plenty of resources left over on the onboard ATmega CPU for the taking. My demo board came with an ATmega 168, but I understand the final boards will come witn a 328 which has 32K RAM to play with. The demo code only takes up 4K and could easily be slimmed down.
I had a go at adding I2C support, and managed to run the rather cool Plasma Demo over I2C, sending data from an Arduino acting as master – see video below. The code is very basic but if you want to try it it’s on now up on Google code here.
The ability to use I2C really expands the use of boards like Colorduino and Rainbowduino. Although it doesn’t make so much use of the onboard resources, you are no longer limited by the onboard storage and processing of the ATmega CPU. For example I have an SD shield for my Arduino and was able to send graphics from a 1 Gig SD card over I2C to the Colorduino. You could also be clever and use something like Processing to stream live data from a laptop. Of course all this really comes into it’s own when you combine a row of Colorduino’s all plugged together. Mini video wall anyone?
As a prototype the board is a little rough round the edges which is to be expected. The extra colour depth and 6 bit adjustment features the DM163 provide are all big plus points for me, along with the freeing up of CPU resources for other tasks. All in all this makes the Colordiono stand out as an attractive alternative to the Rainbowduino.