/*


  Major Studio: Computation - First Project, FOURTH iteration. Expressing time with LEDs.

  March 2009.

  

 ••• LumaSphere •••

  

  Joe Saavedra

  

*/

int ledPinG = 9;

int ledPinR = 10;

int ledPinB = 11;


int valR = 0;

int valG = 0;

int valB = 0;


int GT = 10;

int RT = 10;

int BT = 10;


long picker = 0;

long pickerD = 0;


void setup(){

 

  pinMode(ledPinG, OUTPUT);

  pinMode(ledPinR, OUTPUT);

  pinMode(ledPinB, OUTPUT);

  

  randomSeed(analogRead(0));

  

  Serial.begin(9600);

  

}


void loop(){

  

  //LED FADE-ON TIME

  GT = random(25, 250);

  RT = random(25, 250);

  BT = random(25, 250);

  

  Serial.print("GT: ");

  Serial.println(GT);

  Serial.println(" ");  

  Serial.print("RT: ");

  Serial.println(RT);

  Serial.println(" ");  

  Serial.print("BT: ");

  Serial.println(BT);

  Serial.println(" ");  


  

  //------ORDER OF COLORS TO FADE-ON-------

  picker = (random(1,7));

  

  Serial.print("picker: ");

  Serial.println(picker);

  Serial.println(" ");  

  

  if (picker == 1){

    green(GT);

    red(RT);

    blue(BT);

    pickerDown();

    }

    

  if (picker == 2){

    green(GT);

    blue(BT);

    red(RT);

    pickerDown();

    }

    

  if (picker == 3){

    blue(BT);

    red(RT);

    green(GT);

    pickerDown();

    }


  if (picker == 4){

    blue(BT);

    green(GT);

    red(RT);

    pickerDown();

    }

    

  if (picker == 5){

    red(RT);

    green(GT);

    blue(BT);

    pickerDown();

    }

    

  if (picker == 6){

    red(RT);

    blue(BT);

    green(GT);

    pickerDown();

    }

}


//-----------FADE-OFF ORDER---------

void pickerDown(){

  pickerD = random(1,7);

  

  Serial.print("pickerD: ");

  Serial.println(pickerD); 

  Serial.println(" "); 

  

  if (pickerD == 1){

    greenD(GT);

    redD(RT);

    blueD(BT);

    loop();

    }

    

  if (pickerD == 2){

    greenD(GT);

    blueD(BT);

    redD(RT);

    loop();

    }

    

  if (pickerD == 3){

    blueD(BT);

    redD(RT);

    greenD(GT);

    loop();

    }


  if (pickerD == 4){

    blueD(BT);

    greenD(GT);

    redD(RT);

    loop();

    }

    

  if (pickerD == 5){

    redD(RT);

    greenD(GT);

    blueD(BT);

    loop();

    }

    

  if (pickerD == 6){

    redD(RT);

    blueD(BT);

    greenD(GT);

    loop();

    }

}


/////---------LED FADE FUNCTIONS---------


//--------GREEN------

void green(int GT){

    for (valG = 10; valG <= 255; valG+=5){

      analogWrite(ledPinG, valG);

      delay(GT);

    }

}

void greenD(int GT){

    for (valG = 255; valG >= 0; valG-=5){

      analogWrite(ledPinG, valG);

      delay(GT);

    }

}


//---------RED-------

void red(int RT){

    for (valR = 10; valR <= 255; valR+=5){

      analogWrite(ledPinR, valR);

      delay(RT);

    }

}


void redD(int RT){

    for (valR = 255; valR >= 0; valR-=5){

      analogWrite(ledPinR, valR);

      delay(RT);

    }

}


//--------BLUE--------

void blue(int BT){

    for (valB = 10; valB <= 255; valB+=5){

      analogWrite(ledPinB, valB);

      delay(BT);

    }

}


void blueD(int BT){

    for (valB = 255; valB >= 0; valB-=5){

      analogWrite(ledPinB, valB);

      delay(BT);

    }

}