Estrarre numeri da Seriale

Non so perchè il programma non funzionava,alla fine spulciando in alcuni tuoi vecchi post che mi hai indicato,sono riuscito a tirare fuori un programma che funziona,finalmente sono riuscito a capirlo.
Purtroppo i servo motori vibrano ancora ma almeno si muovono come dico io.L'unica cosa strana che ho trovato è questa:Ho fatto printare i valori di un sensore(dito anulare) dopo essere stati mappati ed ho notato che ,a sensore a riposo cioè quando dovrebbe dare 0,dà numeri negativi,poi se sollecito il sensore di pressione,allora vedo che i numeri si alzano fino ad arrivare a 180.Ho il sospetto che il tremolio dei servomotori sia dovuto a quei numeri negativi che non so da dove spuntano.Comunque ti ringrazio tantissimo per i consigli e la disponibilità,ho imparato molto...

#include <Servo.h>
#include <SoftwareSerial.h>
SoftwareSerial receive(2, 3);

int ricevuta; // per la gestione della variabile in trasmissione
char rx; // il carattere ricevuto
int stato; // lo stato della ricezione

int datopol;
int datoind;
int datomed;
int datoanu;
int datomig;

Servo pollice;
Servo indice;
Servo medio;
Servo anulare;
Servo mignolo;


void setup()
{
    pollice.attach(4);
    indice.attach(5);
    medio.attach(6);
    anulare.attach(7);
    mignolo.attach(8);
    
    pollice.write(0);
    indice.write(0);
    medio.write(0);
    anulare.write(0);
    mignolo.write(0);
    
    Serial.begin(9600);
    receive.begin(9600);
}

void loop()
{
    if (receive.available())
    {
        rx = receive.read();          // Leggo il primo carattere

      if(rx=='#'){  //inizio a leggere
        stato=1;
        ricevuta=0;
        
      }
      if(rx=='A'){  //POLLICE
        stato=0;
        datopol=map(ricevuta,200,800,0,180);
        pollice.write(datopol);       
        }

        if(rx=='B'){  //INDICE
        stato=0;
        datoind=map(ricevuta,200,800,0,180);
        indice.write(datoind);      
        }

         if(rx=='C'){  //MEDIO
        stato=0;
        datomed=map(ricevuta,200,800,0,180);
        medio.write(datomed);
        }

         if(rx=='D'){  //ANULARE
        stato=0;
        datoanu=map(ricevuta,200,800,0,180);
        Serial.println(datoanu);
        anulare.write(datoanu);
        
        }

         if(rx=='E'){  //MIGNOLO
        stato=0;
        datomig=map(ricevuta,200,800,0,180);
        mignolo.write(datomig);
        
        }
    
        
      if (rx <= '9' && rx >= '0') { //se ricevo una cifra
      // una cifra
      if (stato == 1) {
        // parte intera
        ricevuta = ricevuta * 10 + rx - '0';
        // shiftare di una cifra e aggiungere l'ultima
    }
}

    }
}