#include "PrayerTimes.h"
/*
* Program Menentukan Waktu Shalat
* Berdasarkan lokasi lintang dan bujur.
*
* Explored by https://ifanbutsio.blogspot.com/
*
*/
double waktu[sizeof(TimeName)/sizeof(char*)];
static const char* NamaWaktu[] ={
"Imsak",
"Subuh",
"Syuruq",
"Dzuhur",
"Ashar",
"Terbenam",
"Maghrib",
"Isya'",
"Count"
};
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];
// pengaturan jam dan tanggal
int _tahun = 2020;
int _bulan = 04;
int _hari = 30; // tanggal
// pengaturan bujur lintang (Malang)
float _lat = -7.9786395; // lintang
float _lng = 112.5617424; // 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 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]) );
}
Serial.println();
}
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;
}
}
Langganan:
Posting Komentar (Atom)
Penjadwalan dan durasi aktif relay dengan setting melalui tombol berbasis arduino
Untuk mengatur jadwalnya, pada contoh ini menggunakan 3 tombol yaitu set, up dan down. adapun komponen yang digunakan adalah : Arduino un...

-
BAB 1 PENDAHULUAN 1.1. LATAR BELAKANG MASALAH Jantung adalah organ penting dalam tubuh manusia yang difungsikan untuk memompa dar...
-
PERANGKAT JARINGAN DAN PENGKABELAN MACAM MACAM PERALATAN JARINGAN Saat ini sudah ada banyak sekali peralatan jaringan. Di sin...
Tidak ada komentar:
Posting Komentar