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