lo slave

Dependencies:   HCSR04 beep mbed-rtos mbed

Committer:
huntR
Date:
Fri Apr 28 19:36:47 2017 +0000
Revision:
0:18d34f88c0c1
slave

Who changed what in which revision?

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