#ifdef ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <time.h>
//#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <NTPClient.h>
#include <U8g2_for_Adafruit_GFX.h>
//#include <Fonts/FreeSansBold18pt7b.h>
Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);
U8G2_FOR_ADAFRUIT_GFX u8g2_for_adafruit_gfx;
//byte panjang, lebar;
//int16_t x, y;
//uint16_t w, h;
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char *ntpServer = "pool.ntp.org"; // Server NTP untuk WIB (Waktu Indonesia Barat)
const long gmtOffset_sec = 7 * 3600; // WIB (UTC + 7 hours)
const int daylightOffset_sec = 0;
void setup(){
Serial.begin(115200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
u8g2_for_adafruit_gfx.begin(display); // connect u8g2 procedures to Adafruit GFX
delay(2000);
display.clearDisplay();
//u8g2_for_adafruit_gfx.setTextSize(1);
//u8g2_for_adafruit_gfx.setCursor(1,10);
u8g2_for_adafruit_gfx.setForegroundColor(WHITE);
// Connect to Wi-Fi
Serial.print("Connecting to ");
Serial.println(ssid);
u8g2_for_adafruit_gfx.setFontMode(1);
u8g2_for_adafruit_gfx.setFontDirection(0);
u8g2_for_adafruit_gfx.setForegroundColor(WHITE);
u8g2_for_adafruit_gfx.setFont(u8g2_font_tinytim_tf);
u8g2_for_adafruit_gfx.setCursor(1,20);
u8g2_for_adafruit_gfx.println("Connecting to");
display.display();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
//u8g2_for_adafruit_gfx.setCursor(1,20)
//u8g2_for_adafruit_gfx.print(".");
//display.display();
}
Serial.println("");
Serial.println("WiFi connected.");
display.println("");
// Init and get the time
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
printLocalTime();
//disconnect WiFi as it's no longer needed
WiFi.disconnect(true);
WiFi.mode(WIFI_OFF);
}
void loop(){
delay(1000);
printLocalTime();
}
void printLocalTime(){
struct tm timeinfo;
if(!getLocalTime(&timeinfo)){
Serial.println("Failed to obtain time");
return;
}
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
display.clearDisplay();
u8g2_for_adafruit_gfx.setFontMode(1);
u8g2_for_adafruit_gfx.setFontDirection(0);
u8g2_for_adafruit_gfx.setForegroundColor(WHITE);
u8g2_for_adafruit_gfx.setCursor(1,30);
u8g2_for_adafruit_gfx.setFont(u8g2_font_timB24_tn);
u8g2_for_adafruit_gfx.print(&timeinfo, "%H:%M:%S");
u8g2_for_adafruit_gfx.setCursor(1,50);
u8g2_for_adafruit_gfx.setFont(u8g2_font_tinytim_tf);
u8g2_for_adafruit_gfx.print(&timeinfo, "%A, %d %B %Y");
display.display();
}