Control de motores mediante sensor hc-sr04

Hola!
Tengo una duda, lo que intento hacer es manipular la velocidad y distancia de 2 motores, ya logr茅 manipular la velocidad pero en cuanto a la distancia no lo he podido hacer. En mi c贸digo uso un switch-case para manipular la velocidad pero en cuando intento ingresar por teclado la distancia no lo hace, espero puedan ayudarme gravias, estoy desesperado :confused: dejo mi c贸digo:

#define Pecho 6
#define Ptrig 7

long duracion, distancia;
int v,d;

int mot1A = 9;
int mot1R = 10;
int mot2A = 11;
int mot2R = 12;

void setup()
{
Serial.begin(9600);
pinMode(mot1A,OUTPUT);
pinMode(mot1R,OUTPUT);
pinMode(mot2A,OUTPUT);
pinMode(mot2R,OUTPUT);
Serial.print("Introduce el valor de velocidad de 0 a 9");
}

void loop()
{
if(Serial.available()){
char v=Serial.read();
if(v>='0' && v<='9'){
int vel=map(v, '0', '9', 0, 255);
Serial.println(v);

switch(v)
{
case '0':
Serial.println("Ingrese el valor de la distancia");
if(Serial.available()){
int d=Serial.read();
Serial.println(d);
}

digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH);
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);

duracion = pulseIn(Pecho, HIGH);
distancia = (duracion/2) / 29;

if (distancia >= 300 && distancia < 0){
Serial.println("---");}

if((/*v==distancia && */distancia!=d) && (distancia>0 && distancia<=10)){
Serial.println("Muy lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.print(distancia);
}
if((/*v>=distancia && */d!=distancia) && (/v<=distancia &&/distancia>=11 && distancia<=15)){
Serial.println("Muy lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=16 && distancia<=20)){
Serial.println("Lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=21 && distancia<=25)){
Serial.println("Lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=26 && distancia<=30)){
Serial.println("Rapido");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=31 && distancia<=40)){
Serial.println("Rapido");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
delay(400);
/analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
/
break;

case '1': Serial.println("Ingrese el valor de la distancia1");
if(Serial.available()){
int d=Serial.read();
Serial.println(d);
}

digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH);
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);

duracion = pulseIn(Pecho, HIGH);
distancia = (duracion/2) / 29;

if (distancia >= 300 || distancia < 0){
Serial.println("---");}

if((/*v==distancia && */distancia!=d) && (distancia>0 && distancia<=10)){
Serial.println("Muy lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}
if((/*v>=distancia && */d!=distancia) && (/v<=distancia &&/distancia>=11 && distancia<=15)){
Serial.println("Muy lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=16 && distancia<=20)){
Serial.println("Lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=21 && distancia<=25)){
Serial.println("Lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=26 && distancia<=30)){
Serial.println("Rapido");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=31 && distancia<=40)){
Serial.println("Rapido");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
delay(400);
break;

case '2': Serial.println("Ingrese el valor de la distancia");
if(Serial.available()){
int d=Serial.read();
Serial.println(d);
}

digitalWrite(Ptrig, LOW);
delayMicroseconds(2);
digitalWrite(Ptrig, HIGH);
delayMicroseconds(10);
digitalWrite(Ptrig, LOW);

duracion = pulseIn(Pecho, HIGH);
distancia = (duracion/2) / 29;

if (distancia >= 300 || distancia < 0){
Serial.println("---");}

if((/*v==distancia && */distancia!=d) && (distancia>0 && distancia<=10)){
Serial.println("Muy lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}
if((/*v>=distancia && */d!=distancia) && (/v<=distancia &&/distancia>=11 && distancia<=15)){
Serial.println("Muy lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=16 && distancia<=20)){
Serial.println("Lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=21 && distancia<=25)){
Serial.println("Lento");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=26 && distancia<=30)){
Serial.println("Rapido");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
if((/*v>=distancia && */distancia!=d) && (distancia>=31 && distancia<=40)){
Serial.println("Rapido");
analogWrite(mot1A,vel);
analogWrite(mot2A,vel);
//break;
Serial.println(distancia);
}else
delay(400);
break;
}}}}

**Lee las normas del foro y edita este post usando el tag para c贸didgos </>. **
Quedo a la espera.

falta codigo, no?
solo cubres 1/3 de los casos en ese switch()