Cara Membuat Jadwal Waktu Shalat Menggunakan Kontrol Handphone
Untuk kodingnya/sketch nya :
Untuk lebih lengkapnya , semua file silahkan download di link dibawah ini ya !
Password : pandupedia.com
Hallo sobat Pandu..untuk postingan kali ini Pandupedia akan membagikan cara membuat Jadwal Waktu Shalat ( JWS ) menggunakan Arduino ,Panel P 10 dengan menggunakan kontrol dari HP Android.
Untuk alat alat yang dibutuhkan adalah sebagai berikut :
- Arduino Uno
- Panel P10
- DMD Konektor
- Modul Bluetooth HC-05
- Modul MP3 Player
- RTC DS2321
- Relay ( jika akan dikoneksikan dengan amplifier )
Untuk aplikasi androidnya sudah tersedia 1 paket dalam file download yang sudah Pandupedia sediakan diakhir ya...untuk tampilan aplikasinya seperti dibawah ini :
Untuk kodingnya/sketch nya :
#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.semesin.com/project"
));
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() {
Untuk lebih lengkapnya , semua file silahkan download di link dibawah ini ya !
Password : pandupedia.com
Tags:
ARDUINO
Terima kasih atas transfer knowledge-nya. Alhamdulillaah saya sudah berhasil membuat JWS ini dg 2 panel. Apabila ingin merubah menjadi 4 panel apa saja yang harus dirubah?
BalasHapusRubah di settingan lebar dan tinggi panelnya aja mas
Hapusmas bagi coding ny dong
Hapuskalo digante pake lcd 16x2 gimana bang caranya?
BalasHapusini kenapa masalah nya bang
BalasHapusuint16_t ptr = &settingAwal;
.ini pemberi tahuan eror nya bang
invalid conversion from 'const Setting*' to 'uint16_t {aka short unsigned int}' [-fpermissive]
saya coba kenapa error yaa ?
BalasHapusjika diganti lcd bisa ? buat diruangan biar gk besar ukurannya untk programnya apa aja yang dirubah? maaf saya newbie,,hehe
BalasHapusGan aplikasi di androidnya kok gak bisa di download ya gan apakah ada di playstore android gan
BalasHapusMohon bantuannya gan sudah bisa muncul jwsnya tapi setting dari androidnya tidak bisa bisku makasih
Hapus