Anda di halaman 1dari 11

JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

1 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

2 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

1 #define pinLedMerah 5
2 #define pinLedHijau 6
3 #define pinLedBiru 7
4
5 #define pinTombolOtomatis 11
6 #define pinTombolManual 12
7 #define pinTombolJammer 13
8
9 #define pinJammer 4
10 #define relayOn LOW
11
12 #define waktuJammerShalat 20
13 #define waktuJammerShalatJumat 60
14 #define waktuJammerManual 20
15
16 #include <Wire.h>
17 #include "Sodaq_DS3231.h"
18 #include <LiquidCrystal_I2C.h>
19
20 LiquidCrystal_I2C lcd(0x3F, 16, 2);
21
22 struct waktu
23 {
24 byte jam;
25 byte menit;
26 };
27
28
29 const waktu jadwalShalat[][8] PROGMEM = {
30 //Imsyak Shubuh Terbit Dhuha Dzuhur A
31 {{ 4, 20}, { 4, 30}, { 5, 51}, { 6, 15},
32 {{ 4, 20}, { 4, 30}, { 5, 51}, { 6, 15},
33 {{ 4, 21}, { 4, 31}, { 5, 52}, { 6, 16},
34 {{ 4, 21}, { 4, 31}, { 5, 52}, { 6, 16},
35 {{ 4, 22}, { 4, 32}, { 5, 53}, { 6, 17},
36 {{ 4, 23}, { 4, 33}, { 5, 53}, { 6, 17},
37 {{ 4, 23}, { 4, 33}, { 5, 54}, { 6, 18},
38 {{ 4, 24}, { 4, 34}, { 5, 54}, { 6, 18},
39 {{ 4, 24}, { 4, 34}, { 5, 55}, { 6, 19},
40 {{ 4, 25}, { 4, 35}, { 5, 55}, { 6, 19},
41 {{ 4, 25}, { 4, 35}, { 5, 56}, { 6, 20},
42 {{ 4, 26}, { 4, 36}, { 5, 56}, { 6, 20},
43 {{ 4, 27}, { 4, 37}, { 5, 56}, { 6, 20},
44 {{ 4, 27}, { 4, 37}, { 5, 57}, { 6, 21},
45 {{ 4, 28}, { 4, 38}, { 5, 57}, { 6, 21},
46 {{ 4, 28}, { 4, 38}, { 5, 58}, { 6, 22},
47 {{ 4, 29}, { 4, 39}, { 5, 58}, { 6, 22},
48 {{ 4, 29}, { 4, 39}, { 5, 59}, { 6, 23},
49 {{ 4, 30}, { 4, 40}, { 5, 59}, { 6, 23},
50 {{ 4, 30}, { 4, 40}, { 5, 59}, { 6, 23},
51 {{ 4, 31}, { 4, 41}, { 6, 0}, { 6, 24}, {

3 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

52 {{ 4, 31}, { 4, 41}, { 6, 0}, { 6, 24}, {


53 {{ 4, 32}, { 4, 42}, { 6, 1}, { 6, 25}, {
54 {{ 4, 32}, { 4, 42}, { 6, 1}, { 6, 25}, {
55 {{ 4, 33}, { 4, 43}, { 6, 1}, { 6, 25}, {
56 {{ 4, 33}, { 4, 43}, { 6, 2}, { 6, 26}, {
57 {{ 4, 34}, { 4, 44}, { 6, 2}, { 6, 26}, {
58 {{ 4, 34}, { 4, 44}, { 6, 2}, { 6, 26}, {
59 {{ 4, 35}, { 4, 45}, { 6, 3}, { 6, 27}, {
60 {{ 4, 35}, { 4, 45}, { 6, 3}, { 6, 27}, {
61 {{ 4, 36}, { 4, 46}, { 6, 3}, { 6, 27}, {
62 };
63 byte waktuUtama[] = {1, 4, 5, 6, 7};
64 char namaHari[][8] = {"Minggu,", "Senin, ",
65 char namaWaktu[][16] = {"Imsyak", "Shubuh",
66
67 enum Mode
68 {
69 otomatis,
70 manual,
71 };
72
73 byte mode;
74 char buffer[32];
75 byte detikSebelumnya = 60;
76 byte menitSebelumnya = 60;
77 uint16_t unixRelay;
78 bool statusJammer;
79 DateTime now;
80
81 void setup()
82 {
83 pinMode(pinLedMerah, OUTPUT);
84 pinMode(pinLedHijau, OUTPUT);
85 pinMode(pinLedBiru, OUTPUT);
86 digitalWrite(pinJammer, !relayOn);
87 pinMode(pinJammer, OUTPUT);
88
89 pinMode(pinTombolOtomatis, INPUT_PULLUP);
90 pinMode(pinTombolManual, INPUT_PULLUP);
91 pinMode(pinTombolJammer, INPUT_PULLUP);
92
93 Serial.begin(9600);
94 Serial.println("JWS Jammer Sinyal HP deng
95 Serial.println("https://www.project.semes
96
97 Wire.begin();
98 Wire.beginTransmission(0x3F);
99 if (Wire.endTransmission())
100 {
101 lcd = LiquidCrystal_I2C(0x27, 16, 2);
102 }
103 lcd.begin();
104
105 rtc.begin();

4 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

106 now = rtc.now();


107 if (now.year() == 2000)
108 {
109 //Waktu compiler
110 char bulan[12];
111 byte indexBulan;
112 int jam, menit, detik, tanggal, tahun;
113
114 char *namaBulan[12] = {
115 "Jan", "Feb", "Mar", "Apr", "May", "J
116 "Jul", "Aug", "Sep", "Oct", "Nov", "D
117 };
118 sscanf(__TIME__, "%d:%d:%d", &jam, &men
119 sscanf(__DATE__, "%s %d %d", bulan, &ta
120 for (indexBulan = 0; indexBulan < 12; i
121 if (strcmp(bulan, namaBulan[indexBula
122 break;
123 }
124 uint8_t wday = hariDariTanggal(tanggal,
125 DateTime dt(tahun, indexBulan + 1, tang
126 rtc.setDateTime(dt);
127 Serial.println("RTC sudah otomatis di s
128 }
129
130 lcd.backlight();
131 lcd.setCursor(0, 0);
132 lcd.print("JWS Bulanan");
133 lcd.setCursor(0, 1);
134 lcd.print("fitur : Jammer");
135
136 delay(3000);
137 lcd.clear();
138
139 digitalWrite(pinLedHijau, HIGH);
140 Serial.println("Sistem mulai");
141
142 }
143
144 void loop()
145 {
146 now = rtc.now();
147
148 uint16_t unixSekarang = now.hour() * 60 +
149 if (detikSebelumnya != now.second())
150 {
151
152 detikSebelumnya = now.second();
153 if (!statusJammer)
154 {
155 sprintf(buffer, "%s %02d/%02d/%02d",
156 lcd.setCursor(0, 0);
157 lcd.print(buffer);
158 }
159 sprintf(buffer, "%02d:%02d:%02d", now.h

5 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

160 lcd.setCursor(4, 1);


161 lcd.print(buffer);
162 }
163 if (menitSebelumnya != now.minute())
164 {
165 menitSebelumnya = now.minute();
166 if (mode == otomatis)
167 {
168 for (byte i = 0; i < 5; i++)
169 {
170 if ((pgm_read_byte(&jadwalShalat[no
171 (pgm_read_byte(&jadwalShalat[no
172 {
173 digitalWrite(pinLedMerah, HIGH);
174 digitalWrite(pinJammer, relayOn);
175
176 if ((i == 1) && (now.dayOfWeek()
177 {
178 unixRelay = unixSekarang + wakt
179 }
180 else
181 {
182 unixRelay = unixSekarang + wakt
183 }
184 lcd.clear();
185 lcd.setCursor(0, 0);
186 lcd.print(" J A M M E R ");
187 statusJammer = true;
188
189 sprintf(buffer, "Waktu: %s", nama
190 lcd.setCursor(0, 1);
191 lcd.print(buffer);
192
193 delay(5000);
194 lcd.clear();
195 lcd.setCursor(0, 0);
196 lcd.print(" J A M M E R ");
197 }
198 }
199 }
200 if (statusJammer)
201 {
202 if (unixSekarang == unixRelay)
203 {
204 statusJammer = false;
205 digitalWrite(pinLedMerah, LOW);
206 digitalWrite(pinJammer, !relayOn);
207 }
208 }
209 }
210
211
212 if (!digitalRead(pinTombolOtomatis))
213 {

6 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

214 delay(50);
215 if (!digitalRead(pinTombolOtomatis))
216 {
217 mode = otomatis;
218 digitalWrite(pinLedHijau, HIGH);
219 digitalWrite(pinLedBiru, LOW);
220 lcd.setCursor(0, 0);
221 lcd.print(" M O D E ");
222 lcd.setCursor(0, 1);
223 lcd.print("O T O M A T I S ");
224 delay(3000);
225 lcd.clear();
226 }
227 }
228 if (!digitalRead(pinTombolManual))
229 {
230 delay(50);
231 if (!digitalRead(pinTombolManual))
232 {
233 mode = manual;
234 digitalWrite(pinLedHijau, LOW);
235 digitalWrite(pinLedBiru, HIGH);
236 lcd.setCursor(0, 0);
237 lcd.print(" M O D E ");
238 lcd.setCursor(0, 1);
239 lcd.print(" M A N U A L ");
240 delay(3000);
241 lcd.clear();
242 }
243 }
244 if (mode == manual)
245 {
246 if (!digitalRead(pinTombolJammer))
247 {
248 delay(50);
249 if (!digitalRead(pinTombolJammer))
250 {
251 if (statusJammer)
252 {
253 digitalWrite(pinLedMerah, LOW);
254 digitalWrite(pinJammer, !relayOn)
255 statusJammer = false;
256 }
257 else
258 {
259 digitalWrite(pinLedMerah, HIGH);
260 digitalWrite(pinJammer, relayOn);
261 unixRelay = unixSekarang + waktuJ
262 statusJammer = true;
263 lcd.setCursor(0, 0);
264 lcd.print(" J A M M E R ");
265 lcd.setCursor(0, 1);
266 lcd.print(" M A N U A L ");
267 delay(5000);

7 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

268 }
269 while (!digitalRead(pinTombolJammer
270 delay(50);
271 }
272 }
273 }
274 }
275 byte hariDariTanggal(byte tanggal, byte bul
276 {
277 uint16_t jumlahHariPerBulanMasehi[] = {0,
278 if (tahun >= 2000)
279 tahun ‐= 2000;
280
281 uint32_t jumlahHari = tahun * 365;
282 uint16_t tahunKabisat = tahun / 4;
283 for (byte i = 0; i < tahun; i++)
284 {
285 if (!(i % 4))
286 {
287 jumlahHari++;
288 }
289 }
290 jumlahHari += jumlahHariPerBulanMasehi[bu
291 if ( (bulan >= 2) && !(tahun % 4))
292 {
293 jumlahHari++;
294 }
295 jumlahHari += tanggal;
296 return ((jumlahHari + 5) % 7) + 1;
297 }


8 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

9 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

10 dari 11 16/03/2024 21:59


JWS Jammer dengan Database Jadwal Waktu Shalat Bulanan – Semesin https://www.project.semesin.com/2020/02/19/jws-jammer-dengan-databa...

11 dari 11 16/03/2024 21:59

Anda mungkin juga menyukai