Hola:
Vuelvo a escribir correctamente un post anterior mal explicado.
Necesitaria realizar el siguiente programa:
Se trata de una puerta doble,con dos finales de carrera por puerta,una fotocelula y una entrada del mando.
Entonces por seguridad,mientras esta cerrando y la fotocelula detecta, ha de parar; y si durante la apertura y el cierre se vuelve a pulsar el mando,primero ha de parar y si se vuelve a pulsar realizar la acción contraria a la que estaba realizando (abriendo-para-cerrando).
La cuestion es que me han comentado que una máquina de estados sería lo correcto en este caso. Creo que se refería al tema del Switch control.
Me comentaron 4 estados: Abierto-abriendo-cerrado y cerrando.
Ejemplo:
Void loop()
{
Switch Case()
Case 1(abriendo):¿¿como sabe cual es el estado de los finales de carrera y si se ha pulsado el mando?
{digitalWrite(releapertura,HIGH)//Activa relé motor para abrir
if (digitalRead(mando)==HIGH)
digitalWrite(releapertura,LOW)};//Como le digo a continuación que ejecute el caso cerrando si vuelvo a pulsar el mando?
No consigo entender lo del Switch por el motivo que como sabe el programa en que estado estoy, y si estoy en uno de esos estados como puedo decirle que ejecute otro estado.Me explico: Estoy abriendo y pulso dos veces el mando, cierra y si estoy cerrando y detecta la fotocélula, abre.
Creo que me he explicado fatal pero lo he intentado.
Muchas Gracias a cualquier aportación.