Problema a ler uma String

Boas, estou a desenvolver um programa para usar numa roda de filtros para Astronomia. A ideia era enviar uma String "M23", onde M=Move; "2" = filtro origem; "3" = Filtro Destino.

O problema é que o filtro destino e origem tem de estar entre o '0' e o '4'. Tudo funciona muito bem desde que esteja entre o '1' e o '4'. Sempre que envio o comando, por exemplo, "M01", o retorno é sempre "M1", elimina sempre o '0'.

int dest = 0;          
int org = 0;           
char comando;  
char temp[2];
int filtros = 0;      
String filtroOrigem;  
String filtroDestino;


void loop() {
   while (Serial.available()>0)
  {
    comando = Serial.read();
    
   
    switch(comando)
    {
      case 'M':    //[C]alibrar

      for (unsigned char i=0; i<2;i++)
  {
    temp[i] = Serial.read();
    filtros = atoi(temp);
  }

   
    String tempString  = String(filtros);        
 
    filtroOrigem = tempString.substring(1,0);    
    filtroDestino = tempString.substring(2,1);  
    dest = filtroDestino.toInt();
    org = filtroOrigem.toInt();
  
    //...
}

Conseguem descobrir o que estou a fazer mal?

Obrigado

Boas
Penso que estas a fazer varias coisas errado.
Vejamos:

while (Serial.available()>0)
{
comando = Serial.read();
switch(comando)
{
case 'M': //

alibrar

for (unsigned char i=0; i<2;i++)
      {
        temp[i] = Serial.read();
        filtros = atoi(temp);
      }
[/quote]
Recebeste 1 byte na serie que até é um M, entras no teu switch e corres um for 2 vezes onde lês 2 bytes.
Como sabes que estes bytes já estão no buffer da serie?
Presumir que la estão é errado!
Comunicação serie é lenta, pensares que os bytes já la estão é um erro!
Deves confirmar o count do buffer  e so ler se la tiveres algo...

O array temp é um array de char que para ser um string necessita do carácter terminador no fim '\0'
Nao tens espaço para o colocar nem o estas a adicionar no fim!

Fazeres cast pode ter efeitos colaterais!
Por ultimo penso que estas a tentar matar uma pulga com uma luva de box  :)  pois para algo tao simples não devias estar a usar objetos String!
Devias fazer isso apenas com vetores de chars ...