Buenas noches... bueno mi gente, abre un hilo en el foro porque ya no logro dar con el error que me esta ocurriendo mientras se ejecuta mi programa...
Estoy haciendo una rampa móvil para estacionamiento. Dicha rampa, mientras se mantenga pulsado el botón de bajar, debería dar la orden de bajar y se enciende un led hasta que detecte el limite de bajada. Si se deja de pulsar el botón de bajar mientras la rampa esta en movimiento, debería detenerse, esperar unos segundos, y volver a subir. Cuando detecta el limite superior, se detiene, tiene una pausa de unos segundos, y luego vuelve al loop.
este es parte de mi codigo:
void bajar(){
if (digitalRead (botonBajar)==HIGH){
if(digitalRead (finalBajar)==HIGH){
Serial.println ("Se pulso Bajar");
digitalWrite (motorBajar,HIGH);
digitalWrite (semaforoRojo, HIGH);
bajar();
}
digitalWrite (motorBajar,LOW);
while (digitalRead (sensorAbrir)== HIGH){
digitalWrite (barreraAbrir,HIGH);
Serial.println ("Abrir barrera");
delay(1000);
}
digitalWrite (barreraAbrir, LOW);
digitalWrite (semaforoRojo, LOW);
digitalWrite (semaforoVerde, HIGH);
delay(6000);
digitalWrite (semaforoVerde, LOW);
return;
}
else {
Serial.println ("No se mantuvo pulsado Bajar");
digitalWrite (motorBajar, LOW);
digitalWrite (semaforoRojo, HIGH);
delay (2000);
while (digitalRead (finalSubir)==HIGH){
Serial.println ("Esperar rampa arriba");
digitalWrite (motorSubir,HIGH);
}
digitalWrite (motorSubir, LOW);
digitalWrite (semaforoRojo, LOW);
digitalWrite (semaforoVerde, HIGH);
delay (6000);
digitalWrite (semaforoVerde, LOW);
}
}
Mi problema esta en que, cuando dejo de pulsar el boton, se inicia el else, pero solo hasta:
digitalWrite (semaforoVerde, HIGH);
del else
Alli mi programa se queda congelado.
Por otro lado, si mantengo el boton pulsado, detecta el limite inferior, mi programa se detiene aqui:
digitalWrite (semaforoVerde, HIGH);
pero del if
Alguno sabe porque mi programa se detiene alli?
probé con un mega y un nano y me pasa lo mismo