#include <Wire.h>
#include <WiFiUdp.h>
#include <NTPClient.h>
#include <Adafruit_AHTX0.h>
#include <BH1750.h>
#include <U8g2lib.h>
#include <WiFi.h>
// Configurações Wi-Fi
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
// Inicializa sensores e display
Adafruit_AHTX0 aht;
BH1750 lightMeter;
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* clock=*/ 12, /* data=*/ 14, /* cs=*/ 27, /* dc=*/ U8X8_PIN_NONE, /* reset=*/ U8X8_PIN_NONE);
// Configurações NTP
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", -10800); // Ajuste UTC conforme seu fuso horário
void setup() {
Serial.begin(115200);
// Conectar ao Wi-Fi
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConectado ao Wi-Fi");
// Inicializar NTP
timeClient.begin();
// Inicializar sensores
if (!aht.begin()) {
Serial.println("Falha ao inicializar o sensor AHT10");
while (1);
}
if (!lightMeter.begin()) {
Serial.println("Falha ao inicializar o sensor BH1750");
while (1);
}
// Inicializar display
u8g2.begin();
}
void loop() {
// Atualiza o cliente NTP
timeClient.update();
// Obtém os valores dos sensores
sensors_event_t humidity, temp;
aht.getEvent(&humidity, &temp);
float lux = lightMeter.readLightLevel();
String currentTime = timeClient.getFormattedTime();
// Atualiza a exibição na matriz de LED
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_logisoso24_tr); // Fonte para o relógio
u8g2.drawStr(0, 24, currentTime.c_str()); // Exibe o tempo atual
u8g2.setFont(u8g2_font_6x10_tr); // Fonte menor para os sensores
String tempStr = "Temp: " + String(temp.temperature, 1) + " C";
String humStr = "Umid: " + String(humidity.relative_humidity, 1) + " %";
String luxStr = "Luz: " + String(lux, 1) + " lx";
u8g2.drawStr(0, 40, tempStr.c_str());
u8g2.drawStr(0, 50, humStr.c_str());
u8g2.drawStr(0, 60, luxStr.c_str());
u8g2.sendBuffer(); // Envia os dados ao display
delay(1000); // Atualiza a cada segundo
}