#include <LiquidCrystal_I2C.h>
#include <WiFi.h> // Defines WiFi variable
#include "time.h" // Defines configTime, getLocalTime, asctime, time_t
LiquidCrystal_I2C lcd(0x27, 20, 4);
uint8_t dot[] = {0x0E, 0x0A, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00};
void connectToWiFi() {
bool flag = true;
WiFi.begin("Wokwi-GUEST", "", 6);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
lcd.setCursor(0, 0);
lcd.print(flag ? "Connecting to WiFI++" : "Connecting to WiFI--");
flag = false;
}
lcd.setCursor(0, 0);
//12345678901234567891
lcd.print("WiFi connected! ");
lcd.setCursor(0, 1);
lcd.print(WiFi.localIP());
configTime(8*3600, 0, "pool.ntp.org");
}
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.createChar(0, dot); // Use slot 0
}
void loop() {
if (WiFi.status() != WL_CONNECTED) {
connectToWiFi();
}
struct tm timeinfo;
if (getLocalTime(&timeinfo)) {
char timeStr[20];
strftime(timeStr, sizeof(timeStr), "%d/%m/%Y %H:%M:%S", &timeinfo);
lcd.setCursor(0, 1);
lcd.print(timeStr);
}
else {
lcd.setCursor(0, 1);
//12345678901234567891
lcd.print("Failed to get time ");
}
float h = 80.5; // Relativity humidity
float c = 27.0; // Celsius
lcd.setCursor(0, 2);
lcd.print("Humidity: "); lcd.print(h, 1); lcd.print("%");
lcd.setCursor(0, 3);
lcd.print("Temperature: "); lcd.print(c, 1); lcd.write(0); lcd.print("C");
delay(200);
}