// Demo Program that will become a led sign once all the led patterns have being designed
// Show how to use the 74HC595 IC to extend the Arduino;s IO pins
#define SHIFT_DATA 5 // PIN of Arduino connects to PIN 14 74595 data in
#define SHIFT_CLK 3 // PIN of Arduino connects to PIN 11 74595 Shift Clock
#define SHIFT_LATCH 4 // PIN of Arduino connects to PIN 12 74595 Output Latch
// Pin 13 of 595 - Output enable not connected
int tbl[]={1,2,4,8,16,32,64,128}; // Bit numbers of the output pins of the 74HC595
// Macros
#define dy delay(300)
#define num_of_leds sizeof(tbl) / sizeof(int)
long seguenceDelay = 300; //ms
long currentDelay = 0;
int ref = 0;
int i; // general loop counter
void sendOutData(int value)
{
shiftOut(SHIFT_DATA,SHIFT_CLK,LSBFIRST,value);
digitalWrite(SHIFT_LATCH, LOW);
digitalWrite(SHIFT_LATCH, HIGH);
digitalWrite(SHIFT_LATCH, LOW);
// Serial.print(value,BIN);Serial.print(" ");Serial.println(value,DEC);
}
void setup()
{
Serial.begin(57600);
pinMode(SHIFT_CLK,OUTPUT);
pinMode(SHIFT_DATA,OUTPUT);
pinMode(SHIFT_LATCH,OUTPUT);
}
void loop()
{
// Binary Count up 0-255
Serial.println("Binary counter");
for(i=0;i<256;i++)
{
sendOutData(i);
delay(100);
}
// All on / Off Blink 5x
Serial.println("All on/Off)");
for (i=0;i<5;i++ )
{
sendOutData(255);
dy;
sendOutData(0);
dy;
}
// Right to Left
Serial.println("Right to Left");
for (i =0; i < 8; i++)
{
sendOutData(1<< i);
dy;
sendOutData(0);
}
//Left to Right
Serial.println("Left to right");
int ref=0;
for (int i =0 ; i<8; i++)
{
sendOutData(128>> i);
dy;
sendOutData(0);
}
//Left to right FILL
Serial.println("left to right fill");
ref =0;
for (i =7; i > -1; i--)
{
ref=ref+tbl[i];
sendOutData(ref);
dy;
}
Serial.println("left to right unfill");
ref =255;
for (i =7; i > -1; i--)
{
ref=ref-tbl[i];
sendOutData(ref);
dy;
}
//RIGHT to Left FILL
Serial.println("Right to Left fill");
ref=0;
for (int i =0; i < 8; i++)
{
ref = ref + tbl[i];
sendOutData( ref);
dy;
}
Serial.println("Right to left unfill");
ref =255;
for (i =0; i < 8; i++)
{
ref = ref-tbl[i];
sendOutData(ref);
dy;
}
// 2 Bits shiting Right to left and Left to right
Serial.println("Bits shiting left to Right & Back again");
ref=3;
for(i=1;i<4;i++)
{
sendOutData(ref);
dy;
ref=ref << 2;
sendOutData(ref);
dy;
}
ref=192;
for(i=1;i<4;i++)
{
sendOutData(ref);
dy;
ref=ref >> 2;
sendOutData(ref);
dy;
}
// Two by Two
Serial.println("two by two");
for(i=1;i<5;i++)
{
sendOutData(85);
dy;
sendOutData(170);
dy;
}
// alternate right
Serial.println("Alternate R to L");
ref=5;
for(i=1;i<3;i++)
{
sendOutData(ref);
ref= ref <<2;
dy;
sendOutData(ref);
dy;
}
// alternate left
Serial.println("Alternate L to R");
ref=160;
for(i=1;i<3;i++)
{
sendOutData(ref);
ref= ref >>2;
dy;
sendOutData(ref);
dy;
}
// 4 on 4
Serial.println("4 on 4");
for(i=1;i<6;i++)
{
sendOutData(240);
dy;
sendOutData(15);
dy;
}
// To the inside
Serial.println("To the Inside");
for(int i=0;i<4;i++){
sendOutData(tbl[i] + tbl[7-i] );
Serial.println(tbl[i] + tbl[7-i],DEC);
dy;dy;
}
// To the Outside
Serial.println("To the Outside");
ref=1;
for(int i=3;i>-1;i--)
{
sendOutData(tbl[i]+ tbl[i+ ref]);
Serial.println(tbl[i]+ tbl[i+ref],DEC);
dy;dy;
ref=ref+2;
}
}