ShiftBrite RGB LED Module

IN STOCK!


Click here to visit the store.


What is ShiftBrite?

ShiftBrite is a high-brightness LED module containing red, green, and blue elements. It uses a simple clocked serial interface to receive a 10-bit brightness value for each color, resulting in over a billion possible colors.

Each input is buffered and output on the other side of the module. This allows each ShiftBrite to repeat the signal to the next, allowing longer cable runs between elements without excessive loading of microcontroller I/O pins.

ShiftBrite elements feature current control and automatic overtemperature control (an overheating channel driver will shut off until it has cooled). Each channel can also be adjusted with a separate current control register, for fine tuning of each LED if close brightness matching is necessary. The integrated voltage regulator powers the internal logic, allowing a single 5 to 9 volt supply rail to power the ShiftBrite chain.

Shifty VU: An example ShiftBrite application.

How do I use ShiftBrite?

ShiftBrite modules receive data in a simple clock/data/latch format. Place a logic level on the data pin, pulse the clock pin, and move to the next data bit. Once all data has been sent, pulse the latch pin to load the new data into the LED PWM registers. Since each ShiftBrite acts as a 32-bit shift register, it passes the last bit to the next ShiftBrite in the chain on every clock pulse. This allows many ShiftBrites to be controlled from the same set of control lines; simply shift out 64 bits of data for two ShiftBrites, 96 bits for three devices, and so on. However, this does mean that in order to update one LED, the entire array must be refreshed.

Additional details regarding ShiftBrite usage and example code will be posted soon. For now, please refer to the Allegro A6281 documentation. ShiftBrite modules are essentially breakout boards for the A6281 chip, and the signal names are silkscreened on the corresponding input and output pins.

Sample Arduino code (tested by customers, works):

int datapin  = 10; // DI
int latchpin = 11; // LI
int enablepin = 12; // EI
int clockpin = 13; // CI

unsigned long SB_CommandPacket;
int SB_CommandMode;
int SB_BlueCommand;
int SB_RedCommand;
int SB_GreenCommand;

void setup() {
   pinMode(datapin, OUTPUT);
   pinMode(latchpin, OUTPUT);
   pinMode(enablepin, OUTPUT);
   pinMode(clockpin, OUTPUT);

   digitalWrite(latchpin, LOW);
   digitalWrite(enablepin, LOW);
}

void SB_SendPacket() {
   SB_CommandPacket = SB_CommandMode & B11;
   SB_CommandPacket = (SB_CommandPacket << 10)  | (SB_BlueCommand & 1023);
   SB_CommandPacket = (SB_CommandPacket << 10)  | (SB_RedCommand & 1023);
   SB_CommandPacket = (SB_CommandPacket << 10)  | (SB_GreenCommand & 1023);

   shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 24);
   shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 16);
   shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket >> 8);
   shiftOut(datapin, clockpin, MSBFIRST, SB_CommandPacket);

   delay(1); // adjustment may be necessary depending on chain length
   digitalWrite(latchpin,HIGH); // latch data into registers
   delay(1); // adjustment may be necessary depending on chain length
   digitalWrite(latchpin,LOW);
}

void loop() {

   SB_CommandMode = B01; // Write to current control registers
   SB_RedCommand = 127; // Full current
   SB_GreenCommand = 127; // Full current
   SB_BlueCommand = 127; // Full current
   SB_SendPacket();

   SB_CommandMode = B00; // Write to PWM control registers
   SB_RedCommand = 1023; // Maximum red
   SB_GreenCommand = 0; // Minimum green
   SB_BlueCommand = 0; // Minimum blue
   SB_SendPacket();

   delay(250);

   SB_CommandMode = B00; // Write to PWM control registers
   SB_RedCommand = 0; // Minimum red
   SB_GreenCommand = 1023; // Maximum green
   SB_BlueCommand = 0; // Minimum blue
   SB_SendPacket();

   delay(250);

   SB_CommandMode = B00; // Write to PWM control registers
   SB_RedCommand = 0; // Minimum red
   SB_GreenCommand = 0; // Minimum green
   SB_BlueCommand = 1023; // Maximum blue
   SB_SendPacket();

   delay(250);
}

Solution Graphics

Direct payments from your PayPal account are no additional charge; PayPal will add a small fee if you wish to make a credit card payment without a PayPal login.