Advertisement
Guest User

SAPA_MODELLO_HYRO_PHMETRO

a guest
Nov 19th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Arduino 18.02 KB | None | 0 0
  1. // setup schemo lcd
  2. #include <Wire.h>
  3. #include <LiquidCrystal_I2C.h>
  4.  
  5. #define I2C_ADDR 0x27
  6. #define BACKLIGHT_PIN 3
  7. #define En_pin 2
  8. #define Rw_pin 1
  9. #define Rs_pin 0
  10. #define D4_pin 4
  11. #define D5_pin 5
  12. #define D6_pin 6
  13. #define D7_pin 7
  14. LiquidCrystal_I2C schermo(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
  15.  
  16. //sensore ph
  17. #define sensore_ph A11
  18. #define Offset -0.9
  19.  
  20. // COSTANTI
  21. /*
  22. //pin ph
  23. float ph_soglia_max = A6;
  24. float ph_soglia_min = A7;
  25. */
  26. //costanti sensori livello acqua
  27. int livello_contenitore_piccolo_minimo = 400;
  28.  
  29. //costanti sensori umidità terreno
  30. int lettura_va = A0;
  31. int lettura_vb = A1;
  32. int lettura_vc = A2;
  33. int lettura_vd = A3;
  34.  
  35. //costanti relè
  36. int rele_pompa_1 = 9;
  37. int rele_pompa_2 = 10;
  38. int rele_pompa_3 = 11;
  39. int rele_pompa_4 = 12;
  40.  
  41. //costanti relè elettrovalvola
  42. int rele_elettrovalvola_1 = 47;
  43. int rele_elettrovalvola_2 = 49;
  44. int rele_elettrovalvola_3 = 51;
  45. int rele_elettrovalvola_4 = 53;
  46.  
  47. // costanti  relè pompe ed elettrovalvole PH
  48. int rele_pompa_ph_max = 30 ;
  49. int rele_elettrovalvola_ph_max = 32 ;
  50. int rele_pompa_ph_min = 28 ;
  51. int rele_elettrovalvola_ph_min = 26 ;
  52.  
  53.  
  54. //costanti tempo visualizzazione delle soglie regolazione trimmer
  55. int tempo_soglia_umdita = 5000; //VISUALIZZA IL DATO PER 5 SECONDI
  56.  
  57. //costanti tempo sensori umidità terreno
  58. int tempo_attesa_lettura = 1000;
  59. int tempo_ciclo_lettura = 1500;
  60. int durata_pompa_spenta = 3000;
  61. int durata_pompa_attiva = 5000;
  62.  
  63. //   VARIABILI
  64.  
  65. // variabili sensori umidità terreno
  66. int va = 0; //=V1
  67. int vb = 0; //=V2
  68. int vc = 0; //=V3
  69. int vd = 0; //=V4
  70.  
  71. //VARIABILI LETTURE DATI (da sostituire con ciclo for)
  72. int va1 = 0;
  73. int va2 = 0;
  74. int va3 = 0;
  75. int va4 = 0;
  76. int va5 = 0;
  77. int va6 = 0;
  78.  
  79. int vb1 = 0;
  80. int vb2 = 0;
  81. int vb3 = 0;
  82. int vb4 = 0;
  83. int vb5 = 0;
  84. int vb6 = 0;
  85.  
  86. int vc1 = 0;
  87. int vc2 = 0;
  88. int vc3 = 0;
  89. int vc4 = 0;
  90. int vc5 = 0;
  91. int vc6 = 0;
  92.  
  93. int vd1 = 0;
  94. int vd2 = 0;
  95. int vd3 = 0;
  96. int vd4 = 0;
  97. int vd5 = 0;
  98. int vd6 = 0;
  99.  
  100. // settaggio variabili trimmer
  101. int prima_soglia = 0;
  102. int seconda_soglia = 0;
  103.  
  104.  
  105. //lettura valori di livello liquidi
  106. int livello_va_rimappato = 0;
  107.  
  108. // Logo iniziale
  109.  
  110. byte alien[8] = {
  111.   0b01110,
  112.   0b10101,
  113.   0b10101,
  114.   0b11111,
  115.   0b01010,
  116.   0b10001,
  117.   0b10001,
  118.   0b10001
  119. };
  120. int impostazioni_umidita_ph = A14;
  121. int riempimento_tubi_pin = A13;
  122.  
  123. void setup() {
  124.   // put your setup code here, to run once:
  125. //lettura valori umidità terra  
  126. pinMode(lettura_va, INPUT); //sensori umidità terreno
  127. pinMode(lettura_vb, INPUT); //sensori umidità terreno
  128. pinMode(lettura_vc, INPUT); //sensori umidità terreno
  129. pinMode(lettura_vd, INPUT); //sensori umidità terreno
  130.  
  131. // soglie con trimmer
  132. pinMode(A4, INPUT); //regolazione umidità terreno
  133. pinMode(A5, INPUT); //regolazione umidità terreno
  134. //pinMode(ph_soglia_max, INPUT); //regolazione ph max
  135. //pinMode(ph_soglia_min, INPUT); //regolazione ph min
  136.  
  137. //sensori di ph
  138. pinMode(sensore_ph, INPUT);
  139.  
  140. //sensori di livello
  141. pinMode(A8, INPUT);
  142.  
  143.  
  144. //relè
  145. pinMode(rele_pompa_1, OUTPUT); // pin digitale 9  relè pompa
  146. pinMode(rele_pompa_2, OUTPUT);//  pin digitale 10 relè pompa
  147. pinMode(rele_pompa_3, OUTPUT);//  pin digitale 11 relè pompa
  148. pinMode(rele_pompa_4, OUTPUT);//  pin digitale 12 relè pompa
  149.  
  150. //relè elettrovalvole
  151. pinMode(rele_elettrovalvola_1, OUTPUT);
  152. pinMode(rele_elettrovalvola_2, OUTPUT);
  153. pinMode(rele_elettrovalvola_3, OUTPUT);
  154. pinMode(rele_elettrovalvola_4, OUTPUT);
  155.  
  156. //relè elettrovalvole
  157. pinMode(rele_pompa_ph_max, OUTPUT);
  158. pinMode(rele_elettrovalvola_ph_max, OUTPUT);
  159. pinMode(rele_pompa_ph_min, OUTPUT);
  160. pinMode(rele_elettrovalvola_ph_min, OUTPUT);
  161.  
  162.  
  163. //LETTURA TRIMMER(DA SOSTITUIRE CON INTERRUTTORE PER ENTRARE NELLE IMPOSTAZIONI
  164. pinMode(impostazioni_umidita_ph, INPUT);//IMPOSTAZIONI SOGLIA UMIDITA E PH ATTRAVERSO I TRIMMER
  165. pinMode(riempimento_tubi_pin, INPUT);// RIEMPIMENTO TUBI IMPIUANTO ACQUA
  166.  
  167. // INIZIALIZZAZIONE
  168. Serial.begin(9600);
  169. schermo.begin(16, 2);// abilita per lcd schermo
  170. schermo.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  171. schermo.setBacklight(HIGH);
  172.  
  173. // firmware 1.00
  174. schermo.setCursor(0,0);
  175. schermo.print("firmware 1.00-a");
  176. schermo.setCursor(0,1);
  177. schermo.print("del 17/11/2019");
  178. delay(5000);
  179. schermo.clear();
  180.  
  181. // informazzioni
  182. schermo.setCursor(0,0);
  183. schermo.print("Realizzato da:  ");
  184. schermo.setCursor(0,1);
  185. schermo.print("De Mitri Raffaele");
  186. delay(5000);
  187. schermo.clear();
  188. schermo.setCursor(0,0);
  189. schermo.print("studiodemitri.eu ");
  190. schermo.setCursor(0,1);
  191. schermo.print("tel. 3493114979 ");
  192. delay(3000);
  193. schermo.clear();
  194. //lcd
  195. schermo.home ();  
  196. schermo.write(byte(0));  
  197. schermo.write(byte(0));
  198. schermo.write(byte(0));
  199. schermo.print(" S.A.P.A  ");
  200. schermo.write(byte(0));
  201. schermo.write(byte(0));
  202. schermo.write(byte(0));
  203. schermo.setCursor(0,1);
  204. schermo.print("MODELLO: H.Y.R.O");
  205. delay(6000);
  206. schermo.clear();
  207. }
  208.  
  209.  
  210.  
  211. void loop() {
  212.  
  213. // IMPOSTAZIONI SOGLIA UMIDITA E PH ATTRAVERSO I TRIMMER
  214. int  ph_min = analogRead(A7);
  215. int  ph_max = analogRead(A6);
  216. int valore_trimmer = analogRead(impostazioni_umidita_ph);
  217.  
  218. if (valore_trimmer > 400)
  219. {
  220.  
  221. delay(200);
  222. schermo.clear();
  223. prima_soglia = analogRead (A4);
  224. seconda_soglia = analogRead (A5);
  225. prima_soglia = map(prima_soglia, 0, 1020, 0, 99);
  226. seconda_soglia = map(seconda_soglia, 0, 1020, 0, 99);
  227. schermo.setCursor(0,0);
  228. schermo.print("UM+ %");
  229. schermo.print(prima_soglia);
  230. schermo.setCursor(7,0);
  231. schermo.print(" UM- %");
  232. schermo.print(seconda_soglia);
  233. float ph_min_float = ph_min * (14.0 / 1023.0);
  234. float ph_max_float = ph_max * (14.0 / 1023.0);
  235. schermo.setCursor(0,1);
  236. schermo.print("PH+");
  237. schermo.print(ph_max_float);
  238. schermo.setCursor(8,1);
  239. schermo.print("PH-");
  240. schermo.print(ph_min_float);
  241.   return;
  242.  
  243.   }
  244.  /// RIEMPIMENTO TUBI
  245.  
  246. int riempimento_Tubi = analogRead(riempimento_tubi_pin);
  247. if (riempimento_Tubi > 400)
  248. {
  249. schermo.setCursor(0,0);  
  250. schermo.print("RIEMPIMENTO TUBI");
  251.  schermo.setCursor(0,1);
  252. schermo.print("..RIEMPIMENTO..");
  253. delay(5000);
  254. schermo.clear();
  255. digitalWrite(rele_pompa_1, HIGH);
  256. digitalWrite(rele_elettrovalvola_1, HIGH);
  257. digitalWrite(rele_pompa_2, HIGH);
  258. digitalWrite(rele_elettrovalvola_2, HIGH);
  259. digitalWrite(rele_pompa_3, HIGH);
  260. digitalWrite(rele_elettrovalvola_3, HIGH);
  261. digitalWrite(rele_pompa_4, HIGH);
  262. digitalWrite(rele_elettrovalvola_4, HIGH);
  263. schermo.setCursor(0,0);
  264. schermo.print("OFF PER FERMARE ");
  265. schermo.setCursor(0,1);
  266. schermo.print("P.1 P.2 P.3 P.4 ");
  267. delay(10000);
  268. digitalWrite(rele_pompa_1, LOW);
  269. digitalWrite(rele_elettrovalvola_1, LOW);
  270. digitalWrite(rele_pompa_2, LOW);
  271. digitalWrite(rele_elettrovalvola_2, LOW);
  272. digitalWrite(rele_pompa_3, LOW);
  273. digitalWrite(rele_elettrovalvola_3, LOW);
  274. digitalWrite(rele_pompa_4, LOW);
  275. digitalWrite(rele_elettrovalvola_4, LOW);
  276.  
  277.   return;
  278.   }
  279.  
  280. // soglie umidita min e umidita max. PH min e PH max
  281. prima_soglia = analogRead (A4);
  282. seconda_soglia = analogRead (A5);
  283. prima_soglia = map(prima_soglia, 0, 1020, 0, 99);
  284. seconda_soglia = map(seconda_soglia, 0, 1020, 0, 99);
  285.  
  286. float ph_min_float = ph_min * (14.0 / 1023.0);
  287. float ph_max_float = ph_max * (14.0 / 1023.0);
  288.  
  289. // LIVELLO MINIMI CONTENITORE PICCOLO
  290. schermo.clear();
  291. livello_va_rimappato = analogRead (A8);
  292. livello_va_rimappato = constrain(livello_va_rimappato, 0, 600); //costringe la variabile livello_va_rimappato ad un range da 0 a 670
  293. livello_va_rimappato = map (livello_va_rimappato, 0, 600, 0, 100);
  294. if (livello_va_rimappato>80){
  295. schermo.setCursor(0,0);
  296. schermo.print(livello_va_rimappato);
  297. schermo.print(" % ACQUA");
  298. delay(4000);
  299. }
  300. else {
  301. schermo.clear();
  302. schermo.print("RIEMPIRE");
  303. schermo.setCursor(0,1);
  304. schermo.print("SERBATOIO PICC. ");
  305. delay(2000);
  306. schermo.clear();
  307.   return;
  308.   }
  309.  
  310. schermo.clear();
  311.   // STAMPA DELLA % DI UIDITA' DEI VASI
  312. // VA=V1
  313. schermo.setCursor(0,0);
  314. schermo.print(" V1=");// abilita per lcd schermo
  315. schermo.print( va );// abilita per lcd schermo
  316. schermo.print("% ");
  317.  
  318. //VB=V2
  319. schermo.setCursor(0,1);
  320. schermo.print(" V2=");// abilita per lcd schermo
  321. schermo.print( vb );// abilita per lcd schermo
  322. schermo.print("% ");
  323.  
  324. //VC=V3
  325. schermo.setCursor(8,0);
  326. schermo.print(" V3=");// abilita per lcd schermo
  327. schermo.print( vc );// abilita per lcd schermo
  328. schermo.print("% ");
  329.  
  330. //VD=V4
  331. schermo.setCursor(8,1);
  332. schermo.print(" V4=");// abilita per lcd schermo
  333. schermo.print( vd );// abilita per lcd schermo
  334. schermo.print("% ");
  335.  
  336. // CALCOLO DEI VALORI DELLA % DI UMIDITA DEL TERRENO
  337. va1 = analogRead(lettura_va);
  338. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  339. va2 = analogRead(lettura_va);
  340. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  341. va3 = analogRead(lettura_va);
  342. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  343. va4 = analogRead(lettura_va);
  344. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  345. va5 = analogRead(lettura_va);
  346. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  347. va6 = analogRead(lettura_va);
  348. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  349. vb1 = analogRead(lettura_vb);
  350. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  351. vb2 = analogRead(lettura_vb);
  352. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  353. vb3 = analogRead(lettura_vb);
  354. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  355. vb4 = analogRead(lettura_vb);
  356. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  357. vb5 = analogRead(lettura_vb);
  358. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  359. vb6 = analogRead(lettura_vb);
  360. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  361. vc1 = analogRead(lettura_vc);
  362. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  363. vc2 = analogRead(lettura_vc);
  364. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  365. vc3 = analogRead(lettura_vc);
  366. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  367. vc4 = analogRead(lettura_vc);
  368. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  369. vc5 = analogRead(lettura_vc);
  370. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  371. vc6 = analogRead(lettura_vc);
  372. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  373. vd1 = analogRead(lettura_vd);
  374. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  375. vd2 = analogRead(lettura_vd);
  376. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  377. vd3 = analogRead(lettura_vd);
  378. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  379. vd4 = analogRead(lettura_vd);
  380. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  381. vd5 = analogRead(lettura_vd);
  382. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  383. vd6 = analogRead(lettura_vd);
  384. delay(tempo_attesa_lettura);//tempo tra una lettura e l'altra
  385.  
  386.  
  387. va = (va1 + va2 + va3 + va4 + va5 + va6)/6;
  388. vb = (vb1 + vb2 + vb3 + vb4 + vb5 + vb6)/6;
  389. vc = (vc1 + vc2 + vc3 + vc4 + vc5 + vc6)/6;
  390. vd = (vd1 + vd2 + vd3 + vd4 + vd5 + vd6)/6;
  391.  
  392. va = constrain (va, 258, 1000);
  393. vb = constrain (vb, 258, 1000);
  394. vc = constrain (vc, 258, 1000);
  395. vd = constrain (vd, 258, 1000);
  396.  
  397. va = map (va, 1022, 258, 0, 95);
  398. vb = map (vb, 1022, 258, 0, 95);
  399. vc = map (vc, 1022, 258, 0, 95);
  400. vd = map (vd, 1022, 258, 0, 95);
  401.  
  402. //PH SENSORE CALCOLI
  403.  
  404. int buf[10];
  405.  
  406.   for(int i=0;i<10;i++)  //10 letture nel vettore
  407.   {
  408.     buf[i]=analogRead(sensore_ph);
  409.     delay(10);
  410.   }
  411.  
  412.   for(int i=0;i<9;i++)  //ordina dal più piccolo al più grande
  413.     for(int j=i+1;j<10;j++)
  414.       if(buf[i]>buf[j])
  415.       {
  416.         int temp=buf[i];
  417.         buf[i]=buf[j];
  418.         buf[j]=temp;
  419.       }
  420.  
  421. int valoreMedio=0;
  422. for(int i=2;i<8;i++)
  423. valoreMedio+=buf[i];
  424. float phValue=(float)valoreMedio*5/1024/6;
  425. phValue=14-(3.5*phValue+Offset);
  426. schermo.clear();
  427. Serial.print("    pH:");  
  428. Serial.print(phValue,2);
  429. Serial.println(" ");
  430. schermo.setCursor(0, 0);//8 abilita per lcd schermo  
  431. schermo.print("PH RILEVATO ");  
  432. schermo.print(phValue,2);
  433. schermo.setCursor(0, 1);//8 abilita per lcd schermo
  434. schermo.print("MIN:");
  435. schermo.print(ph_min_float);
  436. schermo.setCursor(8, 1);
  437. schermo.print("MAX:");
  438. schermo.print(ph_max_float);
  439.  
  440.  
  441. delay(5000);
  442.  
  443. // OPERAZIONI DA SVOLGERE
  444.  
  445. //VA=V1
  446. if (va>prima_soglia) { // settare  l'umidità:  prima soglia minima  
  447. digitalWrite(rele_pompa_1, LOW); //spegne il relay
  448. digitalWrite(rele_elettrovalvola_1, LOW);
  449. Serial.println("");
  450. Serial.print("VASO 1: ");
  451. Serial.print(va);
  452. Serial.print("%");
  453. Serial.println(" Umidità nella norma");
  454. delay (tempo_ciclo_lettura);
  455. }
  456.  else{
  457. if(ph_min_float>phValue){
  458. schermo.clear();
  459. schermo.setCursor(0, 0);// abilita per lcd schermo
  460. schermo.print("PH BASSO:");// abilita per lcd schermo
  461. schermo.print( phValue );
  462. schermo.setCursor(0, 1);// abilita per lcd schermo
  463. schermo.print("CORREZIONE PH! ");
  464. digitalWrite(rele_pompa_ph_min, HIGH);
  465. digitalWrite(rele_elettrovalvola_ph_min, HIGH);
  466. delay(1000);
  467. digitalWrite(rele_pompa_ph_min, LOW);
  468. digitalWrite(rele_elettrovalvola_ph_min, LOW);
  469. delay(3000);
  470. return;
  471. }
  472.  
  473.  
  474. else if (ph_max_float<phValue){
  475. schermo.clear();
  476. schermo.setCursor(0, 0);// abilita per lcd schermo
  477. schermo.print("PH ALTO:");// abilita per lcd schermo
  478. schermo.print( phValue );
  479. schermo.setCursor(0, 1);// abilita per lcd schermo
  480. schermo.print("CORREZIONE PH! ");
  481.  
  482. digitalWrite(rele_pompa_ph_max, HIGH);
  483. digitalWrite(rele_elettrovalvola_ph_max, HIGH);
  484. delay(1000);
  485. digitalWrite(rele_pompa_ph_max, LOW);
  486. digitalWrite(rele_elettrovalvola_ph_max, LOW);
  487. delay(3000);
  488. return;
  489. }
  490.  
  491.  
  492. else if (va<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo && ph_min_float<phValue<ph_max_float)
  493. {
  494. schermo.clear();
  495. schermo.setCursor(0, 0);// abilita per lcd schermo
  496. schermo.print("V1=POMPA ATTIVA");// abilita per lcd schermo
  497. schermo.setCursor(0, 1);// abilita per lcd schermo
  498. schermo.print( va );// abilita per lcd schermo
  499. schermo.print(" % UMIDITA'");
  500. digitalWrite(rele_pompa_1, HIGH);
  501. digitalWrite(rele_elettrovalvola_1, HIGH);
  502. Serial.println("VASO 1 = Attivo la pompa per 10 secondi");
  503. delay(durata_pompa_attiva); // durata pompa attiva
  504.  
  505. schermo.clear();
  506. schermo.setCursor(0, 0);//8 abilita per lcd schermo
  507. schermo.print("ATTESA ASSORBIM.");// abilita per lcd schermo
  508. schermo.setCursor(0, 1);// abilita per lcd schermo
  509. schermo.print( va );// abilita per lcd schermo
  510. schermo.print("% UMIDITA'(V1)");
  511. digitalWrite(rele_pompa_1, LOW);
  512. digitalWrite(rele_elettrovalvola_1, LOW);
  513. Serial.println("VASO 1 = Aspetto 50 secondi per consentire l'assorbimento");
  514. delay(durata_pompa_spenta); // durata pompa spenta
  515.  
  516. }
  517. }
  518.  
  519.  
  520.  
  521. //VB=V2
  522. if (vb>prima_soglia) { // settare  l'umidità:  prima soglia minima
  523. digitalWrite(rele_pompa_2, LOW); //spegne il relay
  524. digitalWrite(rele_elettrovalvola_2, LOW);
  525. Serial.println("");
  526. Serial.print("VASO 2: ");
  527. Serial.print(vb);
  528. Serial.print("%");
  529. Serial.println(" Umidità nella norma");
  530. delay (tempo_ciclo_lettura);
  531. }
  532. else if (vb<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo)
  533. {
  534. schermo.clear();
  535. schermo.setCursor(0, 0);// abilita per lcd schermo
  536. schermo.print("V2=POMPA ATTIVA");// abilita per lcd schermo
  537. schermo.setCursor(0, 1);// abilita per lcd schermo
  538. schermo.print( vb );// abilita per lcd schermo
  539. schermo.print("% UMIDITA'(V2)");
  540. digitalWrite(rele_pompa_2, HIGH);
  541. digitalWrite(rele_elettrovalvola_2, HIGH);
  542. Serial.println("VASO 2 = Attivo la pompa per 10 secondi");
  543. delay(durata_pompa_attiva); // durata pompa attiva
  544. digitalWrite(rele_pompa_2, LOW);
  545. digitalWrite(rele_elettrovalvola_2, LOW);
  546. Serial.println("VASO 2 = Aspetto 50 secondi per consentire l'assorbimento");
  547. delay(durata_pompa_spenta); // durata pompa spenta
  548.  
  549. schermo.clear();
  550. schermo.setCursor(0, 0);//8 abilita per lcd schermo
  551. schermo.print("ATTESA ASSORBIM.");// abilita per lcd schermo
  552. schermo.setCursor(0, 1);// abilita per lcd schermo
  553. schermo.print( vb );// abilita per lcd schermo
  554. schermo.print("% UMIDITA'(V2)");
  555. digitalWrite(rele_pompa_1, LOW);
  556. digitalWrite(rele_elettrovalvola_1, LOW);
  557. Serial.println("VASO 2 = Aspetto 50 secondi per consentire l'assorbimento");
  558. delay(durata_pompa_spenta); // durata pompa spenta
  559.  
  560. }
  561.  
  562.  
  563. //VC=V3
  564. if (vc>prima_soglia) { // settare  l'umidità:  prima soglia minima
  565. digitalWrite(rele_pompa_3, LOW); //spegne il relay
  566. digitalWrite(rele_elettrovalvola_3, LOW);
  567. Serial.println("");
  568. Serial.print("VASO 3: ");
  569. Serial.print(vc);
  570. Serial.print("%");
  571. Serial.println(" Umidità nella norma");
  572. delay (tempo_ciclo_lettura);
  573. }
  574. else if (vc<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo)
  575. {
  576. schermo.clear();
  577. schermo.setCursor(0, 0);// abilita per lcd schermo
  578. schermo.print("V3=POMPA ATTIVA");// abilita per lcd schermo
  579. schermo.setCursor(0, 1);// abilita per lcd schermo
  580. schermo.print( vc );// abilita per lcd schermo
  581. schermo.print("% UMIDITA'(V3)");
  582. digitalWrite(rele_pompa_3, HIGH);
  583. digitalWrite(rele_elettrovalvola_3, HIGH);
  584. Serial.println("VASO 3 = Attivo la pompa per 10 secondi");
  585. delay(durata_pompa_attiva); // durata pompa attiva
  586. digitalWrite(rele_pompa_3, LOW);
  587. digitalWrite(rele_elettrovalvola_3, LOW);
  588. Serial.println("VASO 3 = Aspetto 50 secondi per consentire l'assorbimento");
  589. delay(durata_pompa_spenta); // durata pompa spenta
  590. }
  591.  
  592. //VD=V4
  593. if (vd>prima_soglia) { // settare  l'umidità:  prima soglia minima
  594. digitalWrite(rele_pompa_4, LOW); //spegne il relay
  595. digitalWrite(rele_elettrovalvola_4, LOW);
  596. Serial.println("");
  597. Serial.print("VASO 4: ");
  598. Serial.print(vd);
  599. Serial.print("%");
  600. Serial.println(" Umidità nella norma");
  601. Serial.println("--------------------");
  602. delay (tempo_ciclo_lettura);
  603. }
  604. else if (vd<seconda_soglia && analogRead (A8)>livello_contenitore_piccolo_minimo)
  605.  
  606. // settare  l'umidità  minima  cattiva
  607. {
  608. schermo.clear();
  609. schermo.setCursor(0, 0);// abilita per lcd schermo
  610. schermo.print("V4=POMPA ATTIVA");// abilita per lcd schermo
  611. schermo.setCursor(0, 1);// abilita per lcd schermo
  612. schermo.print( vd );// abilita per lcd schermo
  613. schermo.print("% UMIDITA'(V4)");
  614. digitalWrite(rele_pompa_4, HIGH);
  615. digitalWrite(rele_elettrovalvola_4, HIGH);
  616. Serial.println("VASO 4 = Attivo la pompa per 10 secondi");
  617. delay(durata_pompa_attiva); // durata pompa attiva
  618. digitalWrite(rele_pompa_4, LOW);
  619. digitalWrite(rele_elettrovalvola_4, LOW);
  620. Serial.println("VASO 4 = Aspetto 50 secondi per consentire l'assorbimento");
  621. delay(durata_pompa_spenta); // durata pompa spenta
  622.  
  623.  
  624.  
  625. }
  626.  
  627. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement