Hourglass by Ashley and Ellen

on

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);
}