Ver Mensaje Individual
  #2  
Antiguo 22-05-2022
tsk tsk is offline
Miembro
 
Registrado: dic 2017
Posts: 52
Reputación: 7
tsk Va por buen camino
Siento que te esas sobre complicando las cosas.

Si recuerdas la explicación que te dí en tu otro post con respecto a la separación de cada componentes del sistema.

Observa el ejemplo de los sensores. El mismo concepto puedes usar para manejar los pulsadores y el menú de una forma mas sencilla. Piensa también en máquinas de estado usando el mismo concepto o algo similar.

Del código que posteaste aquí

https://www.forosdeelectronica.com/t...6/post-1401932

Puedo ver que te estas complicando las cosas de forma innecesaria, además de ocasionar retrasos innecesarios o que se quede bloqueado en un sólo lugar en caso de que otras acciones deban ser ejecutadas al mismo tiempo. Además de que la forma en que lo tienes hecho es lo que te está causando problemas con las pulsaciones.


Por ejemplo, aunque no tengo el código porque mi Laptop falló, puedes ver el resultado de usar el mismo concepto que te mostré en ese post aplicado tanto en el manejo de los botones, sensores de temperatura, línea de comando, así como en el manejo del menú con tan solo 3 botones.



Fue algo que hice rápido en Febrero, porque mi hermano necesitaba controlar dos ventiladores. Y ¿que es lo que hace?

Cita:
- La configuración es almacenada en la EEPROM al igual que su suma de verificación, así por si por alguna razón la configuración o la suma de verificación se corrompen, se procede a cargar unos valores por defecto.
- Una línea de comandos:
AT - Para saber si está en línea
AT+TEMP - Para obtener la lectura de la temperatura actual.
AT+CFG - Con ? retorna la configuración actual.
Con =X,Y, modifica la configuración del parámetro X=0,1,2,3,4 con el valor Y X de 0 a 3 cambia los valores de la temperatura, X=5 cambia el periodo de actualización en segundos.

AT+CFGSV - Guarda la configuración actual en la EEPROM
AT+CFGLD - Carga la configuración guardad en la EEPROM
AT+STA - Nos muestra el estado del sistema.

- Un Display OLED que nos muestra la temperatura actual y un menú en el cual modificar los parámetros del sistema.
- Controla la velocidad de dos ventiladores de PC de acuerdo a los rangos de temperatura definidos en la configuración del sistema.
- Si, por ejemplo, T0 lo coloco a 21 grados T1 no va a poder tomar un valor igual o menor a 21 grados, si T1 lo coloco a 25 grados, T0 no podrá tomar un valor igual o mayor a 25 grados y T2 no podrá tomar un valor menor o igual a 25 grados, y así sucesivamente.
De haberlo hecho por fuerza bruta hubiera terminado con un código casi ilegible, complicado y difícil de mantener, mientras que aplicando el concepto que te mostré, con lo de los sensores, el diseño y el código resultante termina siendo más fácil.

También puedes practicar usando C con GCC en lugar de con C#, así lo que pruebes lo vas a poder pasar casi integro a Arduino.
Responder Con Cita