[Risolto] Problema con telecomando IR + servomotori

Ciao nid69ita,
non ti ho risosto subito ieri perché stavo testando un'altro codice. Ho seguito il tuo consiglio, facendo un po' di debug ho scoperto il mio banalissimo errore.
Non premendo nessun tasto sul telecomando nella variabile comando restava memorizzato l'ultimo valore assegnato, ma come ho fatto a non pensarci !!! Dunque è stato sufficiente nella struttura di controllo if - else assegnare alla variabile un valore che non corrisponde a nessuno dei case dello switch. Ecco il codice corretto:

#include <IRremote.h>      
#include <Servo.h>

int RECV_PIN = 10;        // pin del sensore IR su Robot_shield

IRrecv irrecv(RECV_PIN);  // metodi della libreria
decode_results results;   // IRremote per decodifica

Servo servoDX;
Servo servoSX;

int comando;      // variabile per il codice IR in DEC
int rotServoDX;
int rotServoSX;
int delayServo;

void setup() {
  
  Bridge.begin();

  irrecv.enableIRIn(); // Start the receiver
  
  servoDX.attach(2);  // collegato su Robot shield a S1
  servoSX.attach(4);  // collegato su Robot shield a S3
  
  delayServo = 30;
}

void loop() {
  
  // controlla se è stato ricevuto un comando
  if (irrecv.decode(&results)) {
    storeCode(&results);
    irrecv.resume(); // resume receiver
  }
  else {
    comando = 0;  // se non è stato premuto nessun tasto assegna 0 alla variabile
  }
  
  // i codici dei case sono i valori della decodifica 
  // in decimale del telecomando che si sta utilizzando

  switch (comando) {
    case 528:  // indietreggia
      rotServoDX = 135;
      rotServoSX = 45;
      muovi();
      break;
    case 2064: // avanza
      rotServoDX = 45;
      rotServoSX = 135;
      muovi();
      break;
    case 16: // avanza verso destra
      rotServoDX = 91;
      rotServoSX = 135;
      muovi();
      break;
    case 1040: // avanza verso sinistra
      rotServoDX = 45;
      rotServoSX = 91;
      muovi();
      break;
    case 2576: // indietreggia verso sinistra
      rotServoDX = 135;
      rotServoSX = 91;
      muovi();
      break;
    case 3088: // indietreggia verso destra
      rotServoDX = 91;
      rotServoSX = 45;
      muovi();
      break;
    default:  // se non corrisponde nessun altro comando stop servo
      rotServoDX = 91;
      rotServoSX = 91;
      muovi();
      break;
  }  
}

// decodifica
void storeCode(decode_results *results) {
  
  comando = (results->value);

}

// routine di movimento
void muovi() {
  
  servoDX.write(rotServoDX);
  delay(delayServo);
  servoSX.write(rotServoSX);
  delay(delayServo);
  
}