Good day, forgive me if this is a rather simple question, but I'm fairly new to writing Arduino Code.
First I'm using an Arduino Uno R3, with a RGB LED, and an HRLV-MaxSonar-EZ1. I'm trying to setup my code with the following conditions: range reading less than 350 the LED is red, range readings between 351 and 600 the LED is green, and anything past 601 turns the LED blue. The code works properly for the red and green, but when there are range readings past 600, I still have the green in the LED. Below is my code.
const int pwPin1 = 3;
int led1 = 9;
int led2 = 10;
int led3 = 11;
long sensor1;
void setup () {
Serial.begin(9600);
pinMode(pwPin1, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void read_sensor(){
sensor1 = pulseIn(pwPin1, HIGH);
}
void red_warning(){
if (sensor1 < 350){
pinMode(led1, OUTPUT);
digitalWrite(led1, HIGH); //turn on red LED
delay(10); //wait for 10 ms
digitalWrite(led1, LOW);
pinMode(led1, INPUT);
}
}
void green_warning(){
if (sensor1 < 600, sensor1 > 351){
pinMode(led2, OUTPUT);
digitalWrite(led2, HIGH); //turn on blue LED
delay(10); //wait for 10 ms
digitalWrite(led2, LOW);
pinMode(led2, INPUT);
}
}
void blue_warning(){
if (sensor1 > 601){
pinMode(led3, OUTPUT);
digitalWrite(led3, HIGH); //turn on green LED
delay(100);
digitalWrite(led3, LOW);
pinMode(led3, INPUT);
}
}
void loop () {
read_sensor();
blue_warning();
green_warning();
red_warning();
printall();
}
void printall(){
Serial.print("S1");
Serial.print(" = ");
Serial.print(sensor1);
Serial.println();
delay(100);
}