The Rainbowduino ATmega328 board is an Arduino-compatible controller for an 8×8 RGB LED Matrix or 4×4×4 LED Cube (Common Anode). Multiple Rainbowduino boards can be connected together to create longer displays. The Rainbowduino either can drive the display itself or be driven from an external source. Each Rainbowduino uses two MY9221 chips, which are 12-channel constant-current Adaptive Pulse Density Modulation (APDM) controllers.
The Rainbowduino V3.0 is flashed with the Arduino bootloader, making it easy to program sketches using the Arduino IDE. Unlike other LED drivers, Rainbowduino comes with a USB-to-UART chip (FT232RL) built in for programming sketches.
Note: Rainbowduino V3.0 is both software and hardware incompatible with Rainbowduino V2.0. They have different controllers and different serial interconnection pinouts.
The board measures 60 × 60 mm, and has female headers for you to plug in a matching LED Matrix. (Note: An LED Matrix is not included.)
Color LED Matrix Controller Features
- Two 16-pin headers for connecting multiplexed LEDs
- Constant current (20.8mA) LED driver
- Can drive 4x4x4 RGB LED Cube or 8x8 RGB LED Matrix (i.e. 192 LEDs)
- Built-in USB-to-UART chip (FT232RL)
- Built-in 5V / 1 Amp voltage regulator
- Can be driven directly via mini-USB cable (no external power adapter needed)
- Also can be powered by external 6V-12V DC supply
Modes of Operation The Rainbowduino can be used three ways.
Standalone Mode The simplest mode requires nothing more than the Rainbowduino and an RGB LED Matrix. The LED matrix content is generated by the Rainbowduino itself. This mode can be used for simple real-time animations calculated by the Rainbowduino, though is limited by the 32Kbit ROM. When programming, select Arduino Duemilanove or Nano w/ ATmega328 in the Arduino IDE.
UART Mode In this mode, the Rainbowduino and RGB LED Matrix would be connected to an external controller (e.g. an Arduino Uno or a PC). This mode works with a single Rainbowduino.
I2C Mode This mode of operation is similar to the UART mode but has the advantage of being able to control multiple displays by cascading Rainbowduino units together and assigning each one a unique I2C address. The address can be configured by editing the Rainbowduino.h file (e.g. #define I2C_DEVICE_ADDRESS 0x06).
To cascade Rainbowduino units, first insert two pins into the power block of the downstream board as shown (images are showing an older hardware design with different pinout, but the connection method is similar):
Then connect the units together like so:
You can keep cascading similarly. The following picture shows four Rainbowduinos each with an 8×8 RGB matrix LED module, all being controlled from a single Arduino board:
LED Device Compatibility Before plugging in an RGB matrix LED display, ensure its pinout is compatible. Refer to the following diagram of what the display's pinout should be. Note however that the color sequence can be changed because the controlling logic is open source.
Color LED Matrix Controller Resources More information and downloadable firmware examples can be found on the Rainbowduino V3.0 Wiki Page.