Ya vi cual es el problema.
Mira la variable estado que defines como global!!
Como esta definida como global al recibir un valor via BT, se queda siempre con ese valor hasta recibir otro.
Deberías ponerla a 0 una vez ejecutada la orden.
estado = "";
te dejo el código
int izqA = 5;
int izqB = 6;
int derA = 9;
int derB = 10;
int vel = 255; // Velocidad de los motores (0-255)
int estado = 'g'; // inicia detenido
void setup() {
Serial.begin(9600); // inicia el puerto serial para comunicacion con el Bluetooth
pinMode(derA, OUTPUT);
pinMode(derB, OUTPUT);
pinMode(izqA, OUTPUT);
pinMode(izqB, OUTPUT);
}
void loop() {
if (Serial.available()>0){ // lee el bluetooth y almacena en estado
estado = Serial.read();
}
if (estado=='G'){ // Forward
Serial.println(estado);
analogWrite(derB, vel);
analogWrite(izqB, 0);
analogWrite(izqA, vel);
analogWrite(derA, 0);
}
if (estado=='J'){ // right
Serial.println(estado);
analogWrite(derB, vel);
analogWrite(izqB, vel);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if (estado=='K'){ // Stop
Serial.println(estado);
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if (estado=='I'){ // left
Serial.println(estado);
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(izqA, vel);
analogWrite(derA, vel);
}
if (estado=='H'){ // Reverse
Serial.println(estado);
analogWrite(derB, 0);
analogWrite(izqB, vel);
analogWrite(izqA, 0);
analogWrite(derA, vel);
}
if (estado =='f'){ // Boton ON se mueve sensando distancia
}
if (estado=='g'){ // Boton OFF, detiene los motores no hace nada
}
estado = "";
}