Advertisement
safwan092

Untitled

Jun 8th, 2022
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <Wire.h>
  3. #include <TimeLib.h>
  4. #include <PrayerTimes.h>
  5. #include "RTClib.h"
  6. #include <LiquidCrystal_I2C.h>
  7.  
  8. int timeAfterAthan = 1; // min
  9. int timeAfterSalat = 1; // min
  10.  
  11. int fh, fm;
  12. int dh, dm;
  13. int ah, am;
  14. int mh, mm;
  15. int ih, im;
  16.  
  17. int flag = 0;
  18. int newMin = 0;
  19.  
  20. #define inRelay 6
  21. #define outRelay 5
  22.  
  23. int nowHOUR;
  24. int nowMIN;
  25.  
  26. RTC_DS3231 rtc;
  27. LiquidCrystal_I2C lcd(0x27, 16, 2);
  28.  
  29. char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
  30. double times[sizeof(TimeName) / sizeof(char*)];
  31.  
  32. void setup() {
  33. Serial.begin(57600);
  34. if (! rtc.begin()) {
  35. Serial.println("Couldn't find RTC");
  36. Serial.flush();
  37. while (1) delay(10);
  38. }
  39. //rtc.adjust(DateTime(2022, 6, 8, 21, 40, 0));
  40. lcd.init();
  41. lcd.backlight();
  42. pinMode(inRelay, OUTPUT);
  43. pinMode(outRelay, OUTPUT);
  44. digitalWrite(inRelay, HIGH);
  45. digitalWrite(outRelay, HIGH);
  46. delay(1000);
  47. digitalWrite(inRelay, LOW);
  48. digitalWrite(outRelay, LOW);
  49. delay(1000);
  50. digitalWrite(inRelay, HIGH);
  51. digitalWrite(outRelay, HIGH);
  52. delay(1000);
  53. digitalWrite(inRelay, LOW);
  54. digitalWrite(outRelay, LOW);
  55. delay(1000);
  56. digitalWrite(inRelay, HIGH);
  57. digitalWrite(outRelay, HIGH);
  58. delay(1000);
  59. digitalWrite(inRelay, LOW);
  60. digitalWrite(outRelay, LOW);
  61. delay(10000);
  62.  
  63. if (rtc.lostPower()) {
  64. Serial.println("RTC lost power, let's set the time!");
  65. rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  66. }
  67. }
  68.  
  69. void loop() {
  70. DateTime now = rtc.now();
  71.  
  72. set_calc_method(Makkah);
  73. set_asr_method(Shafii);
  74. set_high_lats_adjust_method(AngleBased);
  75. set_fajr_angle(18.5);
  76. set_isha_angle(15);
  77.  
  78. //JEDDAH MODIFIED BY DR JABER
  79. float latitude = 21.588657;
  80. float longitude = 39.219734;
  81.  
  82. get_prayer_times(now.year(), now.month(), now.day(), latitude, longitude, 3, times);
  83.  
  84. get_float_time_parts(times[0], fh, fm);
  85. get_float_time_parts(times[2], dh, dm);
  86. get_float_time_parts(times[3], ah, am);
  87. get_float_time_parts(times[5], mh, mm);
  88. get_float_time_parts(times[6], ih, im);
  89. im = im * 10;
  90. /*
  91. for (int i = 0; i < sizeof(times) / sizeof(double); i++) {
  92. //char tmp[10];
  93. int hourss, minutess;
  94. get_float_time_parts(times[i], hourss, minutess);
  95. Serial.print(i);
  96. Serial.print(" \t ");
  97. Serial.print(TimeName[i]);
  98. //Serial.print(" \t\t ");
  99. //Serial.print(times[i]);
  100. Serial.print(" \t\t");
  101. Serial.print(hourss);
  102. Serial.print(":");
  103. Serial.print(minutess);
  104. Serial.println();
  105.  
  106. }
  107. */
  108. nowHOUR = now.hour();
  109. nowMIN = now.minute();
  110. Serial.print(now.year(), DEC);
  111. Serial.print('/');
  112. Serial.print(now.month(), DEC);
  113. Serial.print('/');
  114. Serial.print(now.day(), DEC);
  115. Serial.print(" (");
  116. Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  117. Serial.print(") ");
  118. Serial.print(nowHOUR, DEC);
  119. Serial.print(':');
  120. Serial.print(nowMIN, DEC);
  121. Serial.print(':');
  122. Serial.print(now.second(), DEC);
  123. Serial.println();
  124. lcd.clear();
  125. lcd.setCursor(0, 0);
  126. lcd.print(nowHOUR);
  127. if (nowMIN < 10) {
  128. lcd.print(":0");
  129. }
  130. else {
  131. lcd.print(":");
  132. }
  133. lcd.print(nowMIN);
  134. lcd.print(" ");
  135. lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
  136. lcd.print(" ");
  137. //Prayer Time if statments
  138. //*********************************************************************************
  139. ////////////////////////////////////////////////////////////////////
  140. if (nowHOUR <= fh) {
  141. lcd.print(fh);
  142. lcd.print(":");
  143. lcd.print(fm);
  144. if (nowHOUR == fh && nowMIN == fm) {
  145. lcd.setCursor(10, 1);
  146. lcd.print("OUT");
  147. //turn ON out Relay
  148. digitalWrite(inRelay, LOW);
  149. digitalWrite(outRelay, HIGH);
  150. }
  151. if (nowHOUR == fh && nowMIN == fm + timeAfterAthan) {
  152. lcd.setCursor(10, 1);
  153. lcd.print("IN ");
  154. //turn ON in Relay
  155. digitalWrite(inRelay, HIGH);
  156. digitalWrite(outRelay, LOW);
  157. flag = 1;
  158. }
  159. }
  160. ////////////////////////////////////////////////////////////////////
  161. //*********************************************************************************
  162. ////////////////////////////////////////////////////////////////////
  163. else if (nowHOUR <= dh) {
  164. lcd.print(dh);
  165. lcd.print(":");
  166. lcd.print(dm);
  167. if (nowHOUR == dh && nowMIN == dm) {
  168. lcd.setCursor(10, 1);
  169. lcd.print("OUT");
  170. //turn ON out Relay
  171. digitalWrite(inRelay, LOW);
  172. digitalWrite(outRelay, HIGH);
  173. }
  174. if (nowHOUR == dh && nowMIN == dm + timeAfterAthan) {
  175. lcd.setCursor(10, 1);
  176. lcd.print("IN ");
  177. //turn ON in Relay
  178. digitalWrite(inRelay, HIGH);
  179. digitalWrite(outRelay, LOW);
  180. flag = 1;
  181. }
  182. }
  183. ////////////////////////////////////////////////////////////////////
  184. //*********************************************************************************
  185. ////////////////////////////////////////////////////////////////////
  186. else if (nowHOUR <= ah) {
  187. lcd.print(ah);
  188. lcd.print(":");
  189. lcd.print(am);
  190. if (nowHOUR == ah && nowMIN == am) {
  191. lcd.setCursor(10, 1);
  192. lcd.print("OUT");
  193. //turn ON out Relay
  194. digitalWrite(inRelay, HIGH);
  195. digitalWrite(outRelay, LOW);
  196. }
  197. if (nowHOUR == ah && nowMIN == am + timeAfterAthan) {
  198. lcd.setCursor(10, 1);
  199. lcd.print("IN ");
  200. //turn ON in Relay
  201. digitalWrite(inRelay, HIGH);
  202. digitalWrite(outRelay, LOW);
  203. flag = 1;
  204. }
  205. }
  206. ////////////////////////////////////////////////////////////////////
  207. //*********************************************************************************
  208. ////////////////////////////////////////////////////////////////////
  209. else if (nowHOUR <= mh) {
  210. lcd.print(mh);
  211. lcd.print(":");
  212. lcd.print(mm);
  213. if (nowHOUR == mh && nowMIN == mm) {
  214. lcd.setCursor(10, 1);
  215. lcd.print("OUT");
  216. //turn ON out Relay
  217. digitalWrite(inRelay, LOW);
  218. digitalWrite(outRelay, HIGH);
  219. }
  220. if (nowHOUR == mh && nowMIN == mm + timeAfterAthan) {
  221. lcd.setCursor(10, 1);
  222. lcd.print("IN ");
  223. //turn ON in Relay
  224. digitalWrite(inRelay, HIGH);
  225. digitalWrite(outRelay, LOW);
  226. flag = 1;
  227. }
  228. }
  229. ////////////////////////////////////////////////////////////////////
  230. //*********************************************************************************
  231. ////////////////////////////////////////////////////////////////////
  232. else if (nowHOUR <= ih) {
  233. lcd.print(ih);
  234. lcd.print(":");
  235. lcd.print(im);
  236. if (nowHOUR == ih && nowMIN == im) {
  237. lcd.setCursor(10, 1);
  238. lcd.print("OUT");
  239. //turn ON out Relay
  240. digitalWrite(inRelay, LOW);
  241. digitalWrite(outRelay, HIGH);
  242. }
  243. if (nowHOUR == ih && nowMIN == im + timeAfterAthan) {
  244. lcd.setCursor(10, 1);
  245. lcd.print("IN ");
  246. //turn ON in Relay
  247. digitalWrite(inRelay, HIGH);
  248. digitalWrite(outRelay, LOW);
  249. flag = 1;
  250. }
  251. }
  252.  
  253. else if (nowHOUR > ih) {
  254. lcd.print(fh);
  255. lcd.print(":");
  256. lcd.print(fm);
  257. }
  258. ////////////////////////////////////////////////////////////////////
  259. //*********************************************************************************
  260. lcd.setCursor(0, 1);
  261. lcd.print(now.day());
  262. lcd.print("/");
  263. lcd.print(now.month());
  264. lcd.print("/");
  265. lcd.print(now.year());
  266. lcd.print(" ");
  267.  
  268. if (flag == 1) {
  269. newMin = newMin + 10;
  270. if (newMin >= timeAfterSalat * 60) { // 600 = 10 min
  271. lcd.setCursor(10, 1);
  272. lcd.print(" ");
  273. digitalWrite(inRelay, LOW);
  274. digitalWrite(outRelay, LOW);
  275. flag = 0;
  276. }
  277. }
  278.  
  279. delay(10000);
  280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement