lo slave

Dependencies:   HCSR04 beep mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "rtos.h"
00003 #include "hcsr04.h"
00004 #include "beep.h"
00005 //dichiarazioni let e sensori
00006 //sensori ad ultrasuoni
00007 /******************************/
00008 //bluetooth
00009 Serial blue(D10,D2);
00010 /******************************/
00011 HCSR04 sensor1(D15, D14);
00012 HCSR04 sensor2(D12, D13);
00013 //HCSR04 sensor3(D11, D9);
00014 /******************************/
00015 //Led per le macchine
00016 DigitalOut rossoC(PA_0);//led
00017 DigitalOut gialloC(D5);
00018 DigitalOut verdeC(D3);
00019 /******************************/
00020 //buzzer
00021 Beep buzzer(D4);
00022 /******************************/
00023 //led per i pedoni
00024 DigitalOut rossoP(D6);
00025 DigitalOut gialloP(D7);
00026 DigitalOut verdeP(D8);
00027 /******************************/
00028 /******************************/
00029 //dichiarazione funzioni
00030 void giallo();
00031 void semafori();
00032 /******************************/
00033 int i=0;
00034 char riceviBlue = '0';
00035 /******************************/
00036 
00037 //sensore semaforo 1
00038 /******************************/
00039 void sensori(void const *args){
00040     while(true){    
00041     sensor1.start();            
00042     sensor2.start();        
00043     wait_ms(100);     
00044         if (sensor1.get_dist_cm() < 10||sensor2.get_dist_cm() < 10){        
00045         wait(5);           
00046         sensor1.start();
00047 
00048         sensor2.start();
00049         wait_ms(100);
00050             if (sensor1.get_dist_cm()< 10||sensor2.get_dist_cm()< 10){
00051                 blue.putc('1');
00052                 semafori();            
00053             }
00054              if(blue.readable()){
00055                 riceviBlue = blue.getc();
00056              }
00057             if(riceviBlue == '1')
00058             {
00059                 riceviBlue = '0'; 
00060                 semafori();
00061             }              
00062         }
00063        
00064               
00065     }     
00066 }
00067 /******************************/
00068 
00069 //sensore semaforo 2
00070 /******************************/  
00071 
00072    
00073 /******************************/
00074 
00075 int main(){
00076    //inizializzazione
00077    /******************************/
00078    rossoP=1;
00079    verdeP=0;
00080    gialloP=0;
00081    gialloC=0;
00082    rossoC=0;
00083    verdeC=1;
00084    blue.baud(38400);
00085    Thread th1(sensori);   
00086    /******************************/
00087     while(1) {
00088         if(blue.readable()){
00089             riceviBlue = blue.getc();
00090         }
00091         if(riceviBlue == '1')
00092         {
00093             riceviBlue = '0'; 
00094             semafori();
00095         }
00096         
00097     }  
00098 }
00099 void giallo(){
00100     //giallo per i pedoni e rosso per le macchine
00101     int n;
00102     do{
00103             n=0;
00104             verdeP=0;
00105             gialloP=1;       
00106            //bippata del buzzer
00107            /******************************/
00108             for(i=0;i<10;i++){
00109                 buzzer.beep(500,0.1);
00110                 gialloP=1;
00111                 wait_ms(200);
00112                 buzzer.nobeep();
00113                 buzzer.beep(1000,0.1);
00114                 gialloP=1;
00115                 gialloP=1;
00116                 wait_ms(200);
00117                 buzzer.nobeep();                                
00118                 gialloP=1;
00119             } 
00120             /******************************/                       
00121             wait_ms(100);                 
00122     }while(n==1);
00123     wait_ms(100);    //per far si che arrivi il segnale al bluetooth del slave mandato dal master  
00124 }
00125 void semafori(){
00126     //giallo per le macchine, rosso per i pedoni
00127             verdeC=0;
00128             gialloC=1;
00129             rossoC=0;
00130             wait(4);
00131             //rosso per le macchine, verde per i pedoni
00132             buzzer.beep(1200,10);  
00133             gialloC=0;
00134             rossoC=1;            
00135             rossoP=0;
00136             verdeP=1;            
00137             wait(10);
00138             buzzer.nobeep();
00139             //giallo per i pedoni e rosso per le macchine
00140             do{   
00141                 giallo();
00142                 riceviBlue=blue.getc();
00143                 
00144             }while(riceviBlue=='A');
00145             //rosso ai pedoni e verde alle automobili
00146             gialloP=0;
00147             rossoP=1; 
00148             rossoC=0;
00149             verdeC=1;
00150             wait_ms(5000);
00151            
00152 }