Problemi con codice

Ciao," ritagliando " un codice e inserito nel mio sketch , non riesco a compilare il codice , qualcuno mi riesce a dare una dritta??
Quando inserisco nel codice solo il case r,0 funziona,mentre quando aggiungo anche il case 1,non funziona .

ansi_36_01.ino.cpp:86: error: expected unqualified-id before ‘case’

void loop() {

 int lettura; 
 unsigned long t_Millis; 
 byte caratteri; 
 byte tempChar; 

 if (Serial.available()) {
   byte command = Serial.read(); 
   switch (command) { 

    case 'r':{
      for (int address = 0; address <= 5; address++){
       value = EEPROM.read(address);
       Serial.print(F("Step"));
       Serial.print("\t");
       Serial.print(address);
       Serial.print("\t");
       Serial.print(F("Tempo"));
       Serial.print("\t");
       Serial.print(value, DEC);
       Serial.println();
       delay(100);
       if (address == 5){
        address = 0;
        break;
      }
    }
    break;
  }

  case '0': {
    lettura = 0;
    t_Millis = millis();
    caratteri = 0;
    do {
     if (Serial.available()) {
       tempChar = Serial.read();
       caratteri++;
       if ((tempChar >= '0') && (tempChar <= '9')) { 
         lettura = (lettura * 10) + (tempChar - '0');
         } else if ((tempChar == 10) || (tempChar == 13)) {

           break;
         }
       }

       } while((millis() - t_Millis < 500) && (lettura <= 255) && (caratteri < 10));
       if (lettura <= 255) {
        address = 0;
        EEPROM.write(address, lettura);
        Serial.print(F("Tempo impostato Step 0 =  "));
        Serial.println(lettura, DEC);
      }
      break;
    }
    while (Serial.available()) {
     byte a = Serial.read();
   }
   break;
 }
}
}

case '1': {
  lettura = 0;
  t_Millis = millis();
  caratteri = 0;
  do {
   if (Serial.available()) {
     tempChar = Serial.read();
     caratteri++;
     if ((tempChar >= '0') && (tempChar <= '9')) { 
       lettura = (lettura * 10) + (tempChar - '0');
       } else if ((tempChar == 10) || (tempChar == 13)) {

         break;
       }
     }

     } while((millis() - t_Millis < 500) && (lettura <= 255) && (caratteri < 10));
     if (lettura <= 255) {
      address = 1;
      EEPROM.write(address, lettura);
      Serial.print(F("Tempo impostato Step 1 =  "));
      Serial.println(lettura, DEC);
    }
    break;
  }
  while (Serial.available()) {
   byte a = Serial.read();
 }
 break;
}
}
}

Un switch si usa così:

switch (command) { 
    case 'r':
        ...
        break;
    case 'x':
        ...
        break;
    default:
        ...
        break;
}

Tu hai inserito le graffe "a caso". Usa CTRL+T per indentazione automatica, vedrai che le graffe sono mal posizionate.

Ciao,ma quando nello Switch Utilizzo ( r,0 ) ,il codice viene compilato e funziona ,e quando aggiungo l’opzione case 1 ,non funziona ,in che punto le parentesi sono messe a caso??

// Questo codice funziona

if (Serial.available()) {
   byte command = Serial.read(); 
   switch (command) { 

    case 'r':{
      for (int address = 0; address <= 5; address++){
       value = EEPROM.read(address);
       Serial.print(F("Step"));
       Serial.print("\t");
       Serial.print(address);
       Serial.print("\t");
       Serial.print(F("Tempo"));
       Serial.print("\t");
       Serial.print(value, DEC);
       Serial.println();
       delay(100);
       if (address == 5){
        address = 0;
        break;
      }
    }
    break;
  }

  case '0': {
    lettura = 0;
    t_Millis = millis();
    caratteri = 0;
    do {
     if (Serial.available()) {
       tempChar = Serial.read();
       caratteri++;
       if ((tempChar >= '0') && (tempChar <= '9')) { 
         lettura = (lettura * 10) + (tempChar - '0');
         } else if ((tempChar == 10) || (tempChar == 13)) {

           break;
         }
       }

       } while((millis() - t_Millis < 500) && (lettura <= 255) && (caratteri < 10));
       if (lettura <= 255) {
        address = 0;
        EEPROM.write(address, lettura);
        Serial.print(F("Tempo impostato Step 0 =  "));
        Serial.println(lettura, DEC);
      }
      break;
    }
    while (Serial.available()) {
     byte a = Serial.read();
   }
   break;
 }
}
}

Usa CTRL+T e ti dirà: "Formattazione annullata: troppe parentesi graffe chiuse" Non ti basta quello che ho scritto prima ? Non noti che in ogni tuo case hai aperto una graffa che non serve a nulla?

case 'r': {

Anche solo prima del case '1': hai chiuso graffe a iosa così tanto per fare. :D

Segui questa regola, le graffe NON sono un fastidio, mettile in evidenza e quello che stà in ogni graffa indentalo di 2 a destra, esempio:

if( test) 
{ 
  while(testx)
  {
  }
}

Per ogni graffa aperta, una sola chiusa, nella stessa colonna. Noterai che l'IDE stesso quando sei su una graffa ti evidenzia la corrispondente.

Ad esempio questo pezzo al fondo del case '1' è un pasticcio:

    break;
  }
  while (Serial.available()) {
   byte a = Serial.read();
 }
 break;
}
}

Non si capisce quali pezzi stanno dentro a quale ciclo.

Grazie 1000 , adesso ho capito gli errori commessi.