/*
Code written by Dennis Miller.
As a first attempt of coding.
2 74HC595 ICs cascaded to light up one LED at a time till all
are lit up.
Then the MR_Pin is set to low to Zero the register content
And the process starts all over again.
*/
int SHCP_Pin = 8; // latch pin
int STCP_Pin = 9; // Storage Register clock input low to High
int DS_Pin = 10; // Data transferred to Register and output
int MR_Pin = 7; // Memory reset pin
void setup()
{
pinMode(SHCP_Pin, OUTPUT); // Set pins 8,9,10 to output mode
pinMode(STCP_Pin, OUTPUT);
pinMode(DS_Pin, OUTPUT);
pinMode(MR_Pin, OUTPUT);
digitalWrite(SHCP_Pin, LOW);
digitalWrite(STCP_Pin, LOW);
digitalWrite(DS_Pin, LOW);
digitalWrite(MR_Pin, LOW);
}
void loop()
{
for( int i = 0; i <=16; i++)
{ digitalWrite(MR_Pin, HIGH); // set MR_Pin to high
digitalWrite(DS_Pin, HIGH); // set DS_Pin high
delay(10); // introduce a delay
digitalWrite(SHCP_Pin, HIGH); // set SHCP_Pin high to send serial data to the Registers
delay(10); // introduce dealy
digitalWrite(SHCP_Pin, LOW); // set SHCP_Pin low
delay(10); // introduce a delay
digitalWrite(STCP_Pin, HIGH); //set STCP_Pin High to send serial dats from REgisters to output
digitalWrite(DS_Pin, LOW);
delay(10);
digitalWrite(SHCP_Pin, LOW);
delay(10);
digitalWrite(DS_Pin, HIGH);
delay(10);
digitalWrite(SHCP_Pin, HIGH);
delay(10);
digitalWrite(SHCP_Pin, LOW);
delay(10);
digitalWrite(STCP_Pin, HIGH);
delay(10);
digitalWrite(STCP_Pin, LOW);
}
digitalWrite( MR_Pin, HIGH);
delay(10);
digitalWrite(MR_Pin, LOW); // Reset Shiftregister
}