Here's the code.... wiring diagram will take a bit for me to get prepared..
int SER_Pin = 11; //pin 14 on the 75HC595
int RCLK_Pin = 12; //pin 12 on the 75HC595
int SRCLK_Pin = 13; //pin 11 on the 75HC595
int secs_to_delay = 50;
long randNumber;
////////////////////////////////////////////////////////////////////
//How many of the shift registers - change this
/////////////////////////////////////////////////////////////////
#define number_of_74hc595s 6
//////////////////////////////////////////////////////////
// How many layers
//////////////////////////////////////////////////////////
#define number_of_layers 2
int num_LEDs = number_of_74hc595s * 8;
///////////////////////////////////////////////////////////
// PWM value - controls LED brightness
//////////////////////////////////////////////////////////
int PWM_value=24;
//do not touch
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
////// SETUP /////////
void setup(){
pinMode(SER_Pin, OUTPUT);
pinMode(RCLK_Pin, OUTPUT);
pinMode(SRCLK_Pin, OUTPUT);
//reset all register pins
clearRegisters();
writeRegisters();
// analogWrite(2,0);
// analogWrite(3,0);
}
//set all register pins to LOW
void clearRegisters(){
for(int i = numOfRegisterPins - 1; i >= 0; i--){
registers = LOW;
- }*
- writeRegisters();*
}
//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*;_
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;*
}
/////////// LOOP ////////////////////
void loop(){
* for(int PWM=(2);PWM<(number_of_layers+2);PWM++) // pin 2 of arduino is the start of my PWM - controlling the Darlington 2803*
* {*
* analogWrite(PWM,PWM_value);*
* for(int pin = 0; pin < num_LEDs; pin++)
_ {_
_ setRegisterPin(pin, LOW);_
_ writeRegisters();_
delay(secs_to_delay);
_ clearRegisters();_
_ setRegisterPin(pin, HIGH);_
_ writeRegisters();_
delay(secs_to_delay);
_ clearRegisters();_
_ }_
for(int pin = (num_LEDs - 1); pin > -1; pin--){
_ setRegisterPin(pin, LOW);_
_ writeRegisters();_
delay(secs_to_delay);
_ clearRegisters();_
_ setRegisterPin(pin, HIGH);_
_ writeRegisters();_
delay(secs_to_delay);
_ clearRegisters();_
_ }*_
* analogWrite(PWM,0); // set off the current 2803 pin*
* }*
}