#define Botao 13
#define Led 12
#define t_filtro 5
byte b_bt1;
byte b_led;
byte b_bt1_pressionado;
byte b_filtro1;
byte b_contador;
uint8_t Ch[8];
uint8_t Cm[8];
uint8_t hora[8];
uint8_t minuto[8];
uint8_t horamedi[8];
uint8_t minmedi[8];
// Calculo de Horas e minutos.
// Esta função retorna na matriz horamedi e minmedi valor da hora e minutos após a compensação
void calculaHora(uint8_t Ch, uint8_t Cm, uint8_t hora, uint8_t minuto, uint8_t *valorHora, uint8_t *valorMinuto) {
*valorHora = Ch + hora;
*valorMinuto = Cm + minuto;
// Correção dos minutos e horas
if (*valorMinuto >= 60) {
*valorHora += *valorMinuto / 60; // Soma o resultado da divisão ao valor da Hora
*valorMinuto %= 60; // Recebe o resto da divisão, desta forma teremos o valor em minutos.
}
// Correção do valor das Horas
if (*valorHora >= 24) {
*valorHora %= 24;
}
}
// Incremento do próximo horário para tomar o remédio
void incrementoDaHora(uint8_t incHora, uint8_t incMinutos, uint8_t *hora, uint8_t *minutos) {
// Correção dos minutos e horas
*minutos += incMinutos;
*hora += incHora;
if (*minutos >= 60) {
*hora += *minutos / 60; // Soma o resultado da divisão ao valor da Hora
*minutos %= 60; // Recebe o resto da divisão, desta forma teremos o valor em minutos.
}
// Correção do valor das Horas
if (*hora >= 24) {
*hora %= 24;
}
}
void setup() {
Serial.begin(115200);
pinMode(Botao, INPUT_PULLUP);
pinMode(Led, OUTPUT);
Ch[1] = 20;
Cm[1] = 30;
hora[1] = 2;
minuto[1] = 5;
calculaHora(Ch[1], Cm[1], hora[1], minuto[1], &horamedi[1], &minmedi[1]);
}
void loop() {
Serial.println("*********");
Serial.print("Hora e minutos:");
Serial.print(horamedi[1]);
Serial.print(":");
Serial.println(minmedi[1]);
incrementoDaHora(hora[1], minuto[1], &horamedi[1], &minmedi[1]); // Próxima hora de tomar o remédio
delay(1000);
}