prova codice locale

Dependencies:   mbed ESP8266 Servo

Committer:
vidica94
Date:
Sun Oct 09 09:06:46 2016 +0000
Revision:
6:3bb8c63c1561
Parent:
5:f2e73e0562d0
Child:
7:c79c53363102
hacktaon

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 6:3bb8c63c1561 3 #include "Servo.h"
vidica94 6:3bb8c63c1561 4
vidica94 6:3bb8c63c1561 5
vidica94 0:f1c2b8a37976 6
deangelis1993 4:5bb51ac9cf4a 7 #define TOT_UMIDITA 3300
deangelis1993 4:5bb51ac9cf4a 8 #define TOT_RUGIADA 3300
deangelis1993 1:ce3a084f558e 9 #define SEND_TIME 50
deangelis1993 1:ce3a084f558e 10
vidica94 6:3bb8c63c1561 11
vidica94 6:3bb8c63c1561 12
vidica94 6:3bb8c63c1561 13 Servo myservo(D5);
vidica94 0:f1c2b8a37976 14 // test programma piantina
vidica94 0:f1c2b8a37976 15 AnalogIn umidit(A0);
vidica94 0:f1c2b8a37976 16 AnalogIn lux(A1);
vidica94 0:f1c2b8a37976 17 AnalogIn rugi(A2);
vidica94 6:3bb8c63c1561 18 AnalogIn temp(A3);
vidica94 0:f1c2b8a37976 19 Timer timer;
vidica94 0:f1c2b8a37976 20 DigitalOut irriga(PA_7);// irriga
vidica94 0:f1c2b8a37976 21 DigitalOut rosso(PA_9);// terreno secco
vidica94 0:f1c2b8a37976 22 DigitalOut verde(PB_6);// terreno mediamente umido
vidica94 0:f1c2b8a37976 23 DigitalOut blu(PC_7);// terreno innaffiato da poco o molto umido
vidica94 0:f1c2b8a37976 24 Serial pc(SERIAL_TX, SERIAL_RX);
deangelis1993 1:ce3a084f558e 25 ESP8266 esp(PB_10, PB_11,115200);
deangelis1993 1:ce3a084f558e 26
vidica94 0:f1c2b8a37976 27 int main()
vidica94 0:f1c2b8a37976 28 {
vidica94 6:3bb8c63c1561 29 pc.baud(9600);
vidica94 0:f1c2b8a37976 30 float tempo;//tempo trascorso
vidica94 0:f1c2b8a37976 31 float umid;//umidità
vidica94 0:f1c2b8a37976 32 float luce;// luce
vidica94 0:f1c2b8a37976 33 float rugiada;// rugiada
vidica94 6:3bb8c63c1561 34 float temperatura;// temperarura amb
vidica94 0:f1c2b8a37976 35 #define priority 1 // ciascuna pianta ha una propria priorità // priorità massima =1
vidica94 6:3bb8c63c1561 36 #define tmax 5 // tempo massimo di attesa prima di far partire l'irrigazione
vidica94 0:f1c2b8a37976 37 int tmaxr=tmax*priority ;// reale tempo da attendere tenendo conto della priorità
vidica94 0:f1c2b8a37976 38 int ti=0;
vidica94 0:f1c2b8a37976 39
deangelis1993 1:ce3a084f558e 40 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
vidica94 6:3bb8c63c1561 41 // test funzionamento led
vidica94 6:3bb8c63c1561 42 rosso=1;
vidica94 6:3bb8c63c1561 43 wait(1);
vidica94 6:3bb8c63c1561 44 rosso=0;
vidica94 6:3bb8c63c1561 45 blu=1;
vidica94 6:3bb8c63c1561 46 wait(1);
vidica94 6:3bb8c63c1561 47 blu=0;
vidica94 6:3bb8c63c1561 48 verde=1;
vidica94 6:3bb8c63c1561 49 wait(1);
vidica94 6:3bb8c63c1561 50 verde=0;
vidica94 6:3bb8c63c1561 51 myservo.calibrate(0.0014, 45.0); // calibrazione servo
vidica94 6:3bb8c63c1561 52 myservo =0.5;
vidica94 6:3bb8c63c1561 53 pc.printf("servo calibrato ");
vidica94 0:f1c2b8a37976 54 while(1) {
vidica94 0:f1c2b8a37976 55 // Letture dei sensori
vidica94 0:f1c2b8a37976 56 if(ti){
deangelis1993 1:ce3a084f558e 57 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 58 if( tempo>=tmaxr) {
vidica94 6:3bb8c63c1561 59 myservo = 1.0;// irriga
vidica94 6:3bb8c63c1561 60 timer.stop();
vidica94 6:3bb8c63c1561 61 timer.reset();
vidica94 6:3bb8c63c1561 62 // lampeggio led rosso 4 volte per segnalare che ha dovuto irrigare forzatamente
vidica94 6:3bb8c63c1561 63 for( int i=0;i<4;i++){
vidica94 6:3bb8c63c1561 64 rosso=1;
vidica94 6:3bb8c63c1561 65 blu=0;
vidica94 6:3bb8c63c1561 66 verde=0;
vidica94 6:3bb8c63c1561 67 wait(1);
vidica94 6:3bb8c63c1561 68 rosso=0;
vidica94 6:3bb8c63c1561 69 blu=0;
vidica94 6:3bb8c63c1561 70 verde=0;
vidica94 6:3bb8c63c1561 71 }
vidica94 6:3bb8c63c1561 72 }
vidica94 6:3bb8c63c1561 73 }
vidica94 0:f1c2b8a37976 74 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 75 umid = umid * 3300; // Change the value to be in the 0 to 3300 range
vidica94 0:f1c2b8a37976 76 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 77 luce = luce * 3300; // Change the value to be in the 0 to 3300 range
vidica94 0:f1c2b8a37976 78 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 79 rugiada = rugiada * 3300; // Change the value to be in the 0 to 3300 range
vidica94 6:3bb8c63c1561 80
vidica94 6:3bb8c63c1561 81 temperatura = temp.read(); // Converts and read the analog input value (value from 0.0 to 1.0) il livello di restituzione è normalizzato al massimo valore
vidica94 6:3bb8c63c1561 82 temperatura*=(3.685503686*100);
vidica94 6:3bb8c63c1561 83 temperatura-=10;
vidica94 6:3bb8c63c1561 84
vidica94 0:f1c2b8a37976 85 // ragionamenti
vidica94 6:3bb8c63c1561 86 pc.printf("luce è %f\n",luce);
vidica94 0:f1c2b8a37976 87 // pc.printf("umid = %.0f mV \n", umid);
vidica94 0:f1c2b8a37976 88 // pc.printf("luce = %.0f mV \n", luce);
vidica94 6:3bb8c63c1561 89 if (luce<2000) { // se la luce è bassa ( notte)
vidica94 0:f1c2b8a37976 90
vidica94 0:f1c2b8a37976 91
vidica94 0:f1c2b8a37976 92 pc.printf("Il sole e' tramontato\n");
vidica94 0:f1c2b8a37976 93
vidica94 6:3bb8c63c1561 94 if (umid>1500) { // se il terreno è secco
vidica94 0:f1c2b8a37976 95 pc.printf("terreno secco");
vidica94 6:3bb8c63c1561 96 rosso=0;
vidica94 6:3bb8c63c1561 97 blu=1;
vidica94 0:f1c2b8a37976 98 verde=0;
vidica94 0:f1c2b8a37976 99 timer.start();
vidica94 0:f1c2b8a37976 100 ti=1;
vidica94 0:f1c2b8a37976 101
vidica94 0:f1c2b8a37976 102 }
vidica94 0:f1c2b8a37976 103
vidica94 6:3bb8c63c1561 104 else if(umid<1500) { // se èmolto umido
vidica94 6:3bb8c63c1561 105 pc.printf("terreno umido");
vidica94 6:3bb8c63c1561 106 rosso = 0;
vidica94 0:f1c2b8a37976 107 blu=0;
vidica94 0:f1c2b8a37976 108 verde=1;
vidica94 0:f1c2b8a37976 109 timer.stop();
vidica94 0:f1c2b8a37976 110 timer.reset();
vidica94 6:3bb8c63c1561 111
vidica94 0:f1c2b8a37976 112 ti=0;
vidica94 0:f1c2b8a37976 113 }
vidica94 0:f1c2b8a37976 114 } else {
vidica94 0:f1c2b8a37976 115 pc.printf("e' ancora giorno");
vidica94 0:f1c2b8a37976 116 // se è giorno non ha senso illuminare i vasi
vidica94 0:f1c2b8a37976 117
vidica94 6:3bb8c63c1561 118 if (umid>1500) { // se il terreno è secco <10%
vidica94 0:f1c2b8a37976 119 pc.printf("terreno secco");
vidica94 0:f1c2b8a37976 120
vidica94 0:f1c2b8a37976 121 timer.start();
vidica94 0:f1c2b8a37976 122 ti=1;
vidica94 0:f1c2b8a37976 123
vidica94 0:f1c2b8a37976 124 }
vidica94 0:f1c2b8a37976 125
vidica94 6:3bb8c63c1561 126 else if(umid<1500) { // se umido
vidica94 6:3bb8c63c1561 127 pc.printf("terreno umido");
vidica94 0:f1c2b8a37976 128
vidica94 0:f1c2b8a37976 129 timer.stop();
vidica94 0:f1c2b8a37976 130 timer.reset();
vidica94 6:3bb8c63c1561 131
vidica94 0:f1c2b8a37976 132 ti=0;
vidica94 0:f1c2b8a37976 133 }
vidica94 0:f1c2b8a37976 134 }
vidica94 0:f1c2b8a37976 135 wait(0.2); // 200 ms
vidica94 6:3bb8c63c1561 136 // pc.printf("la temperatura ambiente è %f\n",temperatura);
vidica94 6:3bb8c63c1561 137 /* if(++time_to_send_data == SEND_TIME)//Invio i dagtiì
deangelis1993 1:ce3a084f558e 138 {//è arrivato finalmente il tempo di inviare!
deangelis1993 1:ce3a084f558e 139 time_to_send_data^=time_to_send_data;//=0;
deangelis1993 1:ce3a084f558e 140 connect(esp);
deangelis1993 1:ce3a084f558e 141 uint8_t perc = (int)(TOT_UMIDITA*umid/100.0);
deangelis1993 1:ce3a084f558e 142 send_data(esp,1,perc);//idx 1 è umidità terreno, 3 è bagnatura fogliare
deangelis1993 3:5812a96db95f 143 perc = (int)(TOT_RUGIADA*umid/100.0);
deangelis1993 1:ce3a084f558e 144 send_data(esp,3,perc);
deangelis1993 1:ce3a084f558e 145 disconnect(esp);
vidica94 6:3bb8c63c1561 146 }*/
vidica94 0:f1c2b8a37976 147 }
vidica94 0:f1c2b8a37976 148 }