on recoit 76 et 72
Dependencies: XBeeLib mbed-rtos mbed
main.cpp
- Committer:
- leomerel
- Date:
- 2018-10-31
- Revision:
- 13:af1b80df064c
- Parent:
- 12:9ec78b07c688
- Child:
- 14:53c7ea9124ee
File content as of revision 13:af1b80df064c:
#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() { while(1) { if(((nombreDeVoitureNS>=7) && nombreDeVoitureNS>(nombreDeVoitureEO+10)) || (nombreDeVoitureEO ==0) ){ bns=1; beo=0; } else if(nombreDeVoitureEO>(nombreDeVoitureNS+10)) { 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) { } }