#include <WiFi.h>
#include <time.h>
const char* ssid = "_Sillas_";
const char* password = "Sorocaba2";
// Pinos definidos conforme solicitado
const int botaoPin = 4;
const int ledVerde = 0;
const int ledVermelho = 2;
bool tomouRemedio = false;
int ultimoDia = -1;
void conectarWiFi() {
WiFi.begin(ssid, password);
Serial.print("Conectando ao Wi-Fi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConectado!");
// Define o fuso horário do Brasil (UTC-3)
configTime(-3 * 3600, 0, "pool.ntp.org");
Serial.println("Sincronizando hora...");
while (time(nullptr) < 100000) {
delay(500);
Serial.print(".");
}
Serial.println("\nHora sincronizada.");
}
void setup() {
Serial.begin(115200);
pinMode(botaoPin, INPUT);
pinMode(ledVerde, OUTPUT);
pinMode(ledVermelho, OUTPUT);
conectarWiFi();
atualizarLeds();
}
void loop() {
time_t agora = time(nullptr);
struct tm* t = localtime(&agora);
int diaAtual = t->tm_mday;
// Resetar o status se mudou o dia
if (diaAtual != ultimoDia) {
ultimoDia = diaAtual;
tomouRemedio = false;
atualizarLeds();
Serial.println("Novo dia detectado. Resetando LEDs.");
}
// Detectar botão pressionado
if (digitalRead(botaoPin) == HIGH && !tomouRemedio) {
delay(200); // Debounce simples
if (digitalRead(botaoPin) == HIGH) {
tomouRemedio = true;
atualizarLeds();
Serial.println("Remédio marcado como tomado.");
}
}
delay(1000);
}
void atualizarLeds() {
digitalWrite(ledVerde, !tomouRemedio);
digitalWrite(ledVermelho, tomouRemedio);
}