/*
 * Hello Simon
 * Author : Mikko Toivonen
 * 22.3.2017 
 */

// constants won't change. They're used here to
// set pin numbers:
const int BluePin = 3; // Blue 
const int OrgPin = 8;// Orange
const int GrePin =  2;//  Green 
const int RedPin = 7; //  Red

// variables will change:
int BlueState = 0;         // variable for reading the pushbutton status
int RedState = 0;
int GreState = 0;
int OrgState = 0;


void setup() { // Initialize the buttons for reading.
  pinMode(OrgPin, INPUT);
  pinMode(GrePin, INPUT);
  pinMode(RedPin, INPUT);
  pinMode(BluePin, INPUT);

}

void loop() {
  // read the state of the pushbutton value:
  BlueState = analogRead(BluePin);
  RedState = analogRead(RedPin);
  GreState = analogRead(GrePin);
  OrgState = analogRead(OrgPin);
  
  // check if the pushbutton is pressed.
  // if it is, the buttonState is LOW:

  if (BlueState == LOW) {
    // turn Blue LED on:
 pinMode(BluePin, OUTPUT);
 pinMode(GrePin, OUTPUT);
 analogWrite(BluePin, 255);
 analogWrite(GrePin, 255);
  }else
  {// turn the LED off and return to input mode
 analogWrite(BluePin, 0);
 analogWrite(GrePin, 0);
 pinMode(GrePin, INPUT);
    pinMode(BluePin, INPUT);
  }

    if (RedState == LOW) {
    // turn RED and orange LED on:
 pinMode(RedPin, OUTPUT);
 analogWrite(RedPin, 255);
 analogWrite(OrgPin, 255);
  }else
  {// turn the LED off and return to input mode
 analogWrite(RedPin, 0);
 analogWrite(OrgPin, 0);
  pinMode(RedPin, INPUT);
  }

      if (GreState == LOW) {
//Using a do-while loop might allow the board to break out of the loop.
/*    // turn all LEDs on:
 pinMode(BluePin, OUTPUT);
 pinMode(GrePin, OUTPUT);
 pinMode(RedPin, OUTPUT);
 pinMode(OrgPin, OUTPUT);
 analogWrite(BluePin, 255);
 analogWrite(GrePin, 255);
 analogWrite(RedPin, 255);
 analogWrite(OrgPin, 255); */
 //Make the leds blink in sequence 
 // reset to off state
pinMode(BluePin, OUTPUT);
pinMode(GrePin, OUTPUT);
pinMode(RedPin, OUTPUT);
pinMode(OrgPin, OUTPUT);
analogWrite(RedPin, 0);
analogWrite(OrgPin, 0);
analogWrite(BluePin, 0);
analogWrite(GrePin, 0);
//start lighthing up the LEDs at 100ms intervals.
analogWrite(GrePin, 255);
delay(100);
analogWrite(BluePin, 255);
delay(100);
analogWrite(RedPin, 255);
delay(100);
analogWrite(OrgPin, 255);
delay(100);
//and then start turning them off.
analogWrite(OrgPin, 0);
delay(100);
analogWrite(RedPin, 0); 
delay(100);
analogWrite(BluePin, 0);
delay(100);
analogWrite(GrePin, 0);
delay(100);
  }else
  {
    //with IF, the board is stuck in this loop, as there is no further check if the button is being pressed.
    //this loop overrides the other loops, and they cant be used without resetting the board.
    //turn the LEDs off and return to input mode
 analogWrite(RedPin, 0);
 analogWrite(OrgPin, 0);
 analogWrite(BluePin, 0);
 analogWrite(GrePin, 0);
 pinMode(GrePin, INPUT);
 pinMode(BluePin, INPUT);
 pinMode(RedPin, INPUT);
 pinMode(OrgPin, INPUT);
  }

/*    if (OrgState == LOW) {
    // Button for the Orange LED is not co-operative.
 pinMode(BluePin, OUTPUT);
 pinMode(GrePin, OUTPUT);
  pinMode(RedPin, OUTPUT);
 analogWrite(BluePin, 255);
 analogWrite(GrePin, 255);
  analogWrite(RedPin, 255);
  }else
  {// turn the RGB LED off and return to input mode
 analogWrite(RedPin, 0);
 analogWrite(OrgPin, 0);
 analogWrite(BluePin, 0);
 analogWrite(GrePin, 0);
 pinMode(GrePin, INPUT);
 pinMode(BluePin, INPUT);
 pinMode(RedPin, INPUT);
 
  }*/
  
}

