Signori, dopo anni di sudore, lacrime e crampi allo stomaco, ce l'ho fatta
Dependencies: HC05 mbed-rtos mbed
main.cpp
- Committer:
- LorenzoCR
- Date:
- 2017-04-02
- Revision:
- 0:e6c7f51b1ac2
File content as of revision 0:e6c7f51b1ac2:
#include "mbed.h" #include "rtos.h" #include "hcsr04.h" #include "beep.h" //dichiarazioni let e sensori /******************************/ HCSR04 sensor1(PB_8, PB_9); HCSR04 sensor2(PA_6, PA_5); HCSR04 sensor3(PB_10, PB_4); DigitalOut rossoC(D2); DigitalOut gialloC(D3); DigitalOut verdeC(D4); Beep buzzer(D7); DigitalOut rossoP(D8); DigitalOut gialloP(D9); DigitalOut verdeP(D10); DigitalOut led(D11); void giallo(); void semafori(); int i=0; /******************************/ //sensore semaforo 1 /******************************/ void sensor1_thread(void const *args){ while(true){ sensor1.start(); wait_ms(100); if (sensor1.get_dist_cm() < 10){ wait(5); sensor1.start(); wait_ms(100); wait(2); if (sensor1.get_dist_cm()< 10){ semafori(); } } } } /******************************/ //sensore semaforo 2 /******************************/ void sensor2_thread(void const *args){ while(true){ sensor1.start(); wait_ms(100); if (sensor2.get_dist_cm() < 10){ wait(5); sensor2.start(); wait_ms(100); wait(2); if (sensor2.get_dist_cm()< 10){ semafori(); } } } } /******************************/ int main(){ //inizializzazione /******************************/ rossoP=1; verdeP=0; gialloP=0; gialloC=0; rossoC=0; verdeC=1; Thread th1(sensor1_thread); Thread th2(sensor2_thread); /******************************/ while(1) { } } void giallo(){ //giallo per i pedoni e rosso per le macchine int n; do{ n=0; verdeP=0; gialloP=1; //bippata del buzzer /******************************/ for(i=0;i<10;i++){ buzzer.beep(500,0.1); wait_ms(200); buzzer.nobeep(); buzzer.beep(1000,0.1); wait_ms(200); buzzer.nobeep(); } /******************************/ sensor3.start(); wait_ms(100); if(sensor3.get_dist_cm()<50){ n=1; led=1; } }while(n==1); wait_ms(200); led=0; } void semafori(){ //giallo per le macchine, rosso per i pedoni verdeC=0; gialloC=1; rossoC=0; wait(4); //rosso per le macchine, verde per i pedoni buzzer.beep(200,10); gialloC=0; rossoC=1; rossoP=0; verdeP=1; wait(10); buzzer.nobeep(); //giallo per i pedoni e rosso per le macchine giallo(); //rosso ai pedoni e verde alle automobili gialloP=0; rossoP=1; rossoC=0; verdeC=1; }