Reiniciar los motores

Buenas, estoy montando un coche con dos motores DC, uno para la direccion y otro para el avance y me he encotrado con un problema, yo lo controlo a traves de una app que he creado para el movil pero quiero que cuando el coche esta avanzando, si yo le doy al boton de retroceso deje lo que esta haciendo y empieze a retroceder, adjunto el codigo he he creado a ver que es lo que me queda por escribir:

int pin1 = 6;
int fade = 50 ;
int pin2 = 5 ;

void setup() {
Serial.begin(9600) ;
pinMode(7, OUTPUT) ;
pinMode(8, OUTPUT) ;
}

void loop() {

char dato = Serial.read();
if(dato == 'a') for (fade; fade <= 255; fade++){
analogWrite(pin1,fade);
delay(30);
}
if(dato == 'b') for (fade; fade <= 255; fade++){
analogWrite(pin2,fade);
delay(30);
}
if(dato == 'c') digitalWrite(7,HIGH);

if(dato == 'd') digitalWrite(8,HIGH);

como podeis ver hay cuatro votones y cada uno envia un dato de una letra diferente pero si acrivo la 'a' ya no me deja activar la 'b'

Perdona pero esto me supera
hay cuatro Votones?
no se lo que es un Votón.

Primero: lee las normas del foro y usa etiquetas.
Segundo: ese código no compila asi que copia el código que dices que funciona y suma tus agregados.

 if(dato == 'a') for (fade; fade <= 255; fade++){
 analogWrite(pin1,fade);
 delay(30);
}

ESTO NO COMPILA.

int pin1 = 6;
int fade = 50 ;
int pin2 = 5 ;

void setup() {
Serial.begin(9600) ;
pinMode(7, OUTPUT) ;
pinMode(8, OUTPUT) ;
}

void loop() {

char dato = Serial.read();
if(dato == 'a') for (fade; fade <= 255; fade++){
analogWrite(pin1,fade);
delay(30);
}
if(dato == 'b') for (fade; fade <= 255; fade++){
analogWrite(pin2,fade);
delay(30);
}
if(dato == 'c') digitalWrite(7,HIGH);

if(dato == 'd') digitalWrite(8,HIGH);
}

a mi esto me compila

No debería, no tienes las llaves ({}) que indican el inicio y el final de los if, en primer lugar corrige eso.
Para lo que pides, si siguiera sin hacer lo que esperas que haga, infórmate de lo que son las interrupciones.

surbyte, parece otro crimen de quien puso la 'b' y la 'v' juntas en el teclado, que imagino que tiene reservada una planta en el infierno (en la primera línea lo escribe bien). En lo que te doy la razón es que es muy incómodo trabajar sin etiquetar convenientemente el código, si puedes edítalo Carchodon.

Un saludo.

Para lo que pides, si siguiera sin hacer lo que esperas que haga, infórmate de lo que son las interrupciones.

Para qué interrupciones?

Lo que yo haría sería una interrupción al pulsar el botón que incluyera el retroceso, así esté en lo que esté "deja lo que está haciendo y retrocede". Sé que hay más soluciones, yo tiraría por esa.
Un saludo.

ok muchas gracias, mañana lo mirare y si tengo algun problema ya diré algo