Gestion du Traffic Adaptatif- Code du mbed coordinateur
Dependencies: XBeeLib mbed mbed-rtos EthernetInterface
main.cpp
- Committer:
- leomerel
- Date:
- 2018-10-31
- Revision:
- 15:e263f8c52b9f
- Parent:
- 14:53c7ea9124ee
- Child:
- 16:b4d5eb2ee378
File content as of revision 15:e263f8c52b9f:
#include "mbed.h" #include "rtos.h" DigitalOut nordSudR(p29); DigitalOut nordSudJ(p27); DigitalOut nordSudV(p25); DigitalOut estOuestR(p12); DigitalOut estOuestJ(p14); DigitalOut estOuestV(p16); DigitalIn boutonPlusNS(p22); DigitalIn boutonMoinsNS(p21); DigitalIn boutonPlusEO(p19); DigitalIn boutonMoinsEO(p20); Thread t_eo; Thread t_ns; Thread t_gestion; Thread t_nbVoiture; int nombreDeVoitureNS = 0; int nombreDeVoitureEO = 0; Mutex dPassage; bool bns, beo; /*void sequenceLumiere(DigitalOut lumiere) { lumiere = 1; Thread::wait(4000); lumiere = 0; Thread::wait(500); lumiere = 1; Thread::wait(500); lumiere = 0; Thread::wait(500); lumiere = 1; Thread::wait(500); lumiere = 0; Thread::wait(500); lumiere = 1; Thread::wait(500); lumiere = 0; Thread::wait(500); lumiere = 1; Thread::wait(500); lumiere=0; Thread::wait(2000); }*/ void ns() { while(1) { if(!beo){ //Thread::signal_wait(0x1); dPassage.lock(); nordSudR=0; nordSudV=1; Thread::wait(5000); //while(bns){} if(!bns){ printf("\r\n YO1 \r\n"); nordSudV=0; nordSudJ=1; Thread::wait(2000); nordSudJ=0; nordSudR=1; Thread::wait(1000); } dPassage.unlock(); } } } void eo() { while(1) { if(!bns){ //Thread::signal_wait(0x1); dPassage.lock(); estOuestR=0; estOuestV=1; Thread::wait(5000); //while(beo){} if(!beo){ printf("\r\n YO2 \r\n"); estOuestV=0; estOuestJ=1; Thread::wait(2000); estOuestJ=0; estOuestR=1; Thread::wait(1000); } dPassage.unlock(); } } } void nbVoiture() { while(1) { if(boutonPlusNS){ nombreDeVoitureNS++; } if(boutonMoinsNS && nombreDeVoitureNS>0){ nombreDeVoitureNS--; } if(boutonPlusEO){ nombreDeVoitureEO++; } if(boutonMoinsEO && nombreDeVoitureEO>0){ nombreDeVoitureEO--; } printf("Nombre de voiture NS : %d \r\n", nombreDeVoitureNS); printf("Nombre de voiture EO : %d \r\n\n", nombreDeVoitureEO); printf("bnf: %d, beo: %d \r\n",bns,beo); } } void gestion() { int max, min; while(1) { if((nombreDeVoitureNS>(nombreDeVoitureEO+10)) || (nombreDeVoitureEO ==0)){ bns=1; beo=0; } else if((nombreDeVoitureEO>(nombreDeVoitureNS+10)) || (nombreDeVoitureEO ==0)){ bns=0; beo=1; } else { bns=0; beo=0; t_ns.signal_set(0x1); t_eo.signal_set(0x1); } } } int main() { nordSudR = 1; estOuestR = 1; nordSudJ = 0; estOuestJ = 0; nordSudV = 0; estOuestV = 0; t_eo.start(eo); t_ns.start(ns); t_gestion.start(gestion); t_nbVoiture.start(nbVoiture); while(1) { } }