Hola buen dia,
Necesito ayuda con esta parte del codigo. Lo que quiero hacer es que al recibir h1onmenos me reste una hora a la variable HORAON1, hasta ahi todo ok.
El problema me aparece cuando llego a las 0hs quiero que si resta una hora mas pase a 23hs.
Lo mismo me pasa cuando sumo una hora y llega a los 23 quiero que pase a 0hs. me ayudan a terminar esa parte del codigo? muchisimas gracias.
Usa un condicional if,si HORA1ON es menor que 0 ,entonces HORA1ON es igual a 23 ,piensa como seria para cuando sea mayor a 23.La variable no tendria que estar declarada como unsigned para que pueda tener valor negativo(menor que 0)
Soy nuevo y lo que me comentas lo hago pero lo puse al final de código y lo que me pasa es que funciona bien pero si estoy en 23 y agrego una hora en el LCD me muestra HORA1ON 24 y al final del código lo cambia a 0 entonces lo que pasa es que queda confuso porque la pantalla me muestra 24 pero luego queda en 0.
//INICIO CONDICION DE HORA1ON ENTRE 0 Y 23HS
if (HORA1ON >= 24){ //si HORA1ON es mayor o igula a 24 HORA1ON = 0
HORA1ON = 0;
}
if (HORA1ON < 0){ // si HORA1ON es menor a 0 HORA1ON = 23
HORA1ON = 23;
Mi duda es como poner esto mismo dentro del If que suma o resta horas para que estando en 23 si sumo me lo cambie a 24 sino a 0 antes de imprimir en el lcd.
Perdon mi ignorancia pero esto no lo entendi: "La variable no tendria que estar declarada como unsigned para que pueda tener valor negativo(menor que 0)"
si solo hicieramos la suma daria 25 o sea ambos sabemos que es 1 pero como tengo módulo resulta que
todo lo que este dentro de 24 queda como esta y si lo supera nos quedamos con el resto.
(23+2)%24 = 1
La situación inversa creo que es mas facil. Siempre
supongamos que estas en 1:00 y le restas 3hs resultado matemático -2 pero si a ese resultado le sumas 24 cuanto te da? 22 que es tu respuesta.
Entonces toda respuesta <0 solo la corriges sumandole 24.