Signori, dopo anni di sudore, lacrime e crampi allo stomaco, ce l'ho fatta

Dependencies:   HC05 mbed-rtos mbed

Committer:
LorenzoCR
Date:
Sun Apr 02 20:28:43 2017 +0000
Revision:
0:e6c7f51b1ac2
Signori, forse ce l'ho fatta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LorenzoCR 0:e6c7f51b1ac2 1 #include "mbed.h"
LorenzoCR 0:e6c7f51b1ac2 2 #include "rtos.h"
LorenzoCR 0:e6c7f51b1ac2 3 #include "hcsr04.h"
LorenzoCR 0:e6c7f51b1ac2 4 #include "beep.h"
LorenzoCR 0:e6c7f51b1ac2 5 //dichiarazioni let e sensori
LorenzoCR 0:e6c7f51b1ac2 6 /******************************/
LorenzoCR 0:e6c7f51b1ac2 7 HCSR04 sensor1(PB_8, PB_9);
LorenzoCR 0:e6c7f51b1ac2 8 HCSR04 sensor2(PA_6, PA_5);
LorenzoCR 0:e6c7f51b1ac2 9 HCSR04 sensor3(PB_10, PB_4);
LorenzoCR 0:e6c7f51b1ac2 10 DigitalOut rossoC(D2);
LorenzoCR 0:e6c7f51b1ac2 11 DigitalOut gialloC(D3);
LorenzoCR 0:e6c7f51b1ac2 12 DigitalOut verdeC(D4);
LorenzoCR 0:e6c7f51b1ac2 13 Beep buzzer(D7);
LorenzoCR 0:e6c7f51b1ac2 14
LorenzoCR 0:e6c7f51b1ac2 15 DigitalOut rossoP(D8);
LorenzoCR 0:e6c7f51b1ac2 16 DigitalOut gialloP(D9);
LorenzoCR 0:e6c7f51b1ac2 17 DigitalOut verdeP(D10);
LorenzoCR 0:e6c7f51b1ac2 18
LorenzoCR 0:e6c7f51b1ac2 19 DigitalOut led(D11);
LorenzoCR 0:e6c7f51b1ac2 20 void giallo();
LorenzoCR 0:e6c7f51b1ac2 21 void semafori();
LorenzoCR 0:e6c7f51b1ac2 22 int i=0;
LorenzoCR 0:e6c7f51b1ac2 23 /******************************/
LorenzoCR 0:e6c7f51b1ac2 24
LorenzoCR 0:e6c7f51b1ac2 25 //sensore semaforo 1
LorenzoCR 0:e6c7f51b1ac2 26 /******************************/
LorenzoCR 0:e6c7f51b1ac2 27 void sensor1_thread(void const *args){
LorenzoCR 0:e6c7f51b1ac2 28 while(true){
LorenzoCR 0:e6c7f51b1ac2 29
LorenzoCR 0:e6c7f51b1ac2 30 sensor1.start();
LorenzoCR 0:e6c7f51b1ac2 31 wait_ms(100);
LorenzoCR 0:e6c7f51b1ac2 32
LorenzoCR 0:e6c7f51b1ac2 33 if (sensor1.get_dist_cm() < 10){
LorenzoCR 0:e6c7f51b1ac2 34 wait(5);
LorenzoCR 0:e6c7f51b1ac2 35 sensor1.start();
LorenzoCR 0:e6c7f51b1ac2 36 wait_ms(100);
LorenzoCR 0:e6c7f51b1ac2 37 wait(2);
LorenzoCR 0:e6c7f51b1ac2 38
LorenzoCR 0:e6c7f51b1ac2 39 if (sensor1.get_dist_cm()< 10){
LorenzoCR 0:e6c7f51b1ac2 40 semafori();
LorenzoCR 0:e6c7f51b1ac2 41
LorenzoCR 0:e6c7f51b1ac2 42 }
LorenzoCR 0:e6c7f51b1ac2 43 }
LorenzoCR 0:e6c7f51b1ac2 44 }
LorenzoCR 0:e6c7f51b1ac2 45 }
LorenzoCR 0:e6c7f51b1ac2 46 /******************************/
LorenzoCR 0:e6c7f51b1ac2 47
LorenzoCR 0:e6c7f51b1ac2 48 //sensore semaforo 2
LorenzoCR 0:e6c7f51b1ac2 49 /******************************/
LorenzoCR 0:e6c7f51b1ac2 50 void sensor2_thread(void const *args){
LorenzoCR 0:e6c7f51b1ac2 51 while(true){
LorenzoCR 0:e6c7f51b1ac2 52
LorenzoCR 0:e6c7f51b1ac2 53 sensor1.start();
LorenzoCR 0:e6c7f51b1ac2 54 wait_ms(100);
LorenzoCR 0:e6c7f51b1ac2 55
LorenzoCR 0:e6c7f51b1ac2 56 if (sensor2.get_dist_cm() < 10){
LorenzoCR 0:e6c7f51b1ac2 57 wait(5);
LorenzoCR 0:e6c7f51b1ac2 58 sensor2.start();
LorenzoCR 0:e6c7f51b1ac2 59 wait_ms(100);
LorenzoCR 0:e6c7f51b1ac2 60 wait(2);
LorenzoCR 0:e6c7f51b1ac2 61
LorenzoCR 0:e6c7f51b1ac2 62 if (sensor2.get_dist_cm()< 10){
LorenzoCR 0:e6c7f51b1ac2 63 semafori();
LorenzoCR 0:e6c7f51b1ac2 64
LorenzoCR 0:e6c7f51b1ac2 65 }
LorenzoCR 0:e6c7f51b1ac2 66 }
LorenzoCR 0:e6c7f51b1ac2 67 }
LorenzoCR 0:e6c7f51b1ac2 68 }
LorenzoCR 0:e6c7f51b1ac2 69 /******************************/
LorenzoCR 0:e6c7f51b1ac2 70
LorenzoCR 0:e6c7f51b1ac2 71 int main(){
LorenzoCR 0:e6c7f51b1ac2 72 //inizializzazione
LorenzoCR 0:e6c7f51b1ac2 73 /******************************/
LorenzoCR 0:e6c7f51b1ac2 74 rossoP=1;
LorenzoCR 0:e6c7f51b1ac2 75 verdeP=0;
LorenzoCR 0:e6c7f51b1ac2 76 gialloP=0;
LorenzoCR 0:e6c7f51b1ac2 77 gialloC=0;
LorenzoCR 0:e6c7f51b1ac2 78 rossoC=0;
LorenzoCR 0:e6c7f51b1ac2 79 verdeC=1;
LorenzoCR 0:e6c7f51b1ac2 80
LorenzoCR 0:e6c7f51b1ac2 81 Thread th1(sensor1_thread);
LorenzoCR 0:e6c7f51b1ac2 82 Thread th2(sensor2_thread);
LorenzoCR 0:e6c7f51b1ac2 83 /******************************/
LorenzoCR 0:e6c7f51b1ac2 84 while(1) {
LorenzoCR 0:e6c7f51b1ac2 85
LorenzoCR 0:e6c7f51b1ac2 86 }
LorenzoCR 0:e6c7f51b1ac2 87 }
LorenzoCR 0:e6c7f51b1ac2 88 void giallo(){
LorenzoCR 0:e6c7f51b1ac2 89 //giallo per i pedoni e rosso per le macchine
LorenzoCR 0:e6c7f51b1ac2 90 int n;
LorenzoCR 0:e6c7f51b1ac2 91 do{
LorenzoCR 0:e6c7f51b1ac2 92 n=0;
LorenzoCR 0:e6c7f51b1ac2 93 verdeP=0;
LorenzoCR 0:e6c7f51b1ac2 94 gialloP=1;
LorenzoCR 0:e6c7f51b1ac2 95 //bippata del buzzer
LorenzoCR 0:e6c7f51b1ac2 96 /******************************/
LorenzoCR 0:e6c7f51b1ac2 97 for(i=0;i<10;i++){
LorenzoCR 0:e6c7f51b1ac2 98 buzzer.beep(500,0.1);
LorenzoCR 0:e6c7f51b1ac2 99 wait_ms(200);
LorenzoCR 0:e6c7f51b1ac2 100 buzzer.nobeep();
LorenzoCR 0:e6c7f51b1ac2 101 buzzer.beep(1000,0.1);
LorenzoCR 0:e6c7f51b1ac2 102 wait_ms(200);
LorenzoCR 0:e6c7f51b1ac2 103 buzzer.nobeep();
LorenzoCR 0:e6c7f51b1ac2 104 }
LorenzoCR 0:e6c7f51b1ac2 105 /******************************/
LorenzoCR 0:e6c7f51b1ac2 106 sensor3.start();
LorenzoCR 0:e6c7f51b1ac2 107 wait_ms(100);
LorenzoCR 0:e6c7f51b1ac2 108 if(sensor3.get_dist_cm()<50){
LorenzoCR 0:e6c7f51b1ac2 109 n=1;
LorenzoCR 0:e6c7f51b1ac2 110 led=1;
LorenzoCR 0:e6c7f51b1ac2 111 }
LorenzoCR 0:e6c7f51b1ac2 112 }while(n==1);
LorenzoCR 0:e6c7f51b1ac2 113 wait_ms(200);
LorenzoCR 0:e6c7f51b1ac2 114 led=0;
LorenzoCR 0:e6c7f51b1ac2 115 }
LorenzoCR 0:e6c7f51b1ac2 116 void semafori(){
LorenzoCR 0:e6c7f51b1ac2 117 //giallo per le macchine, rosso per i pedoni
LorenzoCR 0:e6c7f51b1ac2 118 verdeC=0;
LorenzoCR 0:e6c7f51b1ac2 119 gialloC=1;
LorenzoCR 0:e6c7f51b1ac2 120 rossoC=0;
LorenzoCR 0:e6c7f51b1ac2 121
LorenzoCR 0:e6c7f51b1ac2 122 wait(4);
LorenzoCR 0:e6c7f51b1ac2 123 //rosso per le macchine, verde per i pedoni
LorenzoCR 0:e6c7f51b1ac2 124 buzzer.beep(200,10);
LorenzoCR 0:e6c7f51b1ac2 125 gialloC=0;
LorenzoCR 0:e6c7f51b1ac2 126 rossoC=1;
LorenzoCR 0:e6c7f51b1ac2 127 rossoP=0;
LorenzoCR 0:e6c7f51b1ac2 128 verdeP=1;
LorenzoCR 0:e6c7f51b1ac2 129 wait(10);
LorenzoCR 0:e6c7f51b1ac2 130 buzzer.nobeep();
LorenzoCR 0:e6c7f51b1ac2 131 //giallo per i pedoni e rosso per le macchine
LorenzoCR 0:e6c7f51b1ac2 132 giallo();
LorenzoCR 0:e6c7f51b1ac2 133 //rosso ai pedoni e verde alle automobili
LorenzoCR 0:e6c7f51b1ac2 134 gialloP=0;
LorenzoCR 0:e6c7f51b1ac2 135 rossoP=1;
LorenzoCR 0:e6c7f51b1ac2 136 rossoC=0;
LorenzoCR 0:e6c7f51b1ac2 137 verdeC=1;
LorenzoCR 0:e6c7f51b1ac2 138 }