Informacion sobre "Mensajes de error"

Hola amigos:

Una vez mas, os agradeceria vuestra colaboración.
Con cierta frecuencia me sucede, que cuando tengo un código que funciona bien, si añado alguna instrucción mas, sale el tipico aviso...."Id.exe ha detectado un problema y debe cerrarse etc,etc"...

Envio un codigo, en el que vereis al final una sentencia switch.

Si lo dejo tal como está, da el mensaje de error. Si suprimo los dos ultimos "case"(el 3 y el 4) , ejecuta el codigo correctamente.

Tengo un UNO con una versión 1.6.5.

/*
 
 LEDS EN SECUENCIA
 UTILIZACION SWITCH
 
 Conmutador con resistencia pulldown a pin 2
 
 =============  =================                    

*/

int bote = 0;
int caja = 0;
const int Conmutador = 2;  
int retardo = 1200; 

void setup() {
    Serial.begin(9600);
     for (int Pin = 8; Pin < 12; Pin++)  // Declara como salidas del 8 al 11.
  {
    pinMode(Pin, OUTPUT);
  }
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(Conmutador, INPUT);    
}   

void loop() {
    
    Serial.print("caja:  ");    //Imprime Nº "caja"
    delay(10); 
    Serial.println(caja);
    delay(retardo);  
    
    int valor = digitalRead(Conmutador);
    
    Serial.print("Conmutador valor: ");
      delay(10); 
    Serial.println(valor);
      delay(retardo); 
   
    if (valor == LOW)  // Si el valor es LOW: Se apaga todo ===============
  {
    for (int Pin = 8; Pin < 12; Pin++)
  {  
    digitalWrite(Pin, LOW); 
  }      
  } 
    else
  {
    Serial.println("ENCIENDE TODO  !!!");
      delay(10); 
    for (int Pin = 8; Pin < 12; Pin++)// Enciende todo ==========
 {    
    digitalWrite(Pin, HIGH);            
    delay(5); //------------------- Permite a FOR un encendido rapido
 } 
 } 
    delay(retardo+500);// Da un retardo(+500)despues del encendido de todos los LEDS 
                       //antes de aplicar caja y SWITCH.  
    
    caja++;  // ============= aumenta el valor  de "caja" en 1
    bote++;
   
 if (caja > 5){ // Si "CAJA" es mayor que 5 se reinicia a 0.
        caja = 0;}
    if (bote > 5){ // Si "BOTE" es mayor que 5 se reinicia a 0.
    bote = 0;}// LL-IF  
      
    switch (caja) 
  {
       case 0: // No hace nada
       case 1: 
            digitalWrite(8,LOW);   
               break;
       case 2: 
            digitalWrite(9,LOW);   
               break;
       case 3: 
            digitalWrite(10,LOW);   
               break;
       case 4: 
            digitalWrite(11,LOW);   
               break;                                                 
  }  
   switch (bote) 
  {     
       case 1: 
            digitalWrite(6,HIGH);   
               break;
       case 2: 
            digitalWrite(7,HIGH);   
               break;
       case 3:    //========= lineas mencionadas
            digitalWrite(6,LOW);   
               break;
       case 4:    
            digitalWrite(7,LOW);   
               break; //============                                                          
  } 
 } 

// ============  FIN  ============

Espero alguna ayuda, ya que no he encontrado ninguna solucion en San Google

Gracias anticipadas. Saludos !!!

A mi me compila bien.

case 0: // No hace nada

Qué significa esto? Sin la sentencia break, igual acaba haciendo lo mismo que en el case 1.

PD: estoy de acuerdo con surbyte; a mi también me compila tal y como está.

Gracias por las respuestas:

Surbyte:

Tu ya me diste una ayudita una vez por algo parecido, en aquella era con Serial.print. Como has comprobado ahora me pasa con switch ....????

Lucario 448:

No hagas caso del **"case 0",**era una prueba mas.

Como os comentaba ..."Si suprimo los dos ultimos "case"(el 3 y el 4) , ejecuta el codigo correctamente."....

No tengo ni idea ,si es por el ide o por el ordenador.

Saludos !!!