Anda di halaman 1dari 8

//include library NTP Client

#include <NTPClient.h>
#include <WiFiUdp.h>
#include <ESP8266WiFi.h>

//include library untuk LED Matrix 7219


#include <SPI.h>
#include <MD_MAX72xx.h>
#include <MD_Parola.h>

//inisialisasi untuk WiFi


const char* ssid = "AHZA";
const char* pass = "danis123";

//atur zona waktu untuk menentukan


wilayah jam dan tanggal (
utcOffsetInSecond)
//wilayah indonesia barat = UTC+7 =
25200 (60*60*7), indonesia timur /
tengah UTC+8
//UTC+8 = (60*60*8) = 28800; lain UTC+9
= 32400, UTC-3 = -10800
const long utcOffsetInSeconds = 28800;

//definisikan NTPClient yang akan di


baca jam dan tanggal
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP,
"id.pool.ntp.org", utcOffsetInSeconds) ;

//siapkan variabel array untuk menampung


nama2 bulan
String bulan[12] = {"Jan", "Feb", "Mar",
"Apr", "Mei", "Jun", "Jul", "Agu",
"Sept", "Nov", "Des"};

//inisialisasi type led matrix


#define HARDWARE_TYPE MD_MAX72XX ::
FC16_HW
//define HARDWARE_TYPE MD_MAX72XX ::
GENERIC_HW

//penentuan pin serial


#define DATA_PIN 14 //pin D5
#define CS_PIN 12 //pin D6
#define CLK_PIN 13 //pin D7
#define MAX_DEVICES 4 //jumlah led
matrix 8x8 di 7219 yang di gunakan

//buat objek display led matrix 7219


MD_Parola myDisplay =
MD_Parola(HARDWARE_TYPE, DATA_PIN,
CLK_PIN, CS_PIN, MAX_DEVICES);
String dot = " " ;
//siapkan variabel untuk tanggal dalam
bentuk char array
char arrTgl[12] ; //09 Jul 2021

//sediakan variabel counter


int counter=0;
//sediakan variabel untuk menentukan
jam/tanggal yang tampil
String posisi = "jam";

void setup() {
Serial.begin(115200);
//aktifkan display
myDisplay.begin();

//setup untuk lef matrix


myDisplay.setIntensity(5); // 0 - 15
myDisplay.displayClear();

//koneksi nodemcu ke WiFi


WiFi.begin (ssid, pass);
while(WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
//apabila sudah terkoneksi, mulai
mengaktifkan pembacaan jam dan tanggal
//melalui ntp client
timeClient.begin();
}

void loop() {
//uji posisi yang di tampilkan
if (posisi=="jam")
baca_jam();
else if (posisi=="tanggal")
baca_tanggal();
}

void baca_tanggal()
{
//update ntp client
timeClient.update();

//baca epochTime = Timestamp


unsigned long epochTime = timeClient.
getEpochTime();

//ambil struktur tanggal


struct tm *ptm = gmtime ((time_t
*)&epochTime);
//parsing tanggal, bulan, tahun
int tgl = ptm->tm_mday ;
//cara menambahkan karakter 0 di
depan tgl < 10
String sTgl="";
if(tgl < 10)
sTgl = "0" + String(tgl);
else
sTgl = String(tgl);

int bln = ptm->tm_mon + 1 ;


//baca array bulan, kemudian tampung
dalam variabel
String array_bulan = bulan[bln - 1];
int thn = ptm->tm_year + 1900 ;
//2021 = tm_year = 121, 2022 = 122
//gabungkan dalam bentuk tanggal
String tanggal_sekarang = sTgl + " "
+ array_bulan + " " + String(thn);

//tampilkan di serial monitor


Serial.println(tanggal_sekarang);

//ubah tipe string tanggal_sekarang


menjadi char array, ditampung kedalam
var arrTgl
tanggal_sekarang.toCharArray(arrTgl,
12);

//runing text
if (myDisplay.displayAnimate())
{
myDisplay.displayText(arrTgl,
myDisplay.getTextAlignment(), myDisplay.
getSpeed(), myDisplay.getPause(),
PA_SCROLL_LEFT, PA_SCROLL_LEFT);
myDisplay.displayReset();

counter++; //counter bertambah 1


if(counter == 2)
{
posisi = "jam";
counter = 0;
myDisplay.displayClear();
}
}
delay(100);
}

void baca_jam()
{
//update ntp client
timeClient.update();
//baca jam dari ntp client
String jam_lengkap = timeClient.
getFormattedTime();

//parsing jam, menit, detik


String jam, menit, detik, jam_sekarang
;
jam = String(timeClient.getHours() );
menit = String( timeClient.
getMinutes() );
detik = String ( timeClient.
getSeconds() );
if(dot == " ")
dot = ":" ;
else
dot = " ";

jam_sekarang = jam + dot + menit ;


Serial.println("Jam sekarang : " +
jam_sekarang);

//tampilkan jam di led matrix


//tentukan perataan tulisan
myDisplay.
setTextAlignment(PA_CENTER); //PA_LEFT
/PA_RIGHT/ PA_CENTER
myDisplay.print(jam_sekarang);
counter++; //counter bertambah 1
if(counter == 20)
{
posisi = "tanggal";
counter = 0 ;
myDisplay.displayClear();
}
Serial.println(counter);

delay(1000);

Anda mungkin juga menyukai