Lavoro terminato
Dependencies: mbed Servo mbed-rtos beep hcsr04 TextLCD
Diff: main.cpp
- 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(){