Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.89 KB | None | 0 0
  1. #include <DS3231.h>
  2.  
  3. DS3231 rtc(SDA, SCL);
  4. Time orario;
  5.  
  6. int OnHour;
  7. int OnMin; // variabili SET ora ON/OFF
  8. int OffHour;
  9. int OffMin;
  10.  
  11. #include <LiquidCrystal_I2C.h>
  12. LiquidCrystal_I2C lcd(0x27,20,4);
  13.  
  14. #include "DHT.h"
  15. #define DHTPIN 2
  16. #define DHTTYPE DHT22 //lettura temperatura e umidità
  17. DHT dht(DHTPIN, DHTTYPE);
  18. float h = dht.readHumidity();
  19. // Read temperature as Celsius (the default)
  20. float t = dht.readTemperature();
  21. float hic = dht.computeHeatIndex(t, h, false);
  22.  
  23.  
  24. int tempo = millis();
  25. long lasttempo;
  26.  
  27.  
  28. int pulsSU = 3;
  29. int pulsGIU= 4;
  30. int pulsSET =5;
  31. int pulsMENU= 6;
  32.  
  33. int Ton; // so che non serve a un cazzo, ma ormai c'è e ce la lascio
  34. int Toff; // pure lei...
  35. int EXIT; // e pure lei!!!!
  36. int umidita; // anche questa
  37. int temperatura; // è giusto consumare un po di byte alla cazzo di cane
  38.  
  39.  
  40. int step_funzione=0;
  41.  
  42.  
  43. void setup() {
  44. Serial.begin(9600);
  45. rtc.begin();
  46. lcd.init();
  47. lcd.backlight();
  48. dht.begin();
  49. pinMode (pulsSU,INPUT);
  50. pinMode (pulsGIU,INPUT);
  51. pinMode (pulsSET,INPUT);
  52. pinMode (pulsMENU,INPUT);
  53.  
  54.  
  55.  
  56.  
  57.  
  58. }
  59.  
  60. void loop() {
  61.  
  62.  
  63.  
  64.  
  65. orario = rtc.getTime();
  66.  
  67.  
  68. if(orario.hour == OnHour && orario.min == OnMin){
  69. digitalWrite(12,HIGH);
  70. Serial.println("LIGHT ON");
  71. }
  72.  
  73. else if(orario.hour == OffHour && orario.min == OffMin){
  74. digitalWrite(12,LOW);
  75. Serial.println("LIGHT OFF");
  76. }
  77. switch (step_funzione) {
  78. case 0: // STATO INIZIALE
  79. INIZIO();
  80. break;
  81. case 1:
  82. set_timeON();
  83.  
  84. break;
  85. case 2:
  86. set_timeOFF();
  87. break;
  88. // case 3:
  89. // break;
  90. }
  91. }
  92.  
  93.  
  94. void INIZIO (){ // questa è la schermata HOME, quella che sarà sempre visualizzata
  95. t = dht.readTemperature(); // letture temperatura e umudità dal dht22
  96. h = dht.readHumidity();
  97.  
  98. lcd.setCursor(6,0);
  99. lcd.print(orario.hour);
  100. lcd.print(":");
  101. lcd.print(orario.min);
  102. if ((millis) - (lasttempo>1500)){ // flikera solo le righe 108 e 112
  103. lasttempo=millis();
  104. lcd.setCursor(0,1);
  105. lcd.print("TEMP: C.");
  106. lcd.setCursor(6,1);
  107. lcd.print(t);
  108. lcd.setCursor(0,2);
  109. lcd.print("UMIDITA': %");
  110. lcd.setCursor(9,2);
  111. lcd.print(h);
  112. }
  113.  
  114. if(digitalRead(pulsMENU) == HIGH){ // se premo il pulsante entro in modalità set orario ON
  115. delay(150);
  116. //parte statica
  117. lcd.clear();
  118. lcd.setCursor(2, 0);
  119. lcd.print("SET TIME LIGHT-ON");
  120. delay(1000);
  121. step_funzione=1;
  122. }
  123. }
  124. void set_timeON(){ // setting orario di ora ON
  125. while(1){
  126. if(digitalRead(pulsSU) == HIGH){
  127. delay(16);
  128. OnMin++;}
  129. if ( OnMin>59){
  130. OnMin=0;
  131. OnHour++;} // dico a questo ignorante di arduino che ci sono 24 ore e max 59 min..
  132. if (OnHour>23){
  133. OnHour=0;}
  134. lcd.setCursor(7,2);
  135.  
  136. if (OnHour < 10) lcd.print(" "); // se le ore sono meno di 10, togli il numero rompi coglioni in +
  137. lcd.print(OnHour);
  138. lcd.print(":"); // metto i 2 punti che fanno brutto
  139. if (OnMin < 10) lcd.print(" "); // stessa minestra per i minuti
  140. lcd.print(OnMin);
  141.  
  142.  
  143. if (digitalRead(pulsSET)==HIGH){ // dopo aver impostato orario ON, se premo il tasto SET mi dice che è andato ok. e vado al set timeOFF
  144. delay(150);
  145. lcd.clear();
  146. lcd.setCursor (1,2);
  147. lcd.print("TIME-ON IMPOSTATO");
  148. delay(1000);
  149. lcd.clear();
  150. step_funzione=2;
  151. break;
  152. }
  153. if (digitalRead(pulsMENU)==HIGH){ // se invece ti sei accorto di aver cagato fuori dal water non c'è problema.. premi il tasto menu e ti dirà che hai annullato
  154. delay(150); // ti sei accorto che non c'è il minuti--???
  155. lcd.clear(); // se devi impostare le 1:10 ma sei andato avanti con il pulsante, scopri l'utilità di questo tasto..
  156. lcd.setCursor(1,2);
  157. lcd.print("SET-ANNULLATO");
  158. delay(1000);
  159. lcd.clear();
  160. OnHour=0;
  161. OnMin=0;
  162. step_funzione=0;
  163. break;}}}
  164.  
  165. void set_timeOFF(){ // uguale all'altro..ma qui imposti il time OFF
  166. lcd.clear();
  167. lcd.setCursor(2, 0);
  168. lcd.print("SET TIME LIGHT-OFF");
  169. delay(1000);
  170.  
  171. while(1){
  172. if(digitalRead(pulsSU) == HIGH){
  173. delay(16);
  174. OffMin++;}
  175. if (OffMin>59){
  176. OffMin=0;
  177. OffHour++;}
  178. if (OffHour>23){
  179. OffHour=0;}
  180. lcd.setCursor(7,2);
  181.  
  182. if (OffHour < 10) lcd.print(" ");
  183. lcd.print(OffHour);
  184. lcd.print(":");
  185. if (OffMin < 10) lcd.print(" ");
  186. lcd.print(OffMin);
  187.  
  188.  
  189. if (digitalRead(pulsSET)==HIGH){
  190. delay(150);
  191. lcd.clear();
  192. lcd.setCursor (1,2);
  193. lcd.print("TIME-OFF IMPOSTATO");
  194. delay(1000);
  195. lcd.clear();
  196. step_funzione=0;
  197. break;
  198. }
  199. if (digitalRead(pulsMENU)==HIGH){
  200. delay(150);
  201. lcd.clear();
  202. lcd.setCursor(1,2);
  203. lcd.print("SET-ANNULLATO");
  204. delay(1000);
  205. lcd.clear();
  206. OffHour=0;
  207. OffMin=0;
  208. step_funzione=0;
  209. break;}}}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement