lo slave
Dependencies: HCSR04 beep mbed-rtos mbed
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 }
Generated on Tue Jul 12 2022 21:10:51 by 1.7.2