ShiftBrite
Jump to navigation
Jump to search
Test Code (Simplified Example)
Cycles Red/Green/Blue full on for 4 lights
int datapin = 11; // DI int latchpin = 12; // LI int enablepin = 13; // EI int clockpin = 15; // CI unsigned long SB_CommandPacket; int SB_CommandMode; int SB_BlueCommand; int SB_RedCommand; int SB_GreenCommand; int shiftDelay = 250; void setup() { pinMode(datapin, OUTPUT); pinMode(latchpin, OUTPUT); pinMode(enablepin, OUTPUT); pinMode(clockpin, OUTPUT); digitalWrite(latchpin, LOW); digitalWrite(enablepin, LOW); SB_CommandMode = B01; // Write to current control registers SB_RedCommand = 127; // Full current == 127 SB_GreenCommand = 127; SB_BlueCommand = 127; SB_SendPacket(); } 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(5); // adjustment may be necessary depending on chain length digitalWrite(latchpin,HIGH); // latch data into registers delay(5); // adjustment may be necessary depending on chain length digitalWrite(latchpin,LOW); } void goRed() { for (int i = 0; i < 4; i++) { SB_CommandMode = B00; // Write to PWM control registers SB_RedCommand = 127; SB_GreenCommand = 0; SB_BlueCommand = 0; SB_SendPacket(); } } void goBlue() { for (int i = 0; i < 4; i++) { SB_CommandMode = B00; // Write to PWM control registers SB_RedCommand = 0; SB_GreenCommand = 127; SB_BlueCommand = 0; SB_SendPacket(); } } void goGreen() { for (int i = 0; i < 4; i++) { SB_CommandMode = B00; // Write to PWM control registers SB_RedCommand = 0; SB_GreenCommand = 0; SB_BlueCommand = 127; SB_SendPacket(); } } void loop() { goRed(); delay(shiftDelay); goBlue(); delay(shiftDelay); goGreen(); delay(shiftDelay); }
Sample Code from macetech (http://macetech.com/blog/node/54)
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); }