Muy buenas,
Estoy haciendo un proyecto que tiene que desconectar un ascensor a una determinada hora y dias y que lleva un menu para poder configurar la hora, los dias a desconectar, etc.
Conectare un RTC a arduino para saber la hora y el dia y segun hora y el dia conectare/desconectare el ascensor.
Lo que tiene que hacer arduino es lo siguiente:
Muestro hora y fecha
Leo Hora
Leo Dia
Si dia y hora laborables entonces //Hora desde 7.30 hasta 17.50
Desactivo Stop
Desactivo Led
Sino si hora es igual o mas grande a 17.50 y dias es laborable entonces //Empiezo proceso de desconexion
Espero puertas cerrar
Llamo planta 4
Espero ascensor llegue
Activo Stop
Activo Led
Sino //dias de fiesta o horas no laborables. Realmente este caso no se necesita porque de serie el rele de stop y el led estan activados
Activo rele Stop
Activo led
Hasta aqui todo bien. Luego pense en diseñar un menu para poder configurar la hora, fecha y dias de fiesta.
Ahora es cuando llega el problema. Yo necesito que el proceso principal (de ahora en adelante el proceso de desconexion) se ejecute siempre, pero si estoy dentro del menu y estoy esperando una entrada valida el programa se me queda parado y el proceso de desconexion no se ejecuta hasta que no se salga del bucle que espera.
Entonces empezé a buscar y vi que habia el multitasking, las interrupciones, etc. He pensado unas cuantas opciones para poder solucionar esto y lo que me gustaria es que les echarais un ojo y me dijerais que opinais (si me dais nuevos puntos de vista mejor que mejor)
Aqui pongo las opciones que se me han ocurrido (he tenido en cuenta que cuando el proceso de desconexion esta llegando a su hora no se pueda acceder al menu)
Soluciones a interferencia entre de los procesos desconexion y menu
OPCION 01: A 10 o 20 min desconexión no poder entrar en menú. Si se entra en los bucles de espera de datos a los 2 minutos se saldra automaticamente. Problema --> si voy viajando entre menús menos de dos min por cada uno puedo pasarme de la hora de desconexión
OPCION 02: Debería ser que si a las 17.50 no se ha podido iniciar lo intente cada 10 min. Tiene que haber una variable que guarde si la desconexión/conexión se ha realizado. Con esto juntamente que no se puede estar esperando una entrada mas de dos min me aseguro que el proceso de desconexión se ejecute siempre
OPCION 03: Interrupciones: creo que si la interrupción se encarga de la desconexión, mirando cada x tiempo la hora y si llega la hora se ejecuta el p desconexión. El p menú estaria en el principal. Pero esto no se como hacerlo
OPCION 04: En el bucle principal pongo condición de entrar en menú que se apriete la tecla asterisco y que no sean 10 o 20 min antes de la hora de conex/descon. En los bucles de espera de datos hago lo mismo. Si son 10 o 20 min antes se sale del bucle. Haciendo que se cierren los procesos hasta llegar al principal que entonces ira directamente al proceso desconexion
OPCION 05: En cada bucle que espere entrada de tecla se llama al proceso desconexion. Con esto me aseguro que aunque este en espera a que el usuario introduzca un dato el proceso de desconexion se lleva a cabo. Hay que tener en cuenta de que el proceso de desconexión sea autónomo (no haga falta que se le envien variables), porque sino se convierte en un lio tener que llevar las variables hasta el bucle de espera para pasárselas al proceso desconexion.
Bueno he intentado exponerlo lo más claro posible y espero que se entienda. También quiero daros las gracias por el tiempo que le dediqueis y un saludo