http://www.youtube.com/watch?v=R7xI-flj1Mw
http://bildr.org/2011/02/74hc595/
/*
SHift example using
74HC595, lights all 8 sequentially, one at a time...
*/
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
// shift in 00000001
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
delay(1);
// shift in 00000010
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
delay(1);
// shift in 00000100
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
delay(1);
// shift in 00001000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
delay(1);
// shift in 00010000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
delay(1);
// shift in 00100000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
delay(1);
// shift in 01000000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
delay(1);
// shift in 10000000
digitalWrite(9, LOW); // set the Latch Low
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 1
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1); // wait for 10ms
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 2
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 3
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 4
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 5
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 6
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, LOW); // 0
digitalWrite(10, HIGH); // clock 7
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(8, HIGH); // 1
digitalWrite(10, HIGH); // clock 8
delay(1); // wait for 10ms
digitalWrite(10, LOW); // clock
delay(1);
digitalWrite(9, HIGH); // 0 WRITE **********************
}