PARCHEGGIO AMICO

Dependencies:   mbed Servo mbed-rtos beep hcsr04 TextLCD

Revision:
9:5be4a23d1e86
Parent:
8:5fc14e646e91
Child:
10:2fd7e922103f
--- a/main.cpp	Wed Apr 03 11:09:37 2019 +0000
+++ b/main.cpp	Thu Apr 04 12:55:52 2019 +0000
@@ -4,12 +4,14 @@
 #include "beep.h"
 #include "TextLCD.h"
 #include "Servo.h"
-#define trigger1 D15
-#define echo1 D14
-#define trigger2 D12
+#define trigger1 PC_8 //sensore 1
+#define echo1 PC_6
+#define trigger2 D12  //sensore 2
 #define echo2 D13
-#define trigger3 PC_6
-#define echo3    PC_8
+#define trigger3 PC_10    //sensore 3
+#define echo3    PC_12
+#define trigger4   D6  //sensore 4
+#define echo4  D8
 /******************************/
 //bluetooth
 Serial pc(USBTX, USBRX);             //istanza oggetto porta seriale
@@ -21,12 +23,13 @@
 HCSR04 sensor1(trigger1, echo1);     //istanza oggetto sensore a distanza
 HCSR04 sensor2(trigger2, echo2);
 HCSR04 sensor3(trigger3, echo3);
+HCSR04 sensor4(trigger4, echo4);
 /******************************/
-DigitalIn mybutton(USER_BUTTON);     //istanza oggetto bottone
+DigitalIn mybutton(D7);     //istanza oggetto bottone
 //Thread thread_sensori; // istanzia oggetto thread 
 
-bool occupata[] = { false, false, false }; 
-int numero_parcheggi = 3;
+bool occupata[5] = { false, false, false,false}; 
+int numero_parcheggi = 4;
 
 //dichiarazione vettore booleano che indica gli stati del parcheggio 
 /*******************************************************************************************************/
@@ -57,23 +60,23 @@
                         pc.printf("il parcheggio numero %d e libero\r\n", i);       //stampa quali parcheggi sono liberi
                         lcd.printf("il parcheggio numero %d e libero\r\n", i);      
                         sos = true;                                                 //se un parcheggio è libero conseguentemente non possono essere tutti occupati
-                        while(1) 
-                        {
-                            servo.write(angle);                      //non toccare 
-                            angle += 10;
-                            if(angle > 90)
-                            {
-                                wait(3);
-                                while(angle != 0 )
+                                 while(1) 
                                 {
-                                    servo.write(angle);
-                                    angle -= 10;
-                                    wait(0.25); 
-                                }
-                           if(angle == 0) break;
-                        }
-                        wait(0.25);
-                    }
+                                  servo.write(angle);                      //non toccare 
+                                   angle += 10;
+                                   if(angle > 90)
+                                 {
+                                       wait(3);
+                                       while(angle != 0 )
+                                      {
+                                            servo.write(angle);
+                                         angle -= 10;
+                                         wait(0.25); 
+                                     }
+                                  if(angle == 0) break;
+                              }
+                              wait(0.25);
+                              }
               //if(occupata[1] == false && occupata[2] == false)    break;     // if(occupata[1]==true && occupata[2]==true) //sos = !sos;
                 }/*else if(sos==false && i==2){
                     pc.printf("tutti i parcheggi sono occupati");
@@ -81,7 +84,7 @@
                     }//else if(occupata[1]==true && occupata[2]==true) pc.printf("tutti i parcheggi sono occupati");
            */
             
-        } while(1);                                                       // ciclo infinito, segnalera sempre i parcheggi liberi
+           } while(1);                                                       // ciclo infinito, segnalera sempre i parcheggi liberi
            //  if(occupata[1]==true && occupata[2]==true) pc.printf("tutti i parcheggi sono occupati");
             if (sos == false)
                 {
@@ -102,25 +105,34 @@
 /******************************/
 void sensori()
 {
-       // float distanza1;
-       // float distanza2;
+        /*float distanza1;
+        float distanza2;
+        float distanza3;*/
         sensor1.start();
         wait_ms(100);
         sensor2.start();         //partono i sensori 
         wait_ms(100);  
         sensor3.start();
         wait_ms(100);
-        //distanza1= sensor1.get_dist_cm() ;  
-        //distanza2=sensor2.get_dist_cm();
-        //pc.printf("%.0fcm\r\n%.0fcm\r\n", distanza1,distanza2);
-        if(sensor1.get_dist_cm() < 10.0 && occupata[0] ==  false)   occupata[1] = true;
-        else    occupata[0] = false;
+        sensor4.start();
+        wait_ms(100);
+       /* distanza1=sensor1.get_dist_cm();  
+        distanza2=sensor2.get_dist_cm();
+        distanza3=sensor3.get_dist_cm();
+        pc.printf("sensore1 %.0fcm\r\n\nsensore2 %.0fcm\r\n\nsensore3 %.0fcm\r\n\n", distanza1,distanza2,distanza3);*/
+        if(sensor1.get_dist_cm() <= 10.0)   occupata[1] = true;
+        else    occupata[1] = false;
             
-        if(sensor2.get_dist_cm() < 10.0 && occupata[2] == false)    occupata[2] = true;
+        if(sensor2.get_dist_cm() <= 10.0)    occupata[2] = true;
         else    occupata[2] = false;
         
-        if(sensor3.get_dist_cm() < 10.0 && occupata[3] == false)    occupata[3] = true;
+        if(sensor3.get_dist_cm() <= 10.0)    occupata[3] = true;
         else    occupata[3] = false;
+        
+        if(sensor4.get_dist_cm() <= 10.0)    occupata[4] = true;
+        else    occupata[4] = false; 
+        
+        
 }          
 
 int main(){