#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <TimeLib.h>
#include <TimeAlarms.h>
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2); //
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 3600;
const int daylightOffset_sec = 3600;
void message (String text) {
Serial.println(text);
LCD.setCursor(0, 1);
LCD.println(text);
}
void printLocalTime()
{
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
message("Failed to obtain time");
return;
}
LCD.setCursor(11, 0);
LCD.println(&timeinfo, "%H:%M");
}
void setup() {
Serial.begin(115200);
delay(10);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("MediTimer V0.10");
// We start by connecting to a WiFi network
message("Connect to WiFi");
WiFi.begin("Wokwi-GUEST", "");
int8_t ticker = 0;
const char* tick = "-/|\\";
while (WiFi.status() != WL_CONNECTED) {
delay(500);
LCD.setCursor(15, 0);
LCD.print(tick[ticker++]);
if (ticker == 4) ticker = 0;
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
message("Ready");
// put your setup code here, to run once:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
printLocalTime();
}
void loop() {
// put your main code here, to run repeatedly:
}