prog

Dependencies:   mbed Servo mbed-rtos beep hcsr04 TextLCD

main.cpp

Committer:
CiroSamu
Date:
2019-03-28
Revision:
6:0088253be231
Parent:
5:8eb27286a3e3
Child:
7:8ad50e27d002

File content as of revision 6:0088253be231:

#include "mbed.h"
#include "rtos.h"
#include "hcsr04.h"
#include "beep.h"
#define trigger1 D15
#define echo1 D14
#define trigger2 D12
#define echo2 D13
/******************************/
//bluetooth
Serial pc(USBTX, USBRX);//tx e rx
/******************************/
//sensori ad ultrasuoni
HCSR04 sensor1(trigger1, echo1);    
HCSR04 sensor2(trigger2, echo2);
//HCSR04 sensor3(D11, D9);
/******************************/
DigitalIn mybutton(USER_BUTTON);
//Thread thread_sensori; // istanzia oggetto thread 

bool occupata[3] = {false,false,false};
/******************************/ 
 void button_thread(void const *args){
     bool sos= false;
//false== libero
//true== occupato
    while(1){
        if (mybutton==0){
           
                
            int i=0;
            sos = false;
            do{
               i++;
               if(occupata[i]== false){
                    pc.printf("il parcheggio numero %d e libero\t",i);
                    sos=true;
                   // if(occupata[1]==true && occupata[2]==true) //sos = !sos;
                }/*else if(sos==false && i==2){
                    pc.printf("tutti i parcheggi sono occupati");
                    break;
                    }//else if(occupata[1]==true && occupata[2]==true) pc.printf("tutti i parcheggi sono occupati");
           */
            }while(i<2);
           //  if(occupata[1]==true && occupata[2]==true) pc.printf("tutti i parcheggi sono occupati");
        if(sos==false)                     pc.printf("tutti i parcheggi sono occupati");

        }
        
           
    }
}
//sensore semaforo 1
/******************************/
void sensori(){
        float distanza1;
        float distanza2;
        sensor1.start();
        wait_ms(100);
        sensor2.start();         //partono i sensori 
        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[1] ==  false)    //se uno dei sensori capta una distanza minore 10
            occupata[1] = true;
        else
            occupata[1] = false;
            
        if(sensor2.get_dist_cm() < 10.0 && occupata[2] == false)      //se uno dei sensori capta una distanza minore a 10 e gianello è false
            occupata[2] = true;
        else
            occupata[2] = false;
  }          

int main(){
   // pc.printf("prova");
    //while(true) {
       //Thread button_th(button_thread);
       //int i=0;
    
       Thread button_th(button_thread);
       while(1){
             sensori();
        }
}