Yes but if the signal on the input is a low bit for longer than 20 microseconds it sends a reset code. This is the issue I had before. For instance if I had a color 0xFFFFFF, extracting the RGB components, multiplying them by the correct brightness scale and then concatenating them together took too long and therefore sent a reset signal to the chips.
If you have another idea on how to adjust the color, I would be more than happy to hear it.
Here is the "sendColor" function that I have in my code
void sendStrip(uint32_t data){
int i;
unsigned long j = 0x800000;
for(i = 0; i < 24; i++)
{
if (data & j)
{
OnBit;
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
OffBit;
}
else
{
OnBit;
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
__asm__("nop\n\t");
OffBit;
}
j >>= 1;
}
}OnBit sends a high value to the analog pin
OffBit sends a low value to the analog pin
The groups of "nop"s are delay functions that send the bits to the ic.
Here is the LED strip's documentation as well:
http://www.radioshack.com/graphics/uc/rsk/Support/ProductManuals/2760249_PM_EN.pdf