/*
This simple sketch is an example showing how the switch - case structure can be used to avoid nested if statements
LEDs are connected to pins 2,3,4 on the uno, with 470 ohm resistors to ground
a potentiometer between 0V and +V provides a variable input to A0
J. Errington 23 October 2020
*/
// assign pin numbers for the leds
const byte led_R = 4;
const byte led_Y = 3;
const byte led_G = 2;
//input on analog pin 0
const byte vIn = A0;
int reading;
void setup() {
Serial.begin(9600);
pinMode(led_R, OUTPUT);
pinMode(led_Y, OUTPUT);
pinMode(led_G, OUTPUT);
reading = analogRead(vIn); // dummy read to settle ADC
}
void loop() {
reading = analogRead(vIn);
Serial.println(reading);
reading = reading / 64; //just to get easy numbers
delay(100);
// voltage warning lights
switch (reading) {
case 0: { //R
digitalWrite(led_R, HIGH);
digitalWrite(led_Y, LOW);
digitalWrite(led_G, LOW);
}
break; // try the effect of commenting this out
case 1 : { // RA
digitalWrite(led_R, HIGH);
digitalWrite(led_Y, HIGH);
digitalWrite(led_G, LOW);
}
break;
case 2 ... 4 : { //A
digitalWrite(led_R, LOW);
digitalWrite(led_Y, HIGH);
digitalWrite(led_G, LOW);
}
break;
case 5 ... 14: { //G
digitalWrite(led_R, LOW);
digitalWrite(led_Y, LOW);
digitalWrite(led_G, HIGH);
}
break;
// if its not any of the above then it must be 15.
default: { //GA
digitalWrite(led_R, LOW);
digitalWrite(led_Y, HIGH);
digitalWrite(led_G, HIGH);
}
}
}//loop