JWS Jammer Dengan Database Jadwal Waktu Shalat Bulanan
JWS Jammer Dengan Database Jadwal Waktu Shalat Bulanan
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}, {
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);
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 }
←
→