Control de pulsos con Pot. y Encendido leds con Serial

Hola
Necesito ayuda con este programa ya que si me lee el serial pero el potenciometro como que se "pierde" y no se que esta mal

int sensorPin = 0; int ledPinx = 6; int ledPiny = 5; int ledmotor = 13; int sensorValue = 0;
void setup() {
Serial.begin(9600); pinMode(ledPinx, OUTPUT); pinMode(ledPiny, OUTPUT); pinMode(ledmotor, OUTPUT);
}
void loop() {
sensorValue = analogRead(sensorPin);
digitalWrite(ledmotor, HIGH); delay(sensorValue);
digitalWrite(ledmotor, LOW); delay(sensorValue);

while (Serial.available() == 0); int val = Serial.read() - '0';
if (val == 1) {
Serial.println(" X on"); digitalWrite(ledPinx, HIGH);
}
else if (val == 0)
{digitalWrite(ledPinx, LOW);
Serial.println(" X off "); digitalWrite(ledPinx, LOW);
}
if (val == 2) {
digitalWrite(ledPiny, sensorValue);
Serial.println(" Y on"); digitalWrite(ledPiny, HIGH);
}
else if (val == 3)
{digitalWrite(ledPiny, LOW);
Serial.println(" Y off"); digitalWrite(ledPiny, LOW);
}
}

Gracias

Has escrito:

while (Serial.available() == 0);

lo que significa que mientras no haya nada en el buffer del puerto serie el programa está bloqueado dentro de esa instrucción. Para leer el puerto serie en general hay que poner un condicional, si hay algo en el puerto serie lo leo y si no sigo con mi programa.