I'm using a Shiftbrite. My first time writing code! Any improvements? Also... why doesn't it work? I tried to copy the sample LED fade as best as I could.
int datapin = 10; // DI
int latchpin = 11; // LI
int enablepin = 12; // EI
int clockpin = 13; // CI
unsigned long CommandPacket;
int Command;
int Blue = 1023; // Maximum Blue
int Red = 1023; // Maximmum Red
int Green = 1023; // Maximum Green
int Fade = 5;
void setup() {
pinMode(datapin, OUTPUT);
pinMode(latchpin, OUTPUT);
pinMode(enablepin, OUTPUT);
pinMode(clockpin, OUTPUT);
digitalWrite(latchpin, LOW);
digitalWrite(enablepin, LOW);
}
void SendPacket() {
CommandPacket = Command & B11;
CommandPacket = (CommandPacket << 10) | (Blue & 1023);
CommandPacket = (CommandPacket << 10) | (Red & 1023);
CommandPacket = (CommandPacket << 10) | (Green & 1023);
shiftOut(datapin, clockpin, MSBFIRST, CommandPacket >> 24);
shiftOut(datapin, clockpin, MSBFIRST, CommandPacket >> 16);
shiftOut(datapin, clockpin, MSBFIRST, CommandPacket >> 8);
shiftOut(datapin, clockpin, MSBFIRST, 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() {
Command = B00;
Blue = Blue - Fade;
delay (10);
Fade = Fade + 5;
if (Blue = 0);
Fade = -Fade;
}
Your code is close. Since your are using the 'shiftbrite', ignore the PWM suggestions.
void loop() {
Command = B00;
SendPacket();
Blue = Blue - Fade; // same as Blue -= Fade;
if (Blue < 1 || Blue > 1023)
{
Blue += Fade; // Step back one
Fade = -Fade; // Reverse direction of fade
}
Fade = Fade + 5; // Increase rate of fade, decrease rate of brightening.
delay (10);
}