Jam Digital Masjid Murah

Coding Arduino dan Penjelasannya pada Jam Digital Masjid


Setelah Anda copas atau melihat source code di bawah ini, silakan lanjutkan dengan membaca penjelasannya. Sebab, ada beberapa hal yang perlu Anda perhatikan agar mudah jika ingin melakukan modifikasi pada jam digital masjid otomatis.

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.

  1. #include "PrayerTimes.h"
  2. /*
  3. * Program Menentukan Waktu Shalat
  4. * Berdasarkan lokasi lintang dan bujur.
  5. *
  6. * Explored by www.ElangSakti.com
  7. *
  8. */
  9. double waktu[sizeof(TimeName)/sizeof(char*)];
  10. static const char* NamaWaktu[] ={
  11. "Imsak",
  12. "Subuh",
  13. "Syuruq",
  14. "Dzuhur",
  15. "Ashar",
  16. "Terbenam",
  17. "Maghrib",
  18. "Isya'",
  19. "Count"
  20. };
  21. const byte JUMLAH_WAKTU_DEFAULT = sizeof(waktu)/sizeof(double);
  22. const byte JUMLAH_WAKTU = sizeof(NamaWaktu)/sizeof(char*);
  23. const byte DATA_WAKTU = 2; // jam dan menit
  24. byte WaktuPenting[JUMLAH_WAKTU][DATA_WAKTU];
  25. // pengaturan jam dan tanggal
  26. int _tahun = 2017;
  27. int _bulan = 11;
  28. int _hari = 19; // tanggal
  29. // pengaturan bujur lintang (Malang)
  30. float _lat = -7.9786395; // lintang
  31. float _lng = 112.5617424; // bujur
  32. // timezone
  33. int _timezone = 7; // zona waktu WIB=7, WITA=8, WIT=9
  34. // sudut subuh dan maghrib Indonesia
  35. int _sudut_subuh = 20;
  36. int _sudut_isyak = 18;
  37. void setup() {
  38. Serial.begin(19200);
  39. set_calc_method(ISNA); // metode perhitungan
  40. set_asr_method(Shafii); // madzhab?
  41. set_high_lats_adjust_method(AngleBased);
  42. set_fajr_angle(_sudut_subuh); // sudut waktu subuh
  43. set_isha_angle(_sudut_isyak); // sudut waktu isyak
  44. }
  45. void loop() {
  46. WaktuShalat(WaktuPenting);
  47. CetakWaktuShalat();
  48. delay(60000L);
  49. }
  50. void CetakWaktuShalat(){
  51. Serial.println(" ===========================");
  52. Serial.print(" Imsakiyah Tgl. ");
  53. Serial.print(_hari);
  54. Serial.print("/");
  55. Serial.print(_bulan);
  56. Serial.print("/");
  57. Serial.print(_tahun);
  58. Serial.println();
  59. Serial.println(" ===========================");
  60. for(byte i=0; i<JUMLAH_WAKTU-1; i++){
  61. if( i == 5 ) continue;
  62. Serial.print("\t");
  63. Serial.print( NamaWaktu[i] );
  64. Serial.print("\t");
  65. Serial.print( DuaDigit(WaktuPenting[i][0]) );
  66. Serial.print(":");
  67. Serial.println( DuaDigit(WaktuPenting[i][1]) );
  68. }
  69. Serial.println();
  70. }
  71. void WaktuShalat(byte WaktuShalat[JUMLAH_WAKTU][DATA_WAKTU]){
  72. get_prayer_times(_tahun, _bulan, _hari, _lat, _lng, _timezone, waktu);
  73. byte waktu_custom = 0;
  74. for(byte i=0; i<JUMLAH_WAKTU_DEFAULT-1; i++){
  75. int jam, menit;
  76. get_float_time_parts(waktu[i], jam, menit);
  77. if( i == 0 ){
  78. WaktuPenting[waktu_custom][0] = jam;
  79. WaktuPenting[waktu_custom][1] = menit-10;
  80. waktu_custom++;
  81. WaktuPenting[waktu_custom][0] = jam;
  82. WaktuPenting[waktu_custom][1] = menit;
  83. } else {
  84. WaktuPenting[waktu_custom][0] = jam;
  85. WaktuPenting[waktu_custom][1] = menit;
  86. }
  87. waktu_custom++;
  88. }
  89. }
  90. String DuaDigit(byte angka){
  91. if( angka > 9 ){
  92. return String(angka);
  93. } else {
  94. String tmp = "0";
  95. tmp.concat(angka);
  96. return tmp;
  97. }
  98. }
  99.  
Share on Google Plus

About Ibnu SS

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 komentar:

Posting Komentar