/*************************************************************************
* Recyclage d'un vieux tube à Led ! Gradateur sur les 3 couleurs de base *
* Montée à tour de role des 3 couleurs jusqu'au maximum, puis extinction *
* de la première pour une remontée progressive jusqu'a maxi, puis jeux de*
* chenillar, allumage aléatoir pour le fun. Keep cool and Feel the Blues *                   *
* Micro Attiny85 et IRFZ44 . https://amazing-vacuum-tubes.com            *
*************************************************************************/

int ledRed = 4; // Declaration du cablage
int ledGreen = 1;
int ledBlue = 0;

int i = 0;

int valRed, valGreen, valBlue; // Declaration des variables

void setup() {
  pinMode(ledRed, OUTPUT);   // Direction des pinuches 
  pinMode(ledGreen, OUTPUT);   
  pinMode(ledBlue, OUTPUT);

  valRed = 0; // Valeurs de départ 
  valGreen = 0;
  valBlue = 0;

}

void loop() {
debut:

 while(valBlue < 255){  // Montée des leds bleus
 analogWrite(ledBlue, valBlue);
    valBlue++;
    delay(60);
     }
 while(valBlue > 0){  // Descente des leds bleus
 analogWrite(ledBlue, valBlue);
    valBlue--;
    delay(60);
     }
 while(valGreen < 255){  // Montée des leds Vertes 
 analogWrite(ledGreen, valGreen);
    valGreen++;
    delay(60);
     }
 while(valGreen > 0){  // Descente des leds Vertes 
 analogWrite(ledGreen, valGreen);
    valGreen--;
    delay(60);
     }
 while(valRed< 255){ // Montée des leds rouge
 analogWrite(ledRed, valRed);
    valRed++;
    delay(60);    
     }
 while(valRed > 0){ // Descente des leds rouge
 analogWrite(ledRed, valRed);
    valRed--;
    delay(60);    
     }


 while(valBlue < 255){  // Montée des leds bleus
 analogWrite(ledBlue, valBlue);
    valBlue++;
    delay(70);
     }
 while(valGreen < 255){  // Montée des leds Vertes 
 analogWrite(ledGreen, valGreen);
    valGreen++;
    delay(70);
     }
 while(valRed< 255){ // Montée des leds rouge
 analogWrite(ledRed, valRed);
    valRed++;
    delay(70);    
     }

    delay(500);
 while ( i < 7){ // Clignitements
  valRed = 0;  // Remise à Zero
 analogWrite(ledRed, valRed);
  valGreen = 0;
 analogWrite(ledGreen, valGreen);
  valBlue = 0;
 analogWrite(ledBlue, valBlue);
    delay(500);
  valRed = 255;  // A fond
 analogWrite(ledRed, valRed);
  valGreen = 255;
 analogWrite(ledGreen, valGreen);
  valBlue = 255;
 analogWrite(ledBlue, valBlue);
    delay(500);
    i++;
 }
 i = 0;

 while(valGreen > 0){  // Descente des leds Vertes 
 analogWrite(ledGreen, valGreen);
    valGreen--;
    delay(70);
     }

 while(valBlue > 0){  // Descente des leds bleus
 analogWrite(ledBlue, valBlue);
    valBlue--;
    delay(70);
     }

 while(valRed > 0){ // Descent des leds rouge
 analogWrite(ledRed, valRed);
    valRed--;
    delay(70);    
     }
    delay(500);

 while( i < 40) {  // Alumage alléatoire
valRed = random(255);
 analogWrite(ledRed, valRed);
valGreen = random(255);
 analogWrite(ledGreen, valGreen);
valBlue = random(255);
 analogWrite(ledBlue, valBlue);
    delay(500);
    i++;
 }   

    i = 0; 
  valRed = 0;  // Remise à Zero
 analogWrite(ledRed, valRed);
  valGreen = 0;
 analogWrite(ledGreen, valGreen);
  valBlue = 0;
 analogWrite(ledBlue, valBlue);
    delay(200);

 while( i < 40) {  // Chenillard
valRed = (255);
 analogWrite(ledRed, valRed);
valGreen = (255);
 analogWrite(ledGreen, valGreen);
valBlue = (0);
 analogWrite(ledBlue, valBlue);
    delay(200);
valRed = (255);
 analogWrite(ledRed, valRed);
valGreen = (0);
 analogWrite(ledGreen, valGreen);
valBlue = (255);
 analogWrite(ledBlue, valBlue);
   delay(200);
valRed = (0);
 analogWrite(ledRed, valRed);
valGreen = (255);
 analogWrite(ledGreen, valGreen);
valBlue = (255);
 analogWrite(ledBlue, valBlue);
    delay(200);
    i++; 
 }
  

 i = 0;
  valRed = 0;  // Remise à Zero
 analogWrite(ledRed, valRed);
  valGreen = 0;
 analogWrite(ledGreen, valGreen);
  valBlue = 0;
 analogWrite(ledBlue, valBlue);
    delay(500);

goto debut; // Et repart pour un tour 
}
