Led rgb no se detiene enseguida

Saludos chicos acudo a ustedes por un problema que tengo resulta que estaba haciendo unas pequeñas lamparas RGB con un pulsador que cambia de estados. A color ROJO,VERDE, AZUL Y MULTICOLORES. Pero en la parte de MULTICOLORES no se cambia enseguida tengo que esperar a que se acabe la secuencia para poder cambiar a color ROJO AZUL O VERDE. Tengo entendido que este es por el delay. COMO SOLUCIONARÍA PARA QUE SE CAMBIE LA SECUENCIA RAPIDAMENTE.

int red_light_pin = 5;
int green_light_pin = 4;
int blue_light_pin = 3;
int boton = 2;
int Gestion;
int contador;
int i = 0;

void setup ()
{
pinMode(red_light_pin, OUTPUT);
pinMode(green_light_pin, OUTPUT);
pinMode(blue_light_pin, OUTPUT);
pinMode (boton, INPUT);
Serial.begin (9600);
int espera = 200;
int time = 0;
}

void loop ()
{
int espera = 200;
int time = 0;
i = 0;

if (digitalRead (boton) == HIGH && millis() - time > espera)
{
Gestion ++;
Serial.print (Gestion);
}

if (Gestion == 6)
Gestion = 0;

switch (Gestion)
{
case 0:

  RGB_color(255, 255, 255);
  break;

case 1:
  RGB_color(0, 255, 255);


  break;

case 2:
  RGB_color(255, 255, 0);
  break;

case 3:
  RGB_color(255, 0, 255);
  break;

// ESTE ES EL PROBLEMA
case 4:
  RGB_color ( 0, 255 , 255 ) ; // Rojo
  delay( 1000 ) ;
  RGB_color ( 255 , 0 , 255 ) ; // Verde
  delay( 1000 ) ;
  RGB_color ( 255 , 255 , 0 ) ; // Azul
  delay( 1000 ) ;
  RGB_color ( 0 , 0 , 0 ) ; // Frambuesa
  delay( 1000 ) ;
  RGB_color ( 255 , 0 , 0 ) ; // Cian
  delay( 1000 ) ;
  RGB_color ( 0 , 255 , 0 ) ; // Magenta
  delay ( 1000 ) ;
  RGB_color ( 0 , 0 , 255 ) ; // Amarillo
  delay ( 1000 ) ;
  RGB_color ( 255 , 255 , 0 ) ; // Blanco
  delay ( 1000 ) ;
  break;
case 5:

  RGB_color(255, 255, 255); // OFF
  break;


case 6:
  time = millis();

}

delay (300);
}

void RGB_color(int red_light_value, int green_light_value, int blue_light_value)
{
analogWrite(red_light_pin, red_light_value);
analogWrite(green_light_pin, green_light_value);
analogWrite(blue_light_pin, blue_light_value);
}
`

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


Tienes que esperar por usar delay()
Si estas comenzando a programar te comento olvida el uso del delay().
Ve a Documentación y lee los tutoriales de millis() y de máquina de estados.
Tal vez no te guste al comienzo pero es la forma de lograr un código fluido.