Changes the leds that are on of off based on the array 'one'.
Next thing to do is to create the an array of objects. The objects being arrays one, two, three, etc.
UPDATED: to build a primary array.
int data = 2;
int clock = 3;
int latch = 4;
int one[] ={6,4};
int two[] ={2,3};
int three[] ={1,5};
String numbers[]= {"one", "two", "three"};
int ledState = 0;
const int ON = HIGH;
const int OFF = LOW;
void setup() {
pinMode(2, OUTPUT); //data
pinMode(3,OUTPUT); //clock
pinMode(4, OUTPUT); //latch
}
void loop() {
for(int b=0; b < sizeof(numbers); b++){
for(int i=0; i < sizeof(numbers[b]); i++){ //loops through each element of the array that was created earlier
changeLED(numbers[b][i], ON); //uses the sizeof function to determine the length of the array
}
delay(1000);
for(int i=0; i < sizeof(numbers[b]); i++){
changeLED(numbers[b][i], OFF);
}
delay(1000);
}
}
void updateLEDs(int value){
digitalWrite(latch, LOW); //Pulls the chips latch low
shiftOut(data, clock, MSBFIRST, value); //Shifts out the 8 bits to the shift register
digitalWrite(latch, HIGH); //Pulls the latch high displaying the data
}
/*
* updateLEDsLong() - sends the LED states set in ledStates to the 74HC595
* sequence. Same as updateLEDs except the shifting out is done in software
* so you can see what is happening.
*/
void updateLEDsLong(int value){
digitalWrite(latch, LOW); //Pulls the chips latch low
for(int i = 0; i < 8; i++){ //Will repeat 8 times (once for each bit)
int bit = value & B10000000; //We use a "bitmask" to select only the eighth
//bit in our number (the one we are addressing this time through
value = value << 1; //we move our number up one bit value so next time bit 7 will be
//bit 8 and we will do our math on it
if(bit == 128){digitalWrite(data, HIGH);} //if bit 8 is set then set our data pin high
else{digitalWrite(data, LOW);} //if bit 8 is unset then set the data pin low
digitalWrite(clock, HIGH); //the next three lines pulse the clock pin
delay(1);
digitalWrite(clock, LOW);
}
digitalWrite(latch, HIGH); //pulls the latch high shifting our data into being displayed
}
int bits[] = {B00000001, B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000};
int masks[] = {B11111110, B11111101, B11111011, B11110111, B11101111, B11011111, B10111111, B01111111};
/*
* changeLED(int led, int state) - changes an individual LED
* LEDs are 0 to 7 and state is either 0 - OFF or 1 - ON
*/
void changeLED(int led, int state){
ledState = ledState & masks[led]; //clears ledState of the bit we are addressing
if(state == ON){ledState = ledState | bits[led];} //if the bit is on we will add it to ledState
updateLEDs(ledState); //send the new LED state to the shift register
}
Monday, August 26, 2013
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment