Buenas tardes a todos! vengo por aqui a saltearme una duda aver si pueden ayudarme, estoy iniciando en esto de la programacion en arduino haciendo un auto controlado por bt, el auto se mueve mediante botones, enciende luces y puede seguir funcionando.. ahora el problema es cuando yo le digo que con 'X' tiene que hacer tal funcion la cumple, pero me es imposible volver a salir, que estoy haciendo mal? desde ya muchas gracias a todos!
int izqA = 5;
int izqB = 6;
int derA = 10;
int derB = 9;
int LedFront = 13;
int LedBack = 11;
int Corneta = 3;
int vel = 210; // Velocidad de los motores (0-255)
int vel2 = 105; // Velocidad de los motores (0-255)
int estado = 'u'; // inicia detenido
int VelocidadMotor1 = 12; // ENA - PWM
int VelocidadMotor2 = 8; // ENB
int infraPin = 4; // izquierdo - pin del infrarrojos utilizado como entrada digital
int infraPin1=2; // derecho
int valorInfra = 0; // Valor inicial de la lectura digital del infrarrojos
int valorInfra1 = 0;
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);
pinMode(LedFront, OUTPUT);
pinMode(LedBack, OUTPUT);
pinMode(Corneta, OUTPUT);
pinMode(infraPin, INPUT);
pinMode(infraPin1, INPUT);
pinMode(VelocidadMotor1, OUTPUT);
pinMode(VelocidadMotor2, OUTPUT);
analogWrite(VelocidadMotor1, 255); //motor izquierdo PWM
analogWrite(VelocidadMotor2, 255); //motor derecho PWM
digitalWrite(izqA, LOW);
digitalWrite(izqB, LOW);
digitalWrite(derA, LOW);
digitalWrite(derB, LOW);
}
void loop() {
if(Serial.available()>0){ // lee el bluetooth y almacena en estado
estado = Serial.read();
}
if(estado=='F'){ // Boton desplazar al Frente
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel);
}
if(estado=='I'){ // Boton desplazar diagonal izquierda
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel);
analogWrite(izqA, vel2);
}
if(estado=='G'){ // Boton desplazar diagonal derecha
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, vel2);
analogWrite(izqA, vel);
}
if(estado=='L'){ // Boton IZQ
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, vel);
}
if(estado=='S'){ // Boton Parar
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(derA, 0);
analogWrite(izqA, 0);
}
if(estado=='R'){ // Boton DER
analogWrite(derB, 0);
analogWrite(izqB, 0);
analogWrite(izqA, 0);
analogWrite(derA, vel);
}
if(estado=='B'){ // Boton Reversa
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derB, vel);
analogWrite(izqB, vel);
}
if(estado=='H'){ // Boton Reversa diagonal derecha
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derB, vel2);
analogWrite(izqB, vel);
}
if(estado=='J'){ // Boton Reversa diagonal izquierda
analogWrite(derA, 0);
analogWrite(izqA, 0);
analogWrite(derB, vel);
analogWrite(izqB, vel2);
}
if(estado=='W'){ // Luces delanteras encendidas
digitalWrite(LedFront, HIGH);
}
if(estado=='w'){ // Luces delanteras apagadas
digitalWrite(LedFront, LOW);
}
if(estado=='U'){ // Luces traseras encendidas
digitalWrite(LedBack, HIGH);
}
if(estado=='u'){ // Luces traseras apagadas
digitalWrite(LedBack, LOW);
}
if(estado=='V'){ // Corneta on
digitalWrite(Corneta, HIGH);
}
if(estado=='v'){ // Corneta off
digitalWrite(Corneta, LOW);
}
if (estado =='U'){ // Boton ON se mueve sensando distancia
}
if (estado=='D'){ // Boton OFF, detiene los motores no hace nada
}
if (estado=='X') {
while (estado=='X') {
valorInfra = digitalRead(infraPin); // valor entrada que lee el infrarrojo izquierdo
valorInfra1 = digitalRead(infraPin1); // valor entrada que lee el infrarrojo derecho
if(valorInfra == 0 && valorInfra1 == 0){ // hacia delante
digitalWrite(izqA, HIGH);
digitalWrite(derA, HIGH);
delay(0);
digitalWrite(izqA, LOW);
digitalWrite(derA,LOW);
delay(0);
}
if(valorInfra == 0 && valorInfra1 == 1){ // Gira hacia la derecha
digitalWrite(izqA, LOW);
digitalWrite(derA,LOW);
delay(0);
digitalWrite(izqA, HIGH);
digitalWrite(derA,LOW);
delay(0);
}
if(valorInfra == 1 && valorInfra1 == 0){ // Gira hacia la izquierda
digitalWrite(izqA,LOW);
digitalWrite(derA, LOW);
delay(0);
digitalWrite(izqA,LOW);
digitalWrite(derA, HIGH);
delay(0);
}
if(valorInfra == 1 && valorInfra1 == 1){ // STOP
digitalWrite(izqA, LOW);
digitalWrite(izqB, LOW);
digitalWrite(derB, LOW);
digitalWrite(derA, LOW);
break;
}
}
}
}