Pada dasarnya nama waktu sholat adalah bahasa Inggris, namun kita modifikasi agar yang muncul bahasa Indonesia. Lalu, sebenarnya dalam library tidak dihitung waktu imsak, tapi kita modifikasi juga agar bisa menampilkan waktu imsak. Source code lengkapnya seperti ini.
- #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"
- };
- 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 = 2017;
- int _bulan = 11;
- int _hari = 19; // 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;
- }
- }
Coding Arduino dan Penjelasannya pada Jam Digital Masjid
Reviewed by Ibnu SS
on
4/24/2018
Rating: