problema con sensor ultrasónico

Buenas tardes estoy programando para realizar un Longboard que lo quiero manipular con un mando RF que tiene 4 canales (botones a,b,c,d) quiero poner para que cada botón controle una velocidad que eso lo he conseguido pero quiero añadir un sensor ultrasónico que me reduzca la velocidad del patinete si detecta algún objeto a menos de metro y medio. También lo tengo pero el problema es que estando parado si el sensor me detecta me arranca el equipo cosa que no quiero, solo quiero que me reduzca la velocidad cuando vaya a velocidad media o velocidad alta. Si alguien me puede echar una mano se lo agradecería. Muchas gracias y adjunto el código. Por cierto el motor es un brushless por lo que lleva lleva un ESC.

[Código]

#include <Servo.h> // A traves de esta librería vamos a controlar el ESC
Servo esc; // Defino el nombre del servo con el nombre ESC
#define Pinecho 12 // (Para definir algo)
#define Pintrig 13
#define botonA 2;
#define botonB 3;
#define botonC 4;
#define botonD 5;
#define ESC 8;

int valor;
int valor2;
int valor3;
int valor4;

long duracion, distancia; // puede tomar valores decimales para poder aplicar la formula

void setup() {
esc.attach(7); // A través de este pin PWM de Arduino se conecta la señal del ESC
esc.writeMicroseconds (1000);// Para que se inicialice en la posicion de 0 varia entre 1 y 2 microsegundos si no funciona variar por 2000
delay (3000);// esperar 3 segundos para inciar la activación
pinMode(2,INPUT);// boton de paro Defino las variables de los botones como entradas equivale al valor 0
pinMode(3,INPUT);//boton de velocidad baja 85
pinMode(4,INPUT);//boton de velocidad media 170
pinMode(5,INPUT);//boton de velocidad maxima 255
pinMode(8,OUTPUT); //Salida del ESC definida como salida

pinMode(Pinecho, INPUT); // define el pin echo como entrada
pinMode(Pintrig, OUTPUT); // define el pin trig como salida
Serial.begin (9600);
}

void loop() {
digitalWrite(Pintrig, LOW); // asegurar que esta apagado
delayMicroseconds(2);
digitalWrite(Pintrig, HIGH); // genera el pulso de triger por 10ms
delayMicroseconds(10);
digitalWrite(Pintrig, LOW);

duracion = pulseIn(Pinecho, HIGH); //llega por el pin echo y queremos saber cuánto está en alto
distancia = (duracion/2) / 29; // FORMULA- /2 porque es ida y vuelta y entre 29 porque es lo que tarda la onda acustica en recorrer 1cm

Serial.print (distancia);
Serial.println ("cm");
delay (100);

valor = digitalRead (2); // si lee un 1 el boton A el motor se detendrá
if(valor==HIGH){
analogWrite (8,0);
}

valor2 = digitalRead (3); // si lee un 1 el boton B ira a la minima velocidad
if(valor2==HIGH){
analogWrite (8,85);
}

valor3 = digitalRead (4); // si lee un 1 el boton C ira a velocidad media
if(valor3==HIGH){
analogWrite (8,170);
}

valor4 = digitalRead (5); // si lee un 1 el boton D ira a la maxima velocidad
if(valor4==HIGH){
analogWrite (8,255);
}
if ( distancia>=0 && distancia<=150 ){ //si el sensor detecta algun objeto antes de 1,5m la velocidad se reducira por seguridad
analogWrite(8,30);
}

}

Moderador:
Por favor edita tu post usando etiquetas de código.
Cuando lo hagas respondo.
Lee las[/b] Normas del foro