- Out-of-Stock
The ShiftBrite V2.0 is an RGB LED module with a built-in driver featuring 10-bit digital brightness control on each color channel (over one billion colors). Multiple modules can easily be chained together and controlled from a single microcontroller to create large LED displays. This version has several improvements over the original ShiftBrite, including mounting holes and better power handling.
ShiftBrites are modules by macetech that integrate the Allegro A6281 3-channel constant current LED driver with a large, high-brightness RGB LED. Using just three digital output pins and a simple protocol, your microcontroller can control a long chain of these modules. Each ShiftBrite in the chain can be independently changed to any of the 1,073,741,824 possible colors to create dynamic displays and decorations. Adjustable current for each color channel lets you correct for slight differences in brightness. In addition, the LED driver is protected from overheating by automatic over-temperature shutdown.
The ShiftBrite V2.0 offers the following key improvements:
Several ShiftBrite applications are shown below, including an example setup using a Micro Maestro as a ShiftBrite controller. In the Micro Maestro example, digital outputs 0, 1 and 2 are used to send the control signals to the clock, latch, and data lines, the enable line is connected directly to GND, and 6 V power to the Maestro is delivered from the ShiftBrite chain. Maestro source code to control a ShiftBrite is available in the Example Scripts section of the Maestro User’s Guide. Our Orangutan robot controllers can also be used to control ShiftBrites, as can the Arduino. Source code for the Orangutan is available at the bottom of this page.
Since ShiftBrites are controlled by Allegro’s A6281 LED driver, careful reading of the A6281’s datasheet (315k pdf) is recommended. Each ShiftBrite input is buffered and output on the corresponding output pin. This allows you to chain together ShiftBrites without increasing the number of IO pins dedicated to controlling the modules. The picture below shows three ShiftBrites chained together.
![]() |
| Three ShiftBrites chained together. |
|---|
Our 6", 12", and 24" cables for ShiftBrites make it easy to connect multiple modules, as shown below.
|
|
You can make your own shorter cables with our 3" wires with pre-crimped terminals and our 0.1" 6×1 crimp connector housings.
![]() ![]() |
| Pinout diagram for the ShiftBrite module. |
|---|
Each ShiftBrite has a 32-bit shift register. When a rising edge is detected at the clock in pin (CI), the data in pin (DI) value is shifted onto the first bit of the shift register, and the last bit sets the value of the data out pin (DO). After you have loaded a 32-bit packet into the shift register of each ShiftBrite in the chain, bringing the latch in pin (LI) from low to high causes the data to take effect (changing the color or updating a configuration setting). LI must be brought low again before clocking in additional data.
The data packet format is shown in the picture below. For more details about the data packet format, as well as timing and other electrical parameters, see the A6281 datasheet (315k pdf). You can find further documentation and Arduino sample code at macetech’s ShiftBrite documentation page.
![]() |
| ShiftBrite packet diagram. The second row shows a color packet, while the third row shows a command packet. |
|---|
To send data to the ShiftBrite, you need to use at least three digital I/O pins (four if you want to use the EI pin). Our Orangutan robot controllers work well for this. Here is some sample code for setting the colors of a chain of ShiftBrites using bit banging on the AVR. The chain can be arbitrarily long, but the changing color pattern will repeat on every sixth module.
// ShiftBrite communication for the AVR using bit banging.
//
// Pin Assignments (any four free digital I/O pins will do)
//
// Data PC2
// Latch PC3
// Enable PC4
// Clock PC5
//
// Feel free to modify and use this code for your AVR.
#include <avr/io.h>
typedef union ShiftBritePacket
{
unsigned long value;
struct
{
unsigned greenDotCorrect:7;
unsigned clockMode:2;
unsigned :1;
unsigned redDotCorrect:7;
unsigned :3;
unsigned blueDotCorrect:7;
};
struct
{
unsigned green:10;
unsigned red:10;
unsigned blue:10;
unsigned command:1;
};
} ShiftBritePacket;
// colorPacket returns a ShiftBritePacket for setting color brightnesses
//
// red, green, and blue are brightness values from 0 to 1023. 0 is off, and
// 1023 is brightest.
ShiftBritePacket colorPacket(unsigned int red, unsigned int green, unsigned int blue)
{
//Make a packet and initialize all of the bits to zero.
ShiftBritePacket shiftbrite_packet = {value:0};
shiftbrite_packet.red = red;
shiftbrite_packet.green = green;
shiftbrite_packet.blue = blue;
return shiftbrite_packet;
}
// commandPacket returns a ShiftBritePacket for sending commands to the A6281.
//
// redDotCorrect, greenDotCorrect, and blueDotCorrect lets you control what
// percentage of current is flowing to each color diode.
// Refer to page 8 of the datasheet for more information.
// clockMode lets you set the PWM frequency for the diodes.
// Refer to page 7 of the datasheet for more information.
ShiftBritePacket commandPacket(unsigned int redDotCorrect, unsigned int greenDotCorrect,
unsigned int blueDotCorrect, unsigned char clockMode)
{
//Make a packet and initialize all of the bits to zero.
ShiftBritePacket shiftbrite_packet = {value:0};
shiftbrite_packet.redDotCorrect = redDotCorrect;
shiftbrite_packet.greenDotCorrect = greenDotCorrect;
shiftbrite_packet.blueDotCorrect = blueDotCorrect;
shiftbrite_packet.clockMode = clockMode;
shiftbrite_packet.command = 1;
return shiftbrite_packet;
}
void sendPacket(ShiftBritePacket shiftbrite_packet)
{
for(int i = 1; i < 32 + 1; i++)
{
//Set the appropriate Data In value according to the packet.
if ((shiftbrite_packet.value >> (32 - i)) & 1)
PORTC |= (1 << PORTC2);
else
PORTC &= ~(1 << PORTC2);
//Toggle the clock bit twice.
PORTC ^= (1 << PORTC5);
PORTC ^= (1 << PORTC5);
}
}
void latch()
{
// Set Latch high
PORTC |= (1 << PORTC3);
// Set Latch low
PORTC &= ~(1 << PORTC3);
}
void sendColorWheelPacket(unsigned int location_on_wheel)
{
if (location_on_wheel < 400)
sendPacket(colorPacket(400,(location_on_wheel % 400),0));
else if (location_on_wheel < 800)
sendPacket(colorPacket(400-(location_on_wheel % 400),400,0));
else if (location_on_wheel < 1200)
sendPacket(colorPacket(0,400,(location_on_wheel % 400)));
else if (location_on_wheel < 1600)
sendPacket(colorPacket(0,400-(location_on_wheel % 400),400));
else if (location_on_wheel < 2000)
sendPacket(colorPacket((location_on_wheel % 400),0,400));
else if (location_on_wheel < 2400)
sendPacket(colorPacket(400,0,400-(location_on_wheel % 400)));
}
int main() {
// Set all to outputs.
DDRC |= (1 << PORTC2); // Data In
DDRC |= (1 << PORTC3); // Latch
DDRC |= (1 << PORTC4); // Enable
DDRC |= (1 << PORTC5); // Clock
// Set the Enable output low to enable the ShiftBrites.
PORTC &= ~(1 << PORTC4);
//Have the ShiftBrites change from red to yellow to green to cyan to blue
//to purple and back to red.
while(1)
{
for (int i = 0; i < 2400; i++)
{
sendColorWheelPacket(i);
sendColorWheelPacket((i+400) % 2400);
sendColorWheelPacket((i+800) % 2400);
sendColorWheelPacket((i+1200) % 2400);
sendColorWheelPacket((i+1600) % 2400);
sendColorWheelPacket((i+2000) % 2400);
latch();
}
}
//Loop forever
while(1);
}
Manufacturer BTC Korporacja sp. z o. o. Lwowska 5 05-120 Legionowo Poland sprzedaz@kamami.pl 22 767 36 20
Responsible person BTC Korporacja sp. z o. o. Lwowska 5 05-120 Legionowo Poland sprzedaz@kamami.pl 22 767 36 20
Replaceable concrete scraper blade 150x350 mm, made of 65 Mn steel, 0.9 mm thick, with two holes for mounting with M5 screws, intended for leveling hard surfaces and removing old felt or floor coverings. Vorel-05774
No product available!
VOREL cable tie, dimensions 300x3.6 mm, made of modified polyamide PA6.6UL P4V2 (NYLON) in white, characterized by increased resistance to tearing (max 18 kg), UV radiation, greases and oils, has a maximum cable bundle diameter of 80 mm, 100 pieces per package, and has serrations for precise crimping. Vorel-73885
No product available!
Steel clamps made of 201 stainless steel, intended for fastening and fastening wires and tubes in the automotive, industry and installation works, with easy installation, convenient adjustment, durable self-clamping lock and a smooth, safe surface. YT-70569
No product available!
Steel clamps are an essential tool in every workshop, both amateur and professional. Their versatility and resistance to external conditions make them the choice of many specialists in various fields. They ensure not only durability and reliability, but also the safety of the assembled elements. Yato YT-70569
No product available!
Steel clamps are an essential tool in every workshop, both amateur and professional. Their versatility and resistance to external conditions make them the choice of many specialists in various fields. They ensure not only durability and reliability, but also the safety of the assembled elements. Yato YT-70570
No product available!
Stainless steel cable ties with dimensions of 4.6 x 700 mm are an essential tool for professionals in the automotive, industrial and installation industries. Their high quality of workmanship, reliability and ease of installation make them an excellent choice for anyone who needs a solid and durable solution for fastening cables and pipes. Yato YT-70571
No product available!
SUNON DC Axial Fan is a high-quality device that combines quiet operation, low power consumption and efficiency, ideal for use in advanced electronic and mechanical systems. Sunon HA40101V4-A99-A
No product available!
Piergiacomi miniature cutting pliers combine advanced technology and high functionality, which makes them an irreplaceable tool in every professional workshop. Thanks to its ergonomic design and additional functions, this tool ensures comfort and high work efficiency, while minimizing the risk of damage to the processed material. PG-TRR58G
No product available!
The UGO 5.1 sound card provides easy and convenient expansion of your computer\'s audio functions, offering high-quality surround sound and compatibility with various operating systems. UGo UKD-1085
No product available!
The 5V/2A wireless charging module is an advanced solution for contactless power transfer, utilizing magnetic-coupled resonance technology. It ensures high energy transfer efficiency (up to 90%) with minimal power consumption. The module\'s ability to be fully sealed makes it waterproof and dustproof, extending its lifespan and increasing usability. It is perfect for powering phones, portable devices, and DIY projects. DFRobot DFR0712
No product available!
A kit consisting of an M.2 HAT+ module and a Hailo-8L accelerator with a performance of 13 TOPS enables the rapid development of advanced real-time AI applications on the Raspberry Pi 5. This setup allows neural networks for object detection and segmentation to run on the Hailo-8L coprocessor, leaving the Raspberry Pi 5 CPU available for other tasks. The foundation has also prepared rpicam-apps libraries that significantly facilitate the creation of AI projects. Raspberry Pi SC1438
No product available!
ZP120.120.60UUJ TM ABS - Plastic housing ZP120.120.60 light with ears and brass bushings ABS
No product available!
ZP120.120.60UUJ TM PC - Plastic housing ZP120.120.60 light with ears and brass sleeves PC
No product available!
ZP120.120.60UUJH TM ABS - Hermetic housing ZP120.120.60 light with ears with seal and brass bushings ABS
No product available!
ZP120.120.60UUJH TM PC - Hermetic housing ZP120.120.60 light with ears with seal and brass sleeves PC
No product available!
ZP120.120.60UUJp TM ABS-PC - Plastic housing ZP120.120.60 light bottom with ears - colorless top with brass bushings ABS-PC
No product available!
ShiftBrite V2.0