Hi Thanks its pretty long.
//**************************************************************//
// Name : LED Blink Patters
// Author : Kimball Hutchins
// Date : 7 July, 2010
// Modified:
// Version : 2.0
// Notes : //
//****************************************************************
//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;
int time = 250;
//Serial.println(val);
void setup() {
//set pins to output so you can control the shift register
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int left=1;
int right=1;
blinkAll_2Bytes(6,250);
repeatFromOuter(6);
backAndForthSplit(6);
oneByOne(1,0,1);
oneByOneReverse(1,0,1);
negOneByOne(1,127,6);
negOneByOneReverse(1,127,6);
alternate(4);
}
void repeatFromOuter( int numRepeat){
while (numRepeat!=0){
int left=1;
int right=1;
for (right=64;right>=1;right=right/2){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, left);
shiftOut(dataPin, clockPin, right);
digitalWrite(latchPin, HIGH);
left = 2*left;
delay(time);
}
numRepeat-=1;
}
}
void backAndForthSplit(int numRepeat){
while (numRepeat!=0){
int left=1;
int right=1;
for (right=64;right>=1;right=right/2){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, left);
shiftOut(dataPin, clockPin, right);
digitalWrite(latchPin, HIGH);
left = 2*left;
delay(time);
}
left=64;
for (right=1;right<=64;right=right*2){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, left);
shiftOut(dataPin, clockPin, right);
digitalWrite(latchPin, HIGH);
left = left/2;
delay(time);
}
numRepeat-=1;
}
}
void oneByOne(int left, int right, int numRepeat){
while (numRepeat!=0){
left=1;
right=0;
for (left=1;left<=64;left=left*2){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, right);
shiftOut(dataPin, clockPin, left);
digitalWrite(latchPin, HIGH);
delay(time);
}
left=1;
right=0;
for (left=1;left<=64;left=left*2){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, left);
shiftOut(dataPin, clockPin, right);
digitalWrite(latchPin, HIGH);
delay(time);
}
numRepeat-=1;
}
}
void oneByOneReverse(int left, int right, int numRepeat){
while (numRepeat!=0){
for (left=64;left>=1;left=left/2){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, left);
shiftOut(dataPin, clockPin, right);
digitalWrite(latchPin, HIGH);
delay(time);
}
for (left=64;left>=1;left=left/2){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, right);
shiftOut(dataPin, clockPin, left);
digitalWrite(latchPin, HIGH);
delay(time);
}
numRepeat-=1;
}
}
void negOneByOne(int left, int right, int numRepeat){
while (numRepeat!=0){
for (left=0;left<=6;left++){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, right);
shiftOut(dataPin, clockPin, (127-pow(2,left)));
digitalWrite(latchPin, HIGH);
delay(time);
}
right=127;
for (left=0;left<=6;left++){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, (127-pow(2,left)));
shiftOut(dataPin, clockPin, right);
digitalWrite(latchPin, HIGH);
delay(time);
}
numRepeat-=1;
}
}
void negOneByOneReverse(int left, int right, int numRepeat){
while (numRepeat!=0){
for (left=6;left>=0;left--){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, (127-pow(2,left)));
shiftOut(dataPin, clockPin, right);
digitalWrite(latchPin, HIGH);
delay(time);
}
right=127;
for (left=6;left>=0;left--){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, right);
shiftOut(dataPin, clockPin, (127-pow(2,left)));
digitalWrite(latchPin, HIGH);
delay(time);
}
numRepeat-=1;
}
}
void alternate(int numRepeat){
while (numRepeat!=0){
// 0101010 = 42
// 1010101 = 85
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, 42);
shiftOut(dataPin, clockPin, 85);
digitalWrite(latchPin, HIGH);
delay(time);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, 85);
shiftOut(dataPin, clockPin, 42);
digitalWrite(latchPin, HIGH);
delay(time);
numRepeat-=1;
}
}
// The following is from <a href="http://arduino.cc/en/Tutorial/ShftOut22" title="http://arduino.cc/en/Tutorial/ShftOut22">http://arduino.cc/en/Tutorial/ShftOut22</a> not me.
//
// the heart of the program
void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
// This shifts 8 bits out MSB first,
//on the rising edge of the clock,
//clock idles low
//internal function setup
int i=0;
int pinState;
pinMode(myClockPin, OUTPUT);
pinMode(myDataPin, OUTPUT);
//clear everything out just in case to
//prepare shift register for bit shifting
digitalWrite(myDataPin, 0);
digitalWrite(myClockPin, 0);
//for each bit in the byte myDataOut�
//NOTICE THAT WE ARE COUNTING DOWN in our for loop
//This means that %00000001 or "1" will go through such
//that it will be pin Q0 that lights.
for (i=7; i>=0; i--) {
digitalWrite(myClockPin, 0);
//if the value passed to myDataOut and a bitmask result
// true then... so if we are at i=6 and our value is
// %11010100 it would the code compares it to %01000000
// and proceeds to set pinState to 1.
if ( myDataOut & (1<<i) ) {
pinState= 1;
}
else {
pinState= 0;
}
//Sets the pin to HIGH or LOW depending on pinState
digitalWrite(myDataPin, pinState);
//register shifts bits on upstroke of clock pin
digitalWrite(myClockPin, 1);
//zero the data pin after shift to prevent bleed through
digitalWrite(myDataPin, 0);
}
//stop shifting
digitalWrite(myClockPin, 0);
}
//blinks the whole register based on the number of times you want to
//blink "n" and the pause between them "d"
//starts with a moment of darkness to make sure the first blink
//has its full visual effect.
void blinkAll_2Bytes(int n, int d) {
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 0);
shiftOut(dataPin, clockPin, 0);
digitalWrite(latchPin, 1);
delay(200);
for (int x = 0; x < n; x++) {
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 255);
shiftOut(dataPin, clockPin, 255);
digitalWrite(latchPin, 1);
delay(d);
digitalWrite(latchPin, 0);
shiftOut(dataPin, clockPin, 0);
shiftOut(dataPin, clockPin, 0);
digitalWrite(latchPin, 1);
delay(d);
}
}