#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
const char *ssid = "Wokwi-GUEST";
const char *password = "";
#define trigger 26
#define echo 25
int waktu;
float jarak;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org");
String weekDays[7]={"Ahad", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
String months[12]={"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "Nopember", "Desember"};
int jam,menit,detik,tanggal,bulan,tahun;
char buff[100];
void setup() {
lcd.backlight(); lcd.init();
lcd.setCursor(0,0); lcd.print(" JAM DIGITAL ");
lcd.setCursor(0,1); lcd.print("Connecting...");
pinMode(trigger,OUTPUT);
pinMode(echo,INPUT_PULLUP);
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
lcd.setCursor(0,1); lcd.print("WiFi Connected...");
timeClient.begin();
timeClient.setTimeOffset(25200);
delay(1000);
}
void baca_sensor() {
digitalWrite(trigger,HIGH); delayMicroseconds(10);
digitalWrite(trigger,LOW); delayMicroseconds(10);
waktu = pulseIn(echo, HIGH);
jarak = waktu * 340.0 * (100.0/1000000.0)/2.0;
lcd.setCursor(0,0); lcd.print("Jarak = ");
lcd.print(jarak,1); lcd.print(" cm ");
delay(300);
}
void loop() {
delay(10); // this speeds up the simulation
baca_sensor();
timeClient.update();
time_t epochTime = timeClient.getEpochTime();
String formattedTime = timeClient.getFormattedTime();
jam = timeClient.getHours();
menit = timeClient.getMinutes();
detik = timeClient.getSeconds();
String hari = weekDays[timeClient.getDay()];
struct tm *ptm = gmtime ((time_t *)&epochTime);
tanggal = ptm->tm_mday;
bulan = ptm->tm_mon+1;
tahun = ptm->tm_year+1900;
String nama_bulan = months[bulan-1];
sprintf(buff,"JAM %02d:%02d:%02d WIB",jam,menit,detik);
lcd.setCursor(0,1); lcd.print(buff);
}