Ok yes I am a bit of a noob at this but I thought I would ask to see if someone could help. Basicly I'm modifying a piece of code from this website (The http://www.arduino.cc/en/Tutorial/ShiftOut tutorial). So I have wired up everything correctly and the sample code does the job and lights up what it is designed to.
Now what I was wanting to do was use some of this code but convert it so that it just lights up the LEDs depending on the value of certain inputs. The inputs are just 3 LEDs (red, yellow and green) on a WiFi strength testing device. The WiFi strength tester just lights up the LEDs depending on the signal strength. So I was planning on having 3 IC's with 8 LEDs connected to each just light up in groups when 1 of the input LEDs light up.
So far I have got this and then got stuck.
int inputPin1 = 2; // choose the input pin (for a pushbutton)
int inputPin2 = 3; // choose the input pin (for a pushbutton)
int inputPin3 = 4; // choose the input pin (for a pushbutton)
int val1 = 0; // variable for reading the pin status
int val2 = 0; // variable for reading the pin status
int val3 = 0; // variable for reading the pin status
//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;
//holder for infromation you're going to pass to shifting function
byte data = 0;
void setup() {
//set pins to output because they are addressed in the main loop
pinMode(latchPin, OUTPUT);
pinMode(inputPin1, INPUT); // declare pushbutton as input
pinMode(inputPin2, INPUT); // declare pushbutton as input
pinMode(inputPin3, INPUT); // declare pushbutton as input
}
void loop() {
// Extra code
val1 = HIGH;//digitalRead(inputPin1); // read input value
val2 = LOW;//digitalRead(inputPin2); // read input value
val3 = digitalRead(inputPin3); // read input value
if (val1 == HIGH) {
// green led is on
} else {
// green led is off
}
if (val2 == HIGH) {
// yellow led is on
} else {
// yellow led is off
}
if (val3 == HIGH) {
// red led is on
} else {
// red led is off
}
//function that blinks all the LEDs
//gets passed the number of blinks and the pause time
blinkAll_2Bytes(1,500);
// light each pin one by one using a function A
for (int j = 0; j < 8; j++) {
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, 0);
//red LEDs
lightShiftPinA(7-j);
//green LEDs
lightShiftPinA(j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, 1);
delay(1000);
}
// light each pin one by one using a function A
for (int j = 0; j < 8; j++) {
//ground latchPin and hold low for as long as you are transmitting
digitalWrite(latchPin, 0);
//red LEDs
lightShiftPinB(j);
//green LEDs
lightShiftPinB(7-j);
//return the latch pin high to signal chip that it
//no longer needs to listen for information
digitalWrite(latchPin, 1);
delay(1000);
}
}
//This function uses bitwise math to move the pins up
void lightShiftPinA(int p) {
//defines a local variable
int pin;
//this is line uses a bitwise operator
//shifting a bit left using << is the same
//as multiplying the decimal number by two.
pin = 1<< p;
//move 'em out
shiftOut(dataPin, clockPin, pin);
}
//This function uses that fact that each bit in a byte
//is 2 times greater than the one before it to
//shift the bits higher
void lightShiftPinB(int p) {
//defines a local variable
int pin;
//start with the pin = 1 so that if 0 is passed to this
//function pin 0 will light.
pin = 1;
for (int x = 0; x < p; x++) {
pin = pin * 2;
}
//move 'em out
shiftOut(dataPin, clockPin, pin);
}
more on next post