Il master
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 /******************************/ 00006 //bluetooth 00007 Serial blue(D10,D2);//tx e rx 00008 /******************************/ 00009 //sensori ad ultrasuoni 00010 HCSR04 sensor1(D15, D14); 00011 HCSR04 sensor2(D12, D13); 00012 HCSR04 sensor3(D11, D9); 00013 /******************************/ 00014 //dichiarazioni led 00015 //Led per le macchine 00016 DigitalOut rossoC(PA_0); 00017 DigitalOut gialloC(D5); 00018 DigitalOut verdeC(D3); 00019 /******************************/ 00020 //led per i pedoni 00021 DigitalOut rossoP(D6); 00022 DigitalOut gialloP(D7); 00023 DigitalOut verdeP(D8); 00024 /******************************/ 00025 //buzzer 00026 Beep buzzer(D4); 00027 /******************************/ 00028 /******************************/ 00029 //dichiarazione funzioni 00030 void giallo(); 00031 void semafori(); 00032 /******************************/ 00033 //variabili 00034 int i=0; 00035 char riceviBlue = '0'; 00036 bool gianello= false; 00037 bool visto = false; 00038 /******************************/ 00039 00040 //sensore semaforo 1 00041 /******************************/ 00042 void sensori(){ 00043 while(!visto && !gianello){ 00044 sensor1.start(); 00045 wait_ms(100); 00046 sensor2.start(); 00047 wait_ms(100); 00048 if(sensor1.get_dist_cm()<10||sensor2.get_dist_cm()<10){ 00049 wait(4); 00050 sensor1.start(); 00051 wait_ms(100); 00052 sensor2.start(); 00053 wait_ms(100); 00054 if(sensor1.get_dist_cm()<10||sensor2.get_dist_cm()<10&&!gianello){ 00055 visto = true; 00056 blue.putc('A'); 00057 wait_ms(100); 00058 semafori(); 00059 visto=false; 00060 } 00061 } 00062 } 00063 } 00064 /******************************/ 00065 //controllo borini 00066 /******************************/ 00067 void borini (void const *args){ 00068 while(true){ 00069 if(blue.readable()){ 00070 riceviBlue = blue.getc(); 00071 } 00072 if(riceviBlue == 'B') 00073 { 00074 gianello=true; 00075 riceviBlue='0'; 00076 semafori(); 00077 riceviBlue='0'; 00078 gianello=false; 00079 visto=false; 00080 } 00081 } 00082 } 00083 /******************************/ 00084 int main(){ 00085 //inizializzazione 00086 /******************************/ 00087 rossoP=1; 00088 verdeP=0; 00089 gialloP=0; 00090 gialloC=0; 00091 rossoC=0; 00092 verdeC=1; 00093 blue.baud(38400); 00094 /******************************/ 00095 Thread th1(borini); 00096 while(1){ 00097 if(!gianello){ 00098 sensori(); 00099 } 00100 } 00101 } 00102 void giallo(){ 00103 int n; 00104 int cont =0; 00105 do{ 00106 n=0; 00107 verdeP=0; 00108 gialloP=1; 00109 //bippata del buzzer 00110 /******************************/ 00111 for(i=0;i<10;i++){ 00112 buzzer.beep(1500,50); 00113 wait_ms(200); 00114 buzzer.nobeep(); 00115 buzzer.beep(2000,50); 00116 wait_ms(200); 00117 buzzer.nobeep(); 00118 } 00119 /******************************/ 00120 sensor3.start(); 00121 wait_ms(100); 00122 if(sensor3.get_dist_cm()<48){ 00123 cont++; 00124 if(cont<=2) 00125 blue.putc('L'); 00126 n=1; 00127 } 00128 wait_ms(100); 00129 }while(n==1&&cont<=2); 00130 blue.putc('0'); 00131 wait_ms(200); 00132 } 00133 void semafori(){ 00134 //giallo per le macchine, rosso per i pedoni 00135 verdeC=0; 00136 gialloC=1; 00137 rossoC=0; 00138 wait(4); 00139 //rosso per le macchine, verde per i pedoni 00140 buzzer.beep(1200,50); 00141 gialloC=0; 00142 rossoC=1; 00143 rossoP=0; 00144 verdeP=1; 00145 wait(10); 00146 buzzer.nobeep(); 00147 //giallo per i pedoni e rosso per le macchine 00148 giallo(); 00149 //rosso ai pedoni e verde alle automobili 00150 gialloP=0; 00151 rossoP=1; 00152 rossoC=0; 00153 verdeC=1; 00154 wait_ms(5000); 00155 }
Generated on Fri Jul 15 2022 21:46:21 by 1.7.2