prova codice locale

Dependencies:   mbed ESP8266 Servo

Revision:
6:3bb8c63c1561
Parent:
5:f2e73e0562d0
Child:
7:c79c53363102
--- a/main.cpp	Sat Oct 01 17:13:30 2016 +0000
+++ b/main.cpp	Sun Oct 09 09:06:46 2016 +0000
@@ -1,14 +1,21 @@
 #include "mbed.h"
 #include "com.h"
+#include "Servo.h"
+
+
 
 #define TOT_UMIDITA 3300
 #define TOT_RUGIADA 3300
 #define SEND_TIME   50
 
+
+
+Servo myservo(D5);
 // test programma piantina
 AnalogIn umidit(A0);
 AnalogIn lux(A1);
 AnalogIn rugi(A2);
+AnalogIn temp(A3);
 Timer timer;
 DigitalOut irriga(PA_7);// irriga
 DigitalOut rosso(PA_9);// terreno secco
@@ -19,76 +26,96 @@
 
 int main()
 {
+    pc.baud(9600);
     float tempo;//tempo trascorso
     float umid;//umidità
     float luce;// luce
     float rugiada;// rugiada
+    float temperatura;// temperarura amb
 #define priority 1  // ciascuna pianta ha una propria priorità // priorità massima =1
-#define tmax 5000 // tempo massimo di attesa prima di far partire l'irrigazione   
+#define tmax 5 // tempo massimo di attesa prima di far partire l'irrigazione   
     int tmaxr=tmax*priority ;// reale tempo da attendere tenendo conto della priorità
     int ti=0;
 
     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
-
+// test funzionamento led
+    rosso=1;
+    wait(1);
+    rosso=0;
+    blu=1;
+    wait(1);
+    blu=0;
+    verde=1;
+    wait(1);
+    verde=0;
+ myservo.calibrate(0.0014, 45.0); // calibrazione servo
+myservo =0.5;
+ pc.printf("servo calibrato ");
     while(1) {
         // Letture dei sensori
         if(ti){
             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
             if( tempo>=tmaxr) {
-                irriga=1;
-            }
-        }
+                myservo = 1.0;// irriga
+                 timer.stop();
+                timer.reset();
+                // lampeggio led rosso 4 volte per segnalare che ha dovuto irrigare forzatamente 
+               for( int i=0;i<4;i++){
+                rosso=1;
+                blu=0;
+                verde=0;
+                wait(1);
+                rosso=0;
+                blu=0;
+                verde=0;
+                }
+           }
+        } 
         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
         umid = umid * 3300; // Change the value to be in the 0 to 3300 range
         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
         luce = luce * 3300; // Change the value to be in the 0 to 3300 range
         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
         rugiada = rugiada * 3300; // Change the value to be in the 0 to 3300 range
+        
+        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
+         temperatura*=(3.685503686*100);
+         temperatura-=10;
+         
         // ragionamenti
-
+pc.printf("luce è %f\n",luce);
         // pc.printf("umid = %.0f mV \n", umid);
         //   pc.printf("luce = %.0f mV \n", luce);
-        if (luce >2480) { // se la luce è bassa ( notte)
+        if (luce<2000) { // se la luce è bassa ( notte)
 
 
             pc.printf("Il sole e' tramontato\n");
             
-            if (umid>3100) { // se il terreno è secco
+            if (umid>1500) { // se il terreno è secco
                 pc.printf("terreno secco");
-                rosso=1;
-                blu=0;
+                rosso=0;
+                blu=1;
                 verde=0;
                 timer.start();
                 ti=1;
 
             }
 
-            else if((umid>2000)&&(umid<2750)) { // mediamente umido
-
-                pc.printf("terreno mediamente umido");
-                rosso=0;
+             else if(umid<1500) { // se èmolto  umido
+                pc.printf("terreno   umido");
+                rosso = 0;
                 blu=0;
                 verde=1;
                 timer.stop();
                 timer.reset();
-                irriga=0;// smetti di irrigare
-                 ti=0;
-
-            } else if(umid<2000) { // se èmolto  umido
-                pc.printf("terreno molto  umido");
-                rosso = 0;
-                blu=1;
-                verde=0;
-                timer.stop();
-                timer.reset();
-                irriga=0;// smetti di irrigare
+                
                  ti=0;
             }
         } else {
             pc.printf("e' ancora giorno");
             // se è giorno non ha senso illuminare i vasi
 
-            if (umid>3100) { // se il terreno è secco <10%
+            if (umid>1500) { // se il terreno è secco <10%
                 pc.printf("terreno secco");
 
                 timer.start();
@@ -96,27 +123,18 @@
 
             }
 
-            else if((umid>2000)&&(umid<2750)) { // mediamente umido
-
-                pc.printf("terreno mediamente umido");
+             else if(umid<1500) { // se   umido
+                pc.printf("terreno  umido");
 
                 timer.stop();
                 timer.reset();
-                irriga=0;// smetti di irrigare
-                 ti=0;
-
-            } else if(umid<2000) { // se èmolto  umido
-                pc.printf("terreno molto  umido");
-
-                timer.stop();
-                timer.reset();
-                irriga=0;// smetti di irrigare
+                
                  ti=0;
             }
         }
         wait(0.2); // 200 ms
-    
-        if(++time_to_send_data == SEND_TIME)
+       //  pc.printf("la temperatura ambiente è %f\n",temperatura);
+      /*  if(++time_to_send_data == SEND_TIME)//Invio i dagtiì
         {//è arrivato finalmente il tempo di inviare!
             time_to_send_data^=time_to_send_data;//=0;
             connect(esp);
@@ -125,6 +143,6 @@
             perc = (int)(TOT_RUGIADA*umid/100.0);
             send_data(esp,3,perc);
             disconnect(esp);
-        }
+        }*/
     }
 }