problema con gli if annidati e non

Vorrei far leggere tramite input seriale la porta analogica che mi serve e far stampare il numero di campioni che io stesso gli dico da input.

vi posto il codice che ho fatto e che non funziona, l'ho anche commentato per rendere tutto chiaro:

int AnalogSensorPin = 0;
int AnalogSensorValue = 0;
int i = 0;
int j = 0;

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

void loop()
{

   do{
      }while (Serial.available() == 0);   //fai niente finchè non ti arriva l'input seriale
    

    if (Serial.available() > 0)
      {
      AnalogSensorPin = (Serial.read() & 0x0f);   //converto l'input da ASCII ad intero e setto il pin analogico che mi interessa
      }
    
    do{
      }while (Serial.available() == 0);    //fai niente finchè non ti arriva l'input seriale
      

    if (Serial.available() > 0)
      {
      j = (Serial.read() & 0x0f);    //converto l'input da ASCII ad intero e setto il numero di campioni da prelevare dall'uscita analogica
      }
      
      do{
        
      AnalogSensorValue = analogRead(AnalogSensorPin);
      Serial.println(AnalogSensorValue);
      
      i++;
  
        }while ( i < j );     //stampa il numero di campioni
      


}

Il problema me lo da con l'ultimo ciclo do/while... mi sono reso conto che se l'operazione la faccio fare in loop non mi da problemi però se gli dico invece quante operazioni deve fare non le fa!

cosa sbaglio?