/*
   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