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