prova codice locale

Dependencies:   mbed ESP8266 Servo

Committer:
deangelis1993
Date:
Sat Oct 01 16:52:41 2016 +0000
Revision:
3:5812a96db95f
Parent:
1:ce3a084f558e
Child:
4:5bb51ac9cf4a
ora l'ho controllato almeno sintatticamente va...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vidica94 0:f1c2b8a37976 1 #include "mbed.h"
deangelis1993 3:5812a96db95f 2 #include "com.h"
vidica94 0:f1c2b8a37976 3
deangelis1993 1:ce3a084f558e 4 #define TOT_UMIDITA 2300
deangelis1993 1:ce3a084f558e 5 #define TOT_RUGIADA 2300
deangelis1993 1:ce3a084f558e 6 #define SEND_TIME 50
deangelis1993 1:ce3a084f558e 7
vidica94 0:f1c2b8a37976 8 // test programma piantina
vidica94 0:f1c2b8a37976 9 AnalogIn umidit(A0);
vidica94 0:f1c2b8a37976 10 AnalogIn lux(A1);
vidica94 0:f1c2b8a37976 11 AnalogIn rugi(A2);
vidica94 0:f1c2b8a37976 12 Timer timer;
vidica94 0:f1c2b8a37976 13 DigitalOut irriga(PA_7);// irriga
vidica94 0:f1c2b8a37976 14 DigitalOut rosso(PA_9);// terreno secco
vidica94 0:f1c2b8a37976 15 DigitalOut verde(PB_6);// terreno mediamente umido
vidica94 0:f1c2b8a37976 16 DigitalOut blu(PC_7);// terreno innaffiato da poco o molto umido
vidica94 0:f1c2b8a37976 17 Serial pc(SERIAL_TX, SERIAL_RX);
deangelis1993 1:ce3a084f558e 18 ESP8266 esp(PB_10, PB_11,115200);
deangelis1993 1:ce3a084f558e 19
vidica94 0:f1c2b8a37976 20 int main()
vidica94 0:f1c2b8a37976 21 {
vidica94 0:f1c2b8a37976 22 float tempo;//tempo trascorso
vidica94 0:f1c2b8a37976 23 float umid;//umidità
vidica94 0:f1c2b8a37976 24 float luce;// luce
vidica94 0:f1c2b8a37976 25 float rugiada;// rugiada
vidica94 0:f1c2b8a37976 26 #define priority 1 // ciascuna pianta ha una propria priorità // priorità massima =1
vidica94 0:f1c2b8a37976 27 #define tmax 5000 // tempo massimo di attesa prima di far partire l'irrigazione
vidica94 0:f1c2b8a37976 28 int tmaxr=tmax*priority ;// reale tempo da attendere tenendo conto della priorità
vidica94 0:f1c2b8a37976 29 int ti=0;
vidica94 0:f1c2b8a37976 30
deangelis1993 1:ce3a084f558e 31 uint8_t time_to_send_data = 0;//ogni 5 di questo timer significa che è passato un secondo, all'incirca, tramite la costante SEND_TIME decidiamo ogni quando inviare il dato
deangelis1993 1:ce3a084f558e 32
vidica94 0:f1c2b8a37976 33 while(1) {
vidica94 0:f1c2b8a37976 34 // Letture dei sensori
vidica94 0:f1c2b8a37976 35 if(ti){
deangelis1993 1:ce3a084f558e 36 tempo = timer.read(); // Converts and read the analog input value (value from 0.0 to 1.0) il livello di restituzione è normalizzato al massimo valore
deangelis1993 1:ce3a084f558e 37 if( tempo>=tmaxr) {
deangelis1993 1:ce3a084f558e 38 irriga=1;
deangelis1993 1:ce3a084f558e 39 }
vidica94 0:f1c2b8a37976 40 }
vidica94 0:f1c2b8a37976 41 umid = umidit.read(); // Converts and read the analog input value (value from 0.0 to 1.0) il livello di restituzione è normalizzato al massimo valore
vidica94 0:f1c2b8a37976 42 umid = umid * 3300; // Change the value to be in the 0 to 3300 range
vidica94 0:f1c2b8a37976 43 luce = lux.read(); // Converts and read the analog input value (value from 0.0 to 1.0) il livello di restituzione è normalizzato al massimo valore
vidica94 0:f1c2b8a37976 44 luce = luce * 3300; // Change the value to be in the 0 to 3300 range
vidica94 0:f1c2b8a37976 45 rugiada = rugi.read(); // Converts and read the analog input value (value from 0.0 to 1.0) il livello di restituzione è normalizzato al massimo valore
vidica94 0:f1c2b8a37976 46 rugiada = rugiada * 3300; // Change the value to be in the 0 to 3300 range
vidica94 0:f1c2b8a37976 47 // ragionamenti
vidica94 0:f1c2b8a37976 48
vidica94 0:f1c2b8a37976 49 // pc.printf("umid = %.0f mV \n", umid);
vidica94 0:f1c2b8a37976 50 // pc.printf("luce = %.0f mV \n", luce);
deangelis1993 1:ce3a084f558e 51 if (luce >2.48) { // se la luce è bassa ( notte)
vidica94 0:f1c2b8a37976 52
vidica94 0:f1c2b8a37976 53
vidica94 0:f1c2b8a37976 54 pc.printf("Il sole e' tramontato\n");
vidica94 0:f1c2b8a37976 55
deangelis1993 1:ce3a084f558e 56 if (umid>3.1) { // se il terreno è secco
vidica94 0:f1c2b8a37976 57 pc.printf("terreno secco");
vidica94 0:f1c2b8a37976 58 rosso=1;
vidica94 0:f1c2b8a37976 59 blu=0;
vidica94 0:f1c2b8a37976 60 verde=0;
vidica94 0:f1c2b8a37976 61 timer.start();
vidica94 0:f1c2b8a37976 62 ti=1;
vidica94 0:f1c2b8a37976 63
vidica94 0:f1c2b8a37976 64 }
vidica94 0:f1c2b8a37976 65
deangelis1993 1:ce3a084f558e 66 else if((umid>2)&&(umid<2.75)) { // mediamente umido
vidica94 0:f1c2b8a37976 67
vidica94 0:f1c2b8a37976 68 pc.printf("terreno mediamente umido");
vidica94 0:f1c2b8a37976 69 rosso=0;
vidica94 0:f1c2b8a37976 70 blu=0;
vidica94 0:f1c2b8a37976 71 verde=1;
vidica94 0:f1c2b8a37976 72 timer.stop();
vidica94 0:f1c2b8a37976 73 timer.reset();
vidica94 0:f1c2b8a37976 74 irriga=0;// smetti di irrigare
vidica94 0:f1c2b8a37976 75 ti=0;
vidica94 0:f1c2b8a37976 76
vidica94 0:f1c2b8a37976 77 } else if(umid<2) { // se èmolto umido
vidica94 0:f1c2b8a37976 78 pc.printf("terreno molto umido");
vidica94 0:f1c2b8a37976 79 rosso = 0;
vidica94 0:f1c2b8a37976 80 blu=1;
vidica94 0:f1c2b8a37976 81 verde=0;
vidica94 0:f1c2b8a37976 82 timer.stop();
vidica94 0:f1c2b8a37976 83 timer.reset();
vidica94 0:f1c2b8a37976 84 irriga=0;// smetti di irrigare
vidica94 0:f1c2b8a37976 85 ti=0;
vidica94 0:f1c2b8a37976 86 }
vidica94 0:f1c2b8a37976 87 } else {
vidica94 0:f1c2b8a37976 88 pc.printf("e' ancora giorno");
vidica94 0:f1c2b8a37976 89 // se è giorno non ha senso illuminare i vasi
vidica94 0:f1c2b8a37976 90
deangelis1993 1:ce3a084f558e 91 if (umid>3.1) { // se il terreno è secco <10%
vidica94 0:f1c2b8a37976 92 pc.printf("terreno secco");
vidica94 0:f1c2b8a37976 93
vidica94 0:f1c2b8a37976 94 timer.start();
vidica94 0:f1c2b8a37976 95 ti=1;
vidica94 0:f1c2b8a37976 96
vidica94 0:f1c2b8a37976 97 }
vidica94 0:f1c2b8a37976 98
deangelis1993 1:ce3a084f558e 99 else if((umid>2)&&(umid<2.75)) { // mediamente umido
vidica94 0:f1c2b8a37976 100
vidica94 0:f1c2b8a37976 101 pc.printf("terreno mediamente umido");
vidica94 0:f1c2b8a37976 102
vidica94 0:f1c2b8a37976 103 timer.stop();
vidica94 0:f1c2b8a37976 104 timer.reset();
vidica94 0:f1c2b8a37976 105 irriga=0;// smetti di irrigare
vidica94 0:f1c2b8a37976 106 ti=0;
vidica94 0:f1c2b8a37976 107
deangelis1993 3:5812a96db95f 108 } else if(umid<2.0) { // se èmolto umido
vidica94 0:f1c2b8a37976 109 pc.printf("terreno molto umido");
vidica94 0:f1c2b8a37976 110
vidica94 0:f1c2b8a37976 111 timer.stop();
vidica94 0:f1c2b8a37976 112 timer.reset();
vidica94 0:f1c2b8a37976 113 irriga=0;// smetti di irrigare
vidica94 0:f1c2b8a37976 114 ti=0;
vidica94 0:f1c2b8a37976 115 }
vidica94 0:f1c2b8a37976 116 }
vidica94 0:f1c2b8a37976 117 wait(0.2); // 200 ms
deangelis1993 1:ce3a084f558e 118
deangelis1993 1:ce3a084f558e 119 if(++time_to_send_data == SEND_TIME)
deangelis1993 1:ce3a084f558e 120 {//è arrivato finalmente il tempo di inviare!
deangelis1993 1:ce3a084f558e 121 time_to_send_data^=time_to_send_data;//=0;
deangelis1993 1:ce3a084f558e 122 connect(esp);
deangelis1993 1:ce3a084f558e 123 uint8_t perc = (int)(TOT_UMIDITA*umid/100.0);
deangelis1993 1:ce3a084f558e 124 send_data(esp,1,perc);//idx 1 è umidità terreno, 3 è bagnatura fogliare
deangelis1993 3:5812a96db95f 125 perc = (int)(TOT_RUGIADA*umid/100.0);
deangelis1993 1:ce3a084f558e 126 send_data(esp,3,perc);
deangelis1993 1:ce3a084f558e 127 disconnect(esp);
deangelis1993 1:ce3a084f558e 128 }
vidica94 0:f1c2b8a37976 129 }
vidica94 0:f1c2b8a37976 130 }