Coding
int SER_Pin = 8; //pin 14 on the 75HC595
int RCLK_Pin = 9; //pin 12 on the 75HC595
int SRCLK_Pin = 10; //pin 11 on the 75HC595
//How many of the shift registers – change this
#define number_of_74hc595s 8
//do not touch
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
void setup(){
pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, 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;
}
}
//Set and display registers
//Only call AFTER all values are set how you would like (slow otherwise)
void writeRegisters(){
digitalWrite(RCLK_Pin, LOW);
for(int i = numOfRegisterPins – 1; i >= 0; i–){
digitalWrite(SRCLK_Pin, LOW);
int val = registers[i];
digitalWrite(SER_Pin, val);
digitalWrite(SRCLK_Pin, HIGH);
}
digitalWrite(RCLK_Pin, HIGH);
}
//set an individual pin HIGH or LOW
void setRegisterPin(int index, int value){
registers[index] = value;
}
int counter = 0;
void loop(){
setRegisterPin(counter, HIGH);
writeRegisters();
delay(10000);
setRegisterPin(counter, LOW);
writeRegisters();
counter++;
if (counter==numOfRegisterPins) counter=0;
// setRegisterPin(2, HIGH);
// setRegisterPin(3, HIGH);
// setRegisterPin(4, LOW);
// setRegisterPin(5, HIGH);
// setRegisterPin(7, HIGH);
//for (int i = 0; i < numOfRegisterPins; i++){
// setRegisterPin(i, HIGH);
//}
//
// writeRegisters(); //MUST BE CALLED TO DISPLAY CHANGES
// //Only call once after the values are set how you need.
// delay(1000);
// for (int i = 0; i < numOfRegisterPins; i++){
// setRegisterPin(i, LOW);
//}
// writeRegisters(); //MUST BE CALLED TO DISPLAY CHANGES
//delay(1000);
}