problema con serial.read e serial.print

Questo codice prende fino a 5 caratteri numerici dalla seriale e li trasforma in un numero. Se entro mezzo secondo non vengono altri numeri trasforma anche numeri con meno cifre.
Ciao Uwe

int incomingByte;   
char Data[8];
int i;
unsigned long Tempo;

void setup()
{
  Serial.begin(9600);
}

void loop(){
 
   do {
     if (Serial.available()) {       
       Data[i] = Serial.read();
       i++;
       }     
     if(i<1)Tempo = millis(); 
     } while (i<5&&(millis()-Tempo) < 500);
  
   Data[i] = 0;    
   incomingByte = atoi(Data);  
   i=0;
   Serial.println(incomingByte);
}