prova codice locale
Dependencies: mbed ESP8266 Servo
main.cpp@3:5812a96db95f, 2016-10-01 (annotated)
- 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?
User | Revision | Line number | New 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 | } |