lo slave
Dependencies: HCSR04 beep mbed-rtos mbed
main.cpp@0:18d34f88c0c1, 2017-04-28 (annotated)
- Committer:
- huntR
- Date:
- Fri Apr 28 19:36:47 2017 +0000
- Revision:
- 0:18d34f88c0c1
slave
Who changed what in which revision?
User | Revision | Line number | New 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 | } |