Jadwal Waktu Shalat (JWS) adalah media informasi di rumah ibadah Masjid/Mushalla/Surau yang menampilkan informasi waktu-waktu Shalat.
Dalam perkembangannya Jam Waktu Shalat berfungsi sebagai :
- Menampilkan Jadwal / Waktu Shalat wajib dan sunat
- Menampilkan informasi tanggal Masehi, Hijriah, Pasaran Jawa, dan penanggalan khusus seperti penanggalan Minang
- Menampilkan Ayat Al-Quran, Doa
- Informasi Tartil, Tarhim, Azan, Iqamah
- Pengingat / alarm waktu masuk Shalat dan selesai Iqamah
- Memutar Suara/Musik Tartil, Tarhim disertai kontrol hidup/mati amplifier
- Perhitungan jadwal berdasarkan posisi matahari, masukan manual, data jadwal online harian.
Diagram alir Jawdal waktu-waktu Shalat :
Skema Jam waktu shalat universal:
Tampilan aplikasi (apk) JWS Semesin Universal:
contoh tampilan jadwal shalat 3 panel :
Koding / sketch JWS semesin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | /* JWS Semesin 1 - 8 panel Fitur yang tidak aktif 1. Tampilan tanggal Hijriah 2. Tampilan tanggal Jawa 3. Tampilan tanggal Minang 4. Pesan selama tartil 5. Pesan selama tarhim 6. Pesan selama Iqamah */ #define serialDebug false #define modeDemo false #define namaMesjid "JWS" //defenisi pin #define pinMP3Busy 2 #define pinRelayAmpli 3 #define pinBuzzer 4 #define RTCDetikIRQ A3 #define relayOn LOW #define I2CEEPROM_ADDRESS 0x57 //setting #define periodaAlarmWaktuShalatMasuk 100//milidetik #define periodaAlarmWaktuAkhirIqamah 300//milidetik #define pixelLebarPanel 32 #define pixelTinggiPanel 16 //variabel Setting #define kecepatanMinimal 10 #define skalaKecepatan 10 #define tokenSetting 32 #define lamaAksesApk 10L * 60 * 1000 #define jumlahNyalaPadam 5 #define jumlahTextInformasi 10 #define fontNamaMesjid Arial14 #define fontJamDanMenitUtama angka6x14 #define fontSimbolGambar simbolGambar #include <Wire.h> #include <EEPROM.h> #include <DMD_Semesin.h> #include <RTC_Semesin.h> #include <DFPlayer_Mini_Mp3.h> #include <BluetoothApk.h> #include <fonts/angka6x14.h> #include <fonts/SystemFont5x7Ramping.h> #include <fonts/Arial14.h> #include <fonts/simbolGambar.h> #include "fungsi.h" #include "definisi.h" #include "konstanta.h" #include "setting.h" #include "WaktuShalat.h" const uint8_t *alamatFont[] = { Arial14, SystemFont5x7Ramping, }; SPIDMD dmd(8, 1); //max jumlah panel = 8 RTC_DS3231 rtc; DateTime now; //Status bool RTCValid = true ; byte modeOperasi = modeInformasi; bool statusAlarm; bool tampilJamMenitDetik = false ; long millisRunningText; uint8_t kecepatanRunningText; uint8_t kecepatanRunningEfek; uint16_t hitungMundurTartil; uint16_t hitungMundurTarhim; uint16_t hitungMundurAzan; //terhitung sejak waktu masuk uint16_t hitungMundurIqamah; //terhitung sejak selesai azan bool pesanSetelahAzan; bool pesanSebelumShalat; uint16_t hitungMundurPeringatanSimbol; uint16_t hitungMundurShalat; bool initHitungMundurTartil; bool initHitungMundurTarhim; bool initHitungMundurAzan; bool initHitungMundurIqamah; bool initHitungMundurPeringatanSimbol; bool initHitungMundurShalat; uint8_t hitungMundurAlarmIqamah; //kali int8_t indexWaktuIbadah; int8_t indekInformasi; //efek uint16_t lamaTampilText; bool initTampil; bool tampilanInformasiSambung; byte indekTampilan = jumlahInformasi; EfekMarque efekMarque; uint16_t lebarText; uint8_t tinggiText; byte detikSebelumnya = 60; byte menitSebelumnya = 60; byte tanggalSebelumnya = 0; long millisAlarm; bool status; BluetoothApk bluetoothApk(&Serial, "JWS2 SEMESIN.COM" ); long millisAksesApk; bool aksesApk; uint16_t counterAlamat = 0; uint16_t counterAlamatSebelumnya = 0; uint16_t parameterSebelumnya = 0; byte lebarJamUtama = 32; byte lebarJadwalShalat = 32; byte modeTampilanJadwal; char buffer[72]; uint16_t offsetJadwalEEPROM; bool runningTextAktif; JamDanMenitJadwal jadwalBerikutnya; JamDanMenitAlarm alarmBerikutnya; int8_t hitungMundurAlarm; bool initHitungMundurAlarm; bool statusRelayAmpli; void setup() { pinMode(pinBuzzer, OUTPUT); digitalWrite(pinRelayAmpli, !relayOn); pinMode(pinRelayAmpli, OUTPUT); pinMode(pinMP3Busy, INPUT_PULLUP); Serial.begin(9600); Serial.println(F( "JWS Semesin 1-8 panel" )); mp3_set_serial (Serial); mp3_set_volume (15); #if serialDebug Serial.println(F( "Inisialisasi" )); #endif rtc.begin(); if (rtc.lostPower()) { #if serialDebug Serial.println(F( "RTC tidak jalan" )); #endif write_i2c_register(DS3231_ADDRESS, DS3231_STATUSREG, 0x00); } write_i2c_register(DS3231_ADDRESS, DS3231_CONTROL, DS3231_SquareWave1Hz); if (EEPROM.read(offsetof(Setting, token)) != tokenSetting) { pengaturanAwal(); } updateUkuranTampilan(); dmd.waitInterruptOver = false ; dmd.begin(); dmd.clearScreen(); dmd.setBrightness(25.5 * EEPROM.read(offsetof(Setting, kecerahanStandar))); kecepatanRunningEfek = skala2kecepatanRunning(EEPROM.read(offsetof(Setting, kecepatanEfek))); #if serialDebug Serial.println(F( "Sistem mulai" )); #endif dmd.selectFont(fontNamaMesjid); dmd.drawString(1, 1, namaMesjid); delay(3000); dmd.clearScreen(); statusRelayAmpli = digitalRead(pinMP3Busy); } void loop() { ....... file lengkap bisa didownload melalui link dibawah |
file JWS universal:
JWS Semesin v2.1
- Perlindungan password opsional
- Informasi tetap
- weeker/alarm pengingat
- JWS_semesin 2.1.zip
catatan:
* untuk RTC DS3231, pin-SQW harus terpasang pada pin-A3 (arduino)
* jika menggunakan pcb jws (versi manapun) ada kemungkinan tidak cocok dan perlu modifikasi