Kode untuk jadwal shalat board NodeMCU
#include "PrayerTimes.h"
/*
* Program Menentukan Waktu Shalat
* Berdasarkan lokasi lintang dan bujur.
*
* Explored by www.ElangSakti.com
*
*/
double waktu[sizeof(TimeName)/sizeof(char*)];
static const char* NamaWaktu[] ={
"Imsak",
"Subuh",
"Syuruq",
"Dzuhur",
"Ashar",
"Terbenam",
"Maghrib",
"Isya'",
"Count"
};
String wImsak;
String wSubuh;
String wSyuruq;
String wDzuhur;
String wAshar;
String wMaghrib;
String wIsya;
const byte JUMLAH_WAKTU_DEFAULT = sizeof(waktu)/sizeof(double);
const byte JUMLAH_WAKTU = sizeof(NamaWaktu)/sizeof(char*);
const byte DATA_WAKTU = 2; // jam dan menit
byte WaktuPenting[JUMLAH_WAKTU][DATA_WAKTU];
byte presisi =2;
// pengaturan jam dan tanggal
int _tahun = 2018;
int _bulan = 6;
int _hari = 26; // tanggal
// pengaturan bujur lintang (Malang)
float _lat = -7.797068; // lintang
float _lng = 110.370529; // bujur
// timezone
int _timezone = 7; // zona waktu WIB=7, WITA=8, WIT=9
// sudut subuh dan maghrib Indonesia
int _sudut_subuh = 20;
int _sudut_isyak = 18;
void setup() {
Serial.begin(19200);
set_calc_method(ISNA); // metode perhitungan
set_asr_method(Shafii); // madzhab?
set_high_lats_adjust_method(AngleBased);
set_fajr_angle(_sudut_subuh); // sudut waktu subuh
set_isha_angle(_sudut_isyak); // sudut waktu isyak
}
void loop() {
WaktuShalat(WaktuPenting);
CetakWaktuShalat();
delay(60000L);
}
void CetakWaktuShalat(){
Serial.println(" ===========================");
Serial.print(" Imsakiyah Yogyakarta Tgl. ");
Serial.print(_hari);
Serial.print("/");
Serial.print(_bulan);
Serial.print("/");
Serial.print(_tahun);
Serial.println();
Serial.println(" ===========================");
for(byte i=0; i<JUMLAH_WAKTU-1; i++){
if( i == 5 ) continue;
Serial.print("\t");
Serial.print( NamaWaktu[i] );
Serial.print("\t");
Serial.print( DuaDigit(WaktuPenting[i][0]) );
Serial.print(":");
Serial.println( DuaDigit(WaktuPenting[i][1]+presisi) );
}
wImsak= ( DuaDigit(WaktuPenting[0][0]) )+":"+( DuaDigit(WaktuPenting[0][1]+presisi) );
wSubuh= ( DuaDigit(WaktuPenting[1][0]) )+":"+( DuaDigit(WaktuPenting[1][1]+presisi) );
wSyuruq= ( DuaDigit(WaktuPenting[2][0]) )+":"+( DuaDigit(WaktuPenting[2][1]+presisi) );
wDzuhur= ( DuaDigit(WaktuPenting[3][0]) )+":"+( DuaDigit(WaktuPenting[3][1]+presisi) );
wAshar= ( DuaDigit(WaktuPenting[4][0]) )+":"+( DuaDigit(WaktuPenting[4][1]+presisi) );
wMaghrib=( DuaDigit(WaktuPenting[5][0]) )+":"+( DuaDigit(WaktuPenting[5][1]+presisi) );
wIsya= ( DuaDigit(WaktuPenting[7][0]) )+":"+( DuaDigit(WaktuPenting[7][1]+presisi) );
Serial.println(wImsak+" "+wSubuh+" "+wSyuruq+" "+wDzuhur+" "+wAshar+" "+wMaghrib+" "+ wIsya+" ");
}
void WaktuShalat(byte WaktuShalat[JUMLAH_WAKTU][DATA_WAKTU]){
get_prayer_times(_tahun, _bulan, _hari, _lat, _lng, _timezone, waktu);
byte waktu_custom = 0;
for(byte i=0; i<JUMLAH_WAKTU_DEFAULT-1; i++){
int jam, menit;
get_float_time_parts(waktu[i], jam, menit);
if( i == 0 ){
WaktuPenting[waktu_custom][0] = jam;
WaktuPenting[waktu_custom][1] = menit-10;
waktu_custom++;
WaktuPenting[waktu_custom][0] = jam;
WaktuPenting[waktu_custom][1] = menit;
} else {
WaktuPenting[waktu_custom][0] = jam;
WaktuPenting[waktu_custom][1] = menit;
}
waktu_custom++;
}
}
String DuaDigit(byte angka){
if( angka > 9 ){
return String(angka);
} else {
String tmp = "0";
tmp.concat(angka);
return tmp;
}
}