//--------------------------------------------------------------------------------------------------------------------------//
//LumiColor   INIT
//--------------------------------------------------------------------------------------------------------------------------//

float y;
char ChoixModeColor=0;
void mode_b(void);
void mode_c(void);

//--------------------------------------------------------------------------------------------------------------------------//
//LumiColor   SetAllLed
//--------------------------------------------------------------------------------------------------------------------------//

void SetAllLed(char R,char G,char B)
{ 
    for (int i = 0; i <= (NUM_LEDS-1); i++)              
    {
          leds[i] = CRGB ( R, G, B);
          FastLED.show();
          //delay(2);
    }
}

//--------------------------------------------------------------------------------------------------------------------------//
//LumiColor   LumiColor
//--------------------------------------------------------------------------------------------------------------------------//

void LumiColor(void)
{
   
  changement=1;

  SerialBT.print("\n\\____COLOR_CONTROL____//");
  SerialBT.print("\n\\__a -> full red______//");
  SerialBT.print("\n\\__b -> Mode_B________//");
  SerialBT.print("\n\\__c -> Mode_C________//");
  SerialBT.print("\n\\__z -> EXIT MENU__//");

while (changement == 1)                     
    {
       ValeurReceptionBT =(char)SerialBT.read();              // Lecteur d'une éventuelle reception BT                                                  
      
      if(ValeurReceptionBT == 'z')
          {
            SerialBT.print("\n\\________EXIT________//");
            changement=0;
            //SerialBT.print("\n\n\\________MENU________//");
          }

      if(ValeurReceptionBT == 'a')
          {
            SetAllLed(255,0,0);
          }
      if(ValeurReceptionBT == 'b')
        {
          ChoixModeColor='b';
          SerialBT.print("\n\\__z -> pour quitté le mode__//");
          mode_b();
        }
      if(ValeurReceptionBT == 'c')
        {
          ChoixModeColor='c';
          SerialBT.print("\n\\__z -> pour quitté le mode__//");
          mode_c();
        }
      
    }

}

//--------------------------------------------------------------------------------------------------------------------------//
//LumiColor   Mode_B
//--------------------------------------------------------------------------------------------------------------------------//

void mode_b(void)
{

  while (ChoixModeColor == 'b')                     
              {

                    for (int i = 0; i <= 29; i++) 
                    {               
                        leds[i] = CRGB ( 8*i, 0, 0);                          // Selection Rouge 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }
                    
                    for (int i = 29; i >= 0; i--) 
                    {
                        leds[i] = CRGB ( 255, 8*i, 0);                        // Selection Jaune
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                        
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 0; i <= 29; i++) 
                    {               
                        leds[i] = CRGB ( 255 , 255, 8*i);                     // Selection Blanc 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 29; i >= 0; i--) 
                    {      
                        if (i==0) {y=0;  }
                        else {y = (8/i); }
                               
                        leds[i] = CRGB ( (char)y, 255, 255);                  // Selection Turquoise 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }
                    
                    for (int i = 0; i <= 29; i++) 
                    {
                        if (i==0) {y=0;  }
                        else {y = (8/i); }
                        
                        leds[i] = CRGB ( 0, (char)y, 255);                    // Selection Bleu
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                        
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 29; i >= 0; i--) 
                    {      
                        if (i==0) {y=0;  }
                        else {y = (8/i); }
                                
                        leds[i] = CRGB ( 0 , 0, (char)y);                     // Selection Noir 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }
                    
                    Serial.write(SerialBT.read());                            // pour debugage
                    ValeurReceptionBT = ChoixModeColor;                       // pour gestion BT

                    if(ChoixModeColor == 'z')
                      {
                        SerialBT.print("\nSortie du mode");
                      }
              }

}

//--------------------------------------------------------------------------------------------------------------------------//
//LumiColor   Mode_C
//--------------------------------------------------------------------------------------------------------------------------//

void mode_c(void)
{

  while (ChoixModeColor == 'c')                     
              {

                    for (int i = 0; i <= 29; i++) 
                    {               
                        leds[i] = CRGB ( 255, 0, 0);                          // Selection Rouge 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }
                    
                    for (int i = 29; i >= 0; i--) 
                    {
                        leds[i] = CRGB ( 255, 128, 0);                        // Selection Orange
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                        
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 0; i <= 29; i++) 
                    {               
                        leds[i] = CRGB ( 255 , 255, 0);                       // Selection Jaune 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 29; i >= 0; i--) 
                    {      
                               
                        leds[i] = CRGB ( 128, 255, 0);                        // Selection Vert Clair 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    } 
                    
                    for (int i = 0; i <= 29; i++) 
                    {
                        
                        leds[i] = CRGB ( 0, 255, 0);                          // Selection Vert
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                        
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 29; i >= 0; i--) 
                    {      
                                
                        leds[i] = CRGB ( 0 , 255, 128);                       // Selection Vert Turquoise 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 0; i <= 29; i++) 
                    {               
                        leds[i] = CRGB ( 0, 255, 255);                        // Selection Turquoise 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }
                    
                    for (int i = 29; i >= 0; i--) 
                    {
                        leds[i] = CRGB ( 0, 128, 255);                        // Selection Bleu Clair
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                        
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 0; i <= 29; i++) 
                    {               
                        leds[i] = CRGB ( 0 , 0, 255);                         // Selection Bleu 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 29; i >= 0; i--) 
                    {
                        leds[i] = CRGB ( 128, 0, 255);                        // Selection Violet
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                        
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 0; i <= 29; i++) 
                    {               
                        leds[i] = CRGB ( 255 , 0, 255);                       // Selection Rose 
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                         
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }

                    for (int i = 29; i >= 0; i--) 
                    {
                        leds[i] = CRGB ( 255, 0, 128);                        // Selection Rose-Rouge
                        FastLED.show();                                       // Utilisation de l'algo FastLed
                        if(SerialBT.read()=='z'){ ChoixModeColor='z';  }      // Detection éventuel d'une action BT 
                        
                        delayMicroseconds(5);                                 // delay de 5  us
                        delay(60);                                            // delay de 40 ms
                    }
                    
                    Serial.write(SerialBT.read());                            // --------------
                    ValeurReceptionBT = ChoixModeColor;                       // pour gestion BT

                    if(ChoixModeColor == 'z')
                      {
                        SerialBT.print("\nSortie du mode");
                      }
              }

}
