slave funzionante

Dependencies:   HCSR04 beep mbed-rtos mbed

Committer:
huntR
Date:
Fri Apr 28 19:45:21 2017 +0000
Revision:
0:ffca8ab7f43f
slave funzionante

Who changed what in which revision?

UserRevisionLine numberNew contents of line
huntR 0:ffca8ab7f43f 1 #include "mbed.h"
huntR 0:ffca8ab7f43f 2 #include "rtos.h"
huntR 0:ffca8ab7f43f 3 #include "hcsr04.h"
huntR 0:ffca8ab7f43f 4 #include "beep.h"
huntR 0:ffca8ab7f43f 5 //dichiarazioni let e sensori
huntR 0:ffca8ab7f43f 6 //sensori ad ultrasuoni
huntR 0:ffca8ab7f43f 7 /******************************/
huntR 0:ffca8ab7f43f 8 //bluetooth
huntR 0:ffca8ab7f43f 9 Serial blue(D10,D2);
huntR 0:ffca8ab7f43f 10 /******************************/
huntR 0:ffca8ab7f43f 11 HCSR04 sensor1(D15, D14);
huntR 0:ffca8ab7f43f 12 HCSR04 sensor2(D12, D13);
huntR 0:ffca8ab7f43f 13 //HCSR04 sensor3(D11, D9);
huntR 0:ffca8ab7f43f 14 /******************************/
huntR 0:ffca8ab7f43f 15 //Led per le macchine
huntR 0:ffca8ab7f43f 16 DigitalOut rossoC(PA_0);//led
huntR 0:ffca8ab7f43f 17 DigitalOut gialloC(D5);
huntR 0:ffca8ab7f43f 18 DigitalOut verdeC(D3);
huntR 0:ffca8ab7f43f 19 /******************************/
huntR 0:ffca8ab7f43f 20 //buzzer
huntR 0:ffca8ab7f43f 21 Beep buzzer(D4);
huntR 0:ffca8ab7f43f 22 /******************************/
huntR 0:ffca8ab7f43f 23 //led per i pedoni
huntR 0:ffca8ab7f43f 24 DigitalOut rossoP(D6);
huntR 0:ffca8ab7f43f 25 DigitalOut gialloP(D7);
huntR 0:ffca8ab7f43f 26 DigitalOut verdeP(D8);
huntR 0:ffca8ab7f43f 27 /******************************/
huntR 0:ffca8ab7f43f 28 /******************************/
huntR 0:ffca8ab7f43f 29 //dichiarazione funzioni
huntR 0:ffca8ab7f43f 30 void giallo();
huntR 0:ffca8ab7f43f 31 void semafori();
huntR 0:ffca8ab7f43f 32 /******************************/
huntR 0:ffca8ab7f43f 33 int i=0;
huntR 0:ffca8ab7f43f 34 char riceviBlue = '0';
huntR 0:ffca8ab7f43f 35 bool gianello=false;
huntR 0:ffca8ab7f43f 36 bool visto = false;
huntR 0:ffca8ab7f43f 37 int cont =0;
huntR 0:ffca8ab7f43f 38 /******************************/
huntR 0:ffca8ab7f43f 39
huntR 0:ffca8ab7f43f 40 //sensore semaforo 1
huntR 0:ffca8ab7f43f 41 /******************************/
huntR 0:ffca8ab7f43f 42 /******************************/
huntR 0:ffca8ab7f43f 43 void sensori(){
huntR 0:ffca8ab7f43f 44 while(!visto && !gianello){
huntR 0:ffca8ab7f43f 45 sensor1.start();
huntR 0:ffca8ab7f43f 46 wait_ms(100);
huntR 0:ffca8ab7f43f 47 sensor2.start();
huntR 0:ffca8ab7f43f 48 wait_ms(100);
huntR 0:ffca8ab7f43f 49 if(sensor1.get_dist_cm()<10||sensor2.get_dist_cm()<10){
huntR 0:ffca8ab7f43f 50 wait(4);
huntR 0:ffca8ab7f43f 51 sensor1.start();
huntR 0:ffca8ab7f43f 52 wait_ms(100);
huntR 0:ffca8ab7f43f 53 sensor2.start();
huntR 0:ffca8ab7f43f 54 wait_ms(100);
huntR 0:ffca8ab7f43f 55 if(sensor1.get_dist_cm()<10||sensor2.get_dist_cm()<10&&!gianello){
huntR 0:ffca8ab7f43f 56 visto = true;
huntR 0:ffca8ab7f43f 57 blue.putc('B');
huntR 0:ffca8ab7f43f 58 wait_ms(100);
huntR 0:ffca8ab7f43f 59 semafori();
huntR 0:ffca8ab7f43f 60 visto=false;
huntR 0:ffca8ab7f43f 61 }
huntR 0:ffca8ab7f43f 62 }
huntR 0:ffca8ab7f43f 63 }
huntR 0:ffca8ab7f43f 64 }
huntR 0:ffca8ab7f43f 65 /******************************/
huntR 0:ffca8ab7f43f 66
huntR 0:ffca8ab7f43f 67 //controllo borini
huntR 0:ffca8ab7f43f 68 /******************************/
huntR 0:ffca8ab7f43f 69 void iezzo (void const *args){
huntR 0:ffca8ab7f43f 70 while(true){
huntR 0:ffca8ab7f43f 71 if(blue.readable()){
huntR 0:ffca8ab7f43f 72 riceviBlue = blue.getc();
huntR 0:ffca8ab7f43f 73 }
huntR 0:ffca8ab7f43f 74 if(riceviBlue == 'A')
huntR 0:ffca8ab7f43f 75 {
huntR 0:ffca8ab7f43f 76 gianello=true;
huntR 0:ffca8ab7f43f 77 riceviBlue='0';
huntR 0:ffca8ab7f43f 78 semafori();
huntR 0:ffca8ab7f43f 79 riceviBlue='0';
huntR 0:ffca8ab7f43f 80 gianello=false;
huntR 0:ffca8ab7f43f 81 visto=false;
huntR 0:ffca8ab7f43f 82 }
huntR 0:ffca8ab7f43f 83 }
huntR 0:ffca8ab7f43f 84 }
huntR 0:ffca8ab7f43f 85 /******************************/
huntR 0:ffca8ab7f43f 86
huntR 0:ffca8ab7f43f 87 int main(){
huntR 0:ffca8ab7f43f 88 //inizializzazione
huntR 0:ffca8ab7f43f 89 /******************************/
huntR 0:ffca8ab7f43f 90 rossoP=1;
huntR 0:ffca8ab7f43f 91 verdeP=0;
huntR 0:ffca8ab7f43f 92 gialloP=0;
huntR 0:ffca8ab7f43f 93 gialloC=0;
huntR 0:ffca8ab7f43f 94 rossoC=0;
huntR 0:ffca8ab7f43f 95 verdeC=1;
huntR 0:ffca8ab7f43f 96 blue.baud(38400);
huntR 0:ffca8ab7f43f 97 Thread th1(iezzo);
huntR 0:ffca8ab7f43f 98 /******************************/
huntR 0:ffca8ab7f43f 99 while(1){
huntR 0:ffca8ab7f43f 100 if(!gianello){
huntR 0:ffca8ab7f43f 101 wait_ms(500);
huntR 0:ffca8ab7f43f 102 sensori();
huntR 0:ffca8ab7f43f 103 }
huntR 0:ffca8ab7f43f 104 }
huntR 0:ffca8ab7f43f 105 }
huntR 0:ffca8ab7f43f 106 void giallo(){
huntR 0:ffca8ab7f43f 107 //giallo per i pedoni e rosso per le macchine
huntR 0:ffca8ab7f43f 108
huntR 0:ffca8ab7f43f 109 int n;
huntR 0:ffca8ab7f43f 110 do{
huntR 0:ffca8ab7f43f 111 n=0;
huntR 0:ffca8ab7f43f 112 verdeP=0;
huntR 0:ffca8ab7f43f 113 gialloP=1;
huntR 0:ffca8ab7f43f 114 //bippata del buzzer
huntR 0:ffca8ab7f43f 115 /******************************/
huntR 0:ffca8ab7f43f 116 for(i=0;i<10;i++){
huntR 0:ffca8ab7f43f 117 buzzer.beep(500,0.1);
huntR 0:ffca8ab7f43f 118 gialloP=1;
huntR 0:ffca8ab7f43f 119 wait_ms(200);
huntR 0:ffca8ab7f43f 120 buzzer.nobeep();
huntR 0:ffca8ab7f43f 121 buzzer.beep(1000,0.1);
huntR 0:ffca8ab7f43f 122 gialloP=1;
huntR 0:ffca8ab7f43f 123 gialloP=1;
huntR 0:ffca8ab7f43f 124 wait_ms(200);
huntR 0:ffca8ab7f43f 125 buzzer.nobeep();
huntR 0:ffca8ab7f43f 126 gialloP=1;
huntR 0:ffca8ab7f43f 127 }
huntR 0:ffca8ab7f43f 128 /******************************/
huntR 0:ffca8ab7f43f 129 wait_ms(100);
huntR 0:ffca8ab7f43f 130 }while(n==1);
huntR 0:ffca8ab7f43f 131 wait_ms(100);
huntR 0:ffca8ab7f43f 132 }
huntR 0:ffca8ab7f43f 133 void semafori(){
huntR 0:ffca8ab7f43f 134 //giallo per le macchine, rosso per i pedoni
huntR 0:ffca8ab7f43f 135 verdeC=0;
huntR 0:ffca8ab7f43f 136 gialloC=1;
huntR 0:ffca8ab7f43f 137 rossoC=0;
huntR 0:ffca8ab7f43f 138 wait(4);
huntR 0:ffca8ab7f43f 139 //rosso per le macchine, verde per i pedoni
huntR 0:ffca8ab7f43f 140 buzzer.beep(1200,50);
huntR 0:ffca8ab7f43f 141 gialloC=0;
huntR 0:ffca8ab7f43f 142 rossoC=1;
huntR 0:ffca8ab7f43f 143 rossoP=0;
huntR 0:ffca8ab7f43f 144 verdeP=1;
huntR 0:ffca8ab7f43f 145 wait(10);
huntR 0:ffca8ab7f43f 146 buzzer.nobeep();
huntR 0:ffca8ab7f43f 147 //giallo per i pedoni e rosso per le macchine
huntR 0:ffca8ab7f43f 148 do{
huntR 0:ffca8ab7f43f 149 giallo();
huntR 0:ffca8ab7f43f 150 riceviBlue=blue.getc();
huntR 0:ffca8ab7f43f 151
huntR 0:ffca8ab7f43f 152 }while(riceviBlue=='L');
huntR 0:ffca8ab7f43f 153 cont = 0;
huntR 0:ffca8ab7f43f 154 //rosso ai pedoni e verde alle automobili
huntR 0:ffca8ab7f43f 155 gialloP=0;
huntR 0:ffca8ab7f43f 156 rossoP=1;
huntR 0:ffca8ab7f43f 157 rossoC=0;
huntR 0:ffca8ab7f43f 158 verdeC=1;
huntR 0:ffca8ab7f43f 159 wait_ms(5000);
huntR 0:ffca8ab7f43f 160 }