So I'm trying to change delay times using if statements, but it isn't working.
This is for a traffic light project, with 6 LEDs and a potentiometer. I want the delay to increase as the value of the potentiometer increases, and the delay to decrease as the value of the potentiometer decreases.
Here's my code:
int red1 = 4; //LEDs
int yellow1 = 3;
int green1 = 9;
int red2 = 5;
int yellow2 = 6;
int green2 = 7;
volatile int g1r2delayTime = 5000;
volatile int y1r2delayTime = 3000;
volatile int r1r2delayTime = 1000;
volatile int r1g2delayTime = 5000;
volatile int r1y2delayTime = 3000;
int pot = A0; //potentiometer
int potReading = 0; //potentiometer reading
void potCheck() {
potReading = analogRead(pot);
Serial.println(potReading);
delay(1);
if ((potReading <= 0 && potReading >= 200)) {
g1r2delayTime = 3000;
y1r2delayTime = 1000;
r1r2delayTime = 1000;
r1g2delayTime = 3000;
r1y2delayTime = 1000;
}
else if ((potReading <= 201) && (potReading >= 400)) {
g1r2delayTime = 4000;
y1r2delayTime = 2000;
r1r2delayTime = 1000;
r1g2delayTime = 4000;
r1y2delayTime = 2000;
}
else if ((potReading <= 401) && (potReading >= 600)) {
g1r2delayTime = 5000;
y1r2delayTime = 3000;
r1r2delayTime = 1000;
r1g2delayTime = 5000;
r1y2delayTime = 3000;
}
else if ((potReading <= 601) && (potReading >= 800)) {
g1r2delayTime = 8000;
y1r2delayTime = 5000;
r1r2delayTime = 2000;
r1g2delayTime = 8000;
r1y2delayTime = 5000;
}
else if ((potReading <= 801 && potReading >= 1023)) {
g1r2delayTime = 10000;
y1r2delayTime = 7000;
r1r2delayTime = 1000;
r1g2delayTime = 10000;
r1y2delayTime = 7000;
}
}
void setup() {
Serial.begin(9600);
pinMode(red1, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(green1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(yellow2, OUTPUT);
pinMode(green2, OUTPUT);
pinMode(alarm, OUTPUT);
//pinMode(pot, INPUT);
}
void loop() {
potCheck();
digitalWrite(red1, LOW); //green and red
digitalWrite(yellow1, LOW);
digitalWrite(green1, HIGH);
digitalWrite(red2, HIGH);
digitalWrite(yellow2, LOW);
digitalWrite(green2, LOW);
delay(g1r2delayTime);
potCheck();
digitalWrite(red1, LOW); //yellow and red
digitalWrite(yellow1, HIGH);
digitalWrite(green1, LOW);
digitalWrite(red2, HIGH);
digitalWrite(yellow2, LOW);
digitalWrite(green2, LOW);
delay(y1r2delayTime);
potCheck();
digitalWrite(red1, HIGH); //red and red
digitalWrite(yellow1, LOW);
digitalWrite(green1, LOW);
digitalWrite(red2, HIGH);
digitalWrite(yellow2, LOW);
digitalWrite(green2, LOW);
delay(r1r2delayTime);
potCheck();
digitalWrite(red1, HIGH); //red and green
digitalWrite(yellow1, LOW);
digitalWrite(green1, LOW);
digitalWrite(red2, LOW);
digitalWrite(yellow2, LOW);
digitalWrite(green2, HIGH);
delay(r1g2delayTime);
potCheck();
digitalWrite(red1, HIGH); //red and yellow
digitalWrite(yellow1, LOW);
digitalWrite(green1, LOW);
digitalWrite(red2, LOW);
digitalWrite(yellow2, HIGH);
digitalWrite(green2, LOW);
delay(r1y2delayTime);
potCheck();
digitalWrite(red1, HIGH); //red and red
digitalWrite(yellow1, LOW);
digitalWrite(green1, LOW);
digitalWrite(red2, HIGH);
digitalWrite(yellow2, LOW);
digitalWrite(green2, LOW);
delay(r1r2delayTime);
}
Any ideas? I'm also a newbie/beginner, so keep that in mind