int datapin = 13;
int latchpin = 7;
int clockpin = 12;
//How many of the shift registers
#define number_of_74hc595s 5
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
void setup(){
pinMode(datapin, OUTPUT);
pinMode(latchpin, OUTPUT);
pinMode(clockpin, OUTPUT);
//reset all register pins
clearRegisters();
writeRegisters();
}
//set all register pins to LOW
void clearRegisters(){
for(int i = numOfRegisterPins - 1; i >= 0; i--){
registers[i] = LOW;
}
}
void writeRegisters(){
digitalWrite(latchpin, LOW);
for(int i = numOfRegisterPins - 1; i >= 0; i--){
digitalWrite(clockpin, LOW);
int val = registers[i];
digitalWrite(datapin, val);
digitalWrite(clockpin, HIGH);
}
digitalWrite(latchpin, HIGH);
}
//set an individual pin HIGH or LOW
void setRegisterPin(int index, int value){
registers[index] = value;
}
void loop(){
wigWag();
}
void redLEDs() {
int index = 0;
setRegisterPin(index, HIGH);
setRegisterPin(index+1, HIGH);
setRegisterPin(index+2, HIGH);
setRegisterPin(index+3, HIGH);
setRegisterPin(index+8, HIGH);
setRegisterPin(index+9, HIGH);
setRegisterPin(index+10, HIGH);
setRegisterPin(index+11, HIGH);
setRegisterPin(index+16, HIGH);
setRegisterPin(index+17, HIGH);
setRegisterPin(index+18, HIGH);
setRegisterPin(index+19, HIGH);
setRegisterPin(index+24, HIGH);
setRegisterPin(index+25, HIGH);
setRegisterPin(index+26, HIGH);
setRegisterPin(index+27, HIGH);
setRegisterPin(index+32, HIGH);
setRegisterPin(index+33, HIGH);
setRegisterPin(index+34, HIGH);
setRegisterPin(index+35, HIGH);
writeRegisters();
switchOff();
}
void BlueLEDs() {
index = 0;
setBrightness(255);
setRegisterPin(index+4, HIGH);
setRegisterPin(index+5, HIGH);
setRegisterPin(index+6, HIGH);
setRegisterPin(index+7, HIGH);
setRegisterPin(index+12, HIGH);
setRegisterPin(index+13, HIGH);
setRegisterPin(index+14, HIGH);
setRegisterPin(index+15, HIGH);
setRegisterPin(index+20, HIGH);
setRegisterPin(index+21, HIGH);
setRegisterPin(index+22, HIGH);
setRegisterPin(index+23, HIGH);
setRegisterPin(index+28, HIGH);
setRegisterPin(index+29, HIGH);
setRegisterPin(index+30, HIGH);
setRegisterPin(index+31, HIGH);
setRegisterPin(index+36, HIGH);
setRegisterPin(index+37, HIGH);
setRegisterPin(index+38, HIGH);
setRegisterPin(index+39, HIGH);
writeRegisters();
switchOff();
}
void wigWag();
{
BlueLEDs();
delay(150);
redLEDs();
}
voidSwitchOff();
{
int index;
for(index = 0; index <= 39; index ++)
{
setRegisterPin(index, LOW);
writeRegisters();
}
}