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:
/* 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")); Serial.println(F("https://www.project.semesin.com")); 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