Gestion du Traffic Adaptatif- Code du mbed coordinateur

Dependencies:   XBeeLib mbed mbed-rtos EthernetInterface

Committer:
leomerel
Date:
Wed Oct 31 18:42:06 2018 +0000
Revision:
15:e263f8c52b9f
Parent:
14:53c7ea9124ee
Child:
16:b4d5eb2ee378
V1.1.2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:491820ee784d 1 #include "mbed.h"
mbed_official 11:0309bef74ba8 2 #include "rtos.h"
leomerel 12:9ec78b07c688 3
leomerel 12:9ec78b07c688 4 DigitalOut nordSudR(p29);
leomerel 12:9ec78b07c688 5 DigitalOut nordSudJ(p27);
leomerel 12:9ec78b07c688 6 DigitalOut nordSudV(p25);
leomerel 12:9ec78b07c688 7 DigitalOut estOuestR(p12);
leomerel 12:9ec78b07c688 8 DigitalOut estOuestJ(p14);
leomerel 12:9ec78b07c688 9 DigitalOut estOuestV(p16);
leomerel 12:9ec78b07c688 10 DigitalIn boutonPlusNS(p22);
leomerel 12:9ec78b07c688 11 DigitalIn boutonMoinsNS(p21);
leomerel 12:9ec78b07c688 12 DigitalIn boutonPlusEO(p19);
leomerel 12:9ec78b07c688 13 DigitalIn boutonMoinsEO(p20);
leomerel 12:9ec78b07c688 14 Thread t_eo;
leomerel 12:9ec78b07c688 15 Thread t_ns;
leomerel 12:9ec78b07c688 16 Thread t_gestion;
leomerel 12:9ec78b07c688 17 Thread t_nbVoiture;
leomerel 12:9ec78b07c688 18
leomerel 12:9ec78b07c688 19 int nombreDeVoitureNS = 0;
leomerel 12:9ec78b07c688 20 int nombreDeVoitureEO = 0;
leomerel 12:9ec78b07c688 21
leomerel 12:9ec78b07c688 22 Mutex dPassage;
leomerel 12:9ec78b07c688 23 bool bns, beo;
leomerel 12:9ec78b07c688 24
leomerel 12:9ec78b07c688 25
leomerel 12:9ec78b07c688 26 /*void sequenceLumiere(DigitalOut lumiere) {
leomerel 12:9ec78b07c688 27 lumiere = 1;
leomerel 12:9ec78b07c688 28 Thread::wait(4000);
leomerel 12:9ec78b07c688 29 lumiere = 0;
leomerel 12:9ec78b07c688 30 Thread::wait(500);
leomerel 12:9ec78b07c688 31 lumiere = 1;
leomerel 12:9ec78b07c688 32 Thread::wait(500);
leomerel 12:9ec78b07c688 33 lumiere = 0;
leomerel 12:9ec78b07c688 34 Thread::wait(500);
leomerel 12:9ec78b07c688 35 lumiere = 1;
leomerel 12:9ec78b07c688 36 Thread::wait(500);
leomerel 12:9ec78b07c688 37 lumiere = 0;
leomerel 12:9ec78b07c688 38 Thread::wait(500);
leomerel 12:9ec78b07c688 39 lumiere = 1;
leomerel 12:9ec78b07c688 40 Thread::wait(500);
leomerel 12:9ec78b07c688 41 lumiere = 0;
leomerel 12:9ec78b07c688 42 Thread::wait(500);
leomerel 12:9ec78b07c688 43 lumiere = 1;
leomerel 12:9ec78b07c688 44 Thread::wait(500);
leomerel 12:9ec78b07c688 45 lumiere=0;
leomerel 12:9ec78b07c688 46 Thread::wait(2000);
leomerel 12:9ec78b07c688 47 }*/
leomerel 12:9ec78b07c688 48
leomerel 12:9ec78b07c688 49 void ns() {
leomerel 12:9ec78b07c688 50 while(1)
leomerel 12:9ec78b07c688 51 {
leomerel 12:9ec78b07c688 52 if(!beo){
leomerel 12:9ec78b07c688 53 //Thread::signal_wait(0x1);
leomerel 12:9ec78b07c688 54 dPassage.lock();
leomerel 12:9ec78b07c688 55 nordSudR=0;
leomerel 12:9ec78b07c688 56 nordSudV=1;
leomerel 12:9ec78b07c688 57 Thread::wait(5000);
leomerel 12:9ec78b07c688 58 //while(bns){}
leomerel 12:9ec78b07c688 59 if(!bns){
leomerel 12:9ec78b07c688 60 printf("\r\n YO1 \r\n");
leomerel 12:9ec78b07c688 61 nordSudV=0;
leomerel 12:9ec78b07c688 62 nordSudJ=1;
leomerel 12:9ec78b07c688 63 Thread::wait(2000);
leomerel 12:9ec78b07c688 64 nordSudJ=0;
leomerel 12:9ec78b07c688 65 nordSudR=1;
leomerel 12:9ec78b07c688 66 Thread::wait(1000);
leomerel 12:9ec78b07c688 67 }
leomerel 12:9ec78b07c688 68 dPassage.unlock();
leomerel 12:9ec78b07c688 69 }
leomerel 12:9ec78b07c688 70
emilmont 1:491820ee784d 71 }
emilmont 1:491820ee784d 72 }
leomerel 12:9ec78b07c688 73
leomerel 12:9ec78b07c688 74 void eo() {
leomerel 12:9ec78b07c688 75 while(1)
leomerel 12:9ec78b07c688 76 {
leomerel 12:9ec78b07c688 77 if(!bns){
leomerel 12:9ec78b07c688 78 //Thread::signal_wait(0x1);
leomerel 12:9ec78b07c688 79 dPassage.lock();
leomerel 12:9ec78b07c688 80 estOuestR=0;
leomerel 12:9ec78b07c688 81 estOuestV=1;
leomerel 12:9ec78b07c688 82 Thread::wait(5000);
leomerel 12:9ec78b07c688 83 //while(beo){}
leomerel 12:9ec78b07c688 84 if(!beo){
leomerel 12:9ec78b07c688 85 printf("\r\n YO2 \r\n");
leomerel 12:9ec78b07c688 86 estOuestV=0;
leomerel 12:9ec78b07c688 87 estOuestJ=1;
leomerel 12:9ec78b07c688 88 Thread::wait(2000);
leomerel 12:9ec78b07c688 89 estOuestJ=0;
leomerel 12:9ec78b07c688 90 estOuestR=1;
leomerel 12:9ec78b07c688 91 Thread::wait(1000);
leomerel 12:9ec78b07c688 92 }
leomerel 12:9ec78b07c688 93 dPassage.unlock();
leomerel 12:9ec78b07c688 94 }
emilmont 1:491820ee784d 95 }
emilmont 1:491820ee784d 96 }
leomerel 12:9ec78b07c688 97
leomerel 12:9ec78b07c688 98 void nbVoiture() {
leomerel 12:9ec78b07c688 99 while(1) {
leomerel 12:9ec78b07c688 100 if(boutonPlusNS){
leomerel 12:9ec78b07c688 101 nombreDeVoitureNS++;
leomerel 12:9ec78b07c688 102 }
leomerel 12:9ec78b07c688 103 if(boutonMoinsNS && nombreDeVoitureNS>0){
leomerel 12:9ec78b07c688 104 nombreDeVoitureNS--;
leomerel 12:9ec78b07c688 105 }
leomerel 12:9ec78b07c688 106 if(boutonPlusEO){
leomerel 12:9ec78b07c688 107 nombreDeVoitureEO++;
leomerel 12:9ec78b07c688 108 }
leomerel 12:9ec78b07c688 109 if(boutonMoinsEO && nombreDeVoitureEO>0){
leomerel 12:9ec78b07c688 110 nombreDeVoitureEO--;
leomerel 12:9ec78b07c688 111 }
leomerel 12:9ec78b07c688 112 printf("Nombre de voiture NS : %d \r\n", nombreDeVoitureNS);
leomerel 12:9ec78b07c688 113 printf("Nombre de voiture EO : %d \r\n\n", nombreDeVoitureEO);
leomerel 12:9ec78b07c688 114 printf("bnf: %d, beo: %d \r\n",bns,beo);
leomerel 12:9ec78b07c688 115 }
leomerel 12:9ec78b07c688 116 }
leomerel 12:9ec78b07c688 117
leomerel 12:9ec78b07c688 118 void gestion() {
leomerel 14:53c7ea9124ee 119 int max, min;
leomerel 14:53c7ea9124ee 120 while(1) {
leomerel 14:53c7ea9124ee 121 if((nombreDeVoitureNS>(nombreDeVoitureEO+10))
leomerel 14:53c7ea9124ee 122 || (nombreDeVoitureEO ==0)){
leomerel 12:9ec78b07c688 123 bns=1;
leomerel 12:9ec78b07c688 124 beo=0;
leomerel 12:9ec78b07c688 125 }
leomerel 15:e263f8c52b9f 126 else if((nombreDeVoitureEO>(nombreDeVoitureNS+10))
leomerel 14:53c7ea9124ee 127 || (nombreDeVoitureEO ==0)){
leomerel 12:9ec78b07c688 128 bns=0;
leomerel 12:9ec78b07c688 129 beo=1;
leomerel 12:9ec78b07c688 130 }
leomerel 12:9ec78b07c688 131 else {
leomerel 12:9ec78b07c688 132 bns=0;
leomerel 12:9ec78b07c688 133 beo=0;
leomerel 12:9ec78b07c688 134 t_ns.signal_set(0x1);
leomerel 12:9ec78b07c688 135 t_eo.signal_set(0x1);
leomerel 12:9ec78b07c688 136 }
leomerel 12:9ec78b07c688 137 }
leomerel 12:9ec78b07c688 138 }
leomerel 12:9ec78b07c688 139
leomerel 12:9ec78b07c688 140 int main() {
leomerel 12:9ec78b07c688 141 nordSudR = 1;
leomerel 12:9ec78b07c688 142 estOuestR = 1;
leomerel 12:9ec78b07c688 143 nordSudJ = 0;
leomerel 12:9ec78b07c688 144 estOuestJ = 0;
leomerel 12:9ec78b07c688 145 nordSudV = 0;
leomerel 12:9ec78b07c688 146 estOuestV = 0;
leomerel 12:9ec78b07c688 147 t_eo.start(eo);
leomerel 12:9ec78b07c688 148 t_ns.start(ns);
leomerel 12:9ec78b07c688 149 t_gestion.start(gestion);
leomerel 12:9ec78b07c688 150 t_nbVoiture.start(nbVoiture);
leomerel 12:9ec78b07c688 151 while(1) {
leomerel 12:9ec78b07c688 152
leomerel 12:9ec78b07c688 153 }
leomerel 12:9ec78b07c688 154 }