TOKO ROBOT - ShiftBrite

Produk Item # : 1240
Harga : Rp. 139.500
Stok : 10

The ShiftBrite 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 ShiftBrite modules can be easily chained together and controlled from a single microcontroller to create large LED displays. This configuration comes with male header pins soldered in.

A ShiftBrite RGB LED module can display over one billion different colors.

The ShiftBrite is a module by macetech that integrates 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 ShiftBrites. 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. Overtemperature shutdown protects the LED driver from overheating. The pins of the ShiftBrite are spaced 0.1" apart, making them compatible with breadboards (Link: and perfboards.

The ShiftBrite comes in two configurations: one with male header pins and one without male header pins. Our custom six-conductor cables, available in lengths of 6" and 12" and 24", can be used to easily chain together multiple modules.

Example ShiftBrite applications

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 (Link: section of the Maestro User’s Guide (Link: Our Orangutan robot controllers (Link: can also be used to control ShiftBrites, as can the Arduino. Source code for the Orangutan is available at the bottom of this page.

A ShiftBrite being controlled by a Micro Maestro 6-channel servo controller.
A display made of 32 ShiftBrite modules, used to display real-time data.


Using the ShiftBrite

Since the ShiftBrite is controlled by Allegro’s A6281 LED driver, careful reading of the A6281’s datasheet (Link: (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 ShiftBrites. 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 (Link: (315k pdf). You can find further documentation and Arduino sample code at macetech’s ShiftBrite documentation (Link: 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 (Link: 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.
typedef union ShiftBritePacket
    unsigned long value;
        unsigned greenDotCorrect:7;
        unsigned clockMode:2;
        unsigned :1;
        unsigned redDotCorrect:7;
        unsigned :3;
        unsigned blueDotCorrect:7;       
        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};   = red; = green;  = 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);
            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.
        for (int i = 0; i < 2400; i++)
            sendColorWheelPacket((i+400) % 2400);
            sendColorWheelPacket((i+800) % 2400);
            sendColorWheelPacket((i+1200) % 2400);
            sendColorWheelPacket((i+1600) % 2400);
            sendColorWheelPacket((i+2000) % 2400);
    //Loop forever


People often buy this product together with:


6x1 F-F 6 6x1 F-F 6 Cable for ShiftBrites and ShiftBars
Micro Maestro 6-Channel USB Servo Controller (Assembled) Micro Maestro 6-Channel USB Servo Controller (Assembled)
6x1 F-F 12 6x1 F-F 12 Cable for ShiftBrites and ShiftBars


Tag Toko Robot:

Toko robot Robot edukasi
Edukasi robot Lomba robot
Robot lomba Kontes robot
Robot kontes Kompetisi robot
Robot kompetisi Robot kit
Robot kit untuk edukasi Robot Indonesia
Maze solving robot Jual komponen robot
Robot Maze solving Jual komponen robot murah
Line tracing robot Jual controller robot
Robot line tracing Jual kontroler robot
Line tracer robot Jual sensor robot
Robot Line tracer Jual aktuator robot
Line following robot Jual motor robot
Obstacle robot Menjual KIT Robotik
Robot Obstacle Jual komponen dan kit robot
Robot untuk lomba Jual Spare Part Robot
Robot untuk kontes Jual robot Pololu
Robot untuk kompetisi Jual robot KAIROBOT
Olimpiade robot Jual Line Tracer non Programming
Robot Olimpiade BLACK LINE PRO Murah
Jual robot Jual Robot Maze Solving
Jual robot kit Jual Robot Line Follower
Jual robot kit untuk pendidikan Jual Robot Line Tracer
Jual robot kit untuk edukasi Jual Robot Line Tracing
Jual robot untuk lomba Jual robot untuk kontes
Robot kit untuk anak TK Jual robot untuk kompetisi
Jual komponen dan kit robot Robot untuk anak TK
Pusat penjualan komponen dan alat alat robotika Robot untuk pendidikan anak TK
Robot Line following

Jual berbagai sensor, motor,

kontroler, aktuator robot


spesifikasi produk