on recoit 76 et 72
Dependencies: XBeeLib mbed-rtos mbed
main.cpp@12:9ec78b07c688, 2018-10-30 (annotated)
- Committer:
- leomerel
- Date:
- Tue Oct 30 20:34:01 2018 +0000
- Revision:
- 12:9ec78b07c688
- Parent:
- 11:0309bef74ba8
- Child:
- 13:af1b80df064c
V1
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 | |
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 | 12:9ec78b07c688 | 119 | while(1) { |
leomerel | 12:9ec78b07c688 | 120 | if(nombreDeVoitureNS>(nombreDeVoitureEO+10)) { |
leomerel | 12:9ec78b07c688 | 121 | bns=1; |
leomerel | 12:9ec78b07c688 | 122 | beo=0; |
leomerel | 12:9ec78b07c688 | 123 | } |
leomerel | 12:9ec78b07c688 | 124 | else if(nombreDeVoitureEO>(nombreDeVoitureNS+10)) { |
leomerel | 12:9ec78b07c688 | 125 | bns=0; |
leomerel | 12:9ec78b07c688 | 126 | beo=1; |
leomerel | 12:9ec78b07c688 | 127 | } |
leomerel | 12:9ec78b07c688 | 128 | else { |
leomerel | 12:9ec78b07c688 | 129 | bns=0; |
leomerel | 12:9ec78b07c688 | 130 | beo=0; |
leomerel | 12:9ec78b07c688 | 131 | t_ns.signal_set(0x1); |
leomerel | 12:9ec78b07c688 | 132 | t_eo.signal_set(0x1); |
leomerel | 12:9ec78b07c688 | 133 | } |
leomerel | 12:9ec78b07c688 | 134 | } |
leomerel | 12:9ec78b07c688 | 135 | } |
leomerel | 12:9ec78b07c688 | 136 | |
leomerel | 12:9ec78b07c688 | 137 | int main() { |
leomerel | 12:9ec78b07c688 | 138 | nordSudR = 1; |
leomerel | 12:9ec78b07c688 | 139 | estOuestR = 1; |
leomerel | 12:9ec78b07c688 | 140 | nordSudJ = 0; |
leomerel | 12:9ec78b07c688 | 141 | estOuestJ = 0; |
leomerel | 12:9ec78b07c688 | 142 | nordSudV = 0; |
leomerel | 12:9ec78b07c688 | 143 | estOuestV = 0; |
leomerel | 12:9ec78b07c688 | 144 | t_eo.start(eo); |
leomerel | 12:9ec78b07c688 | 145 | t_ns.start(ns); |
leomerel | 12:9ec78b07c688 | 146 | t_gestion.start(gestion); |
leomerel | 12:9ec78b07c688 | 147 | t_nbVoiture.start(nbVoiture); |
leomerel | 12:9ec78b07c688 | 148 | while(1) { |
leomerel | 12:9ec78b07c688 | 149 | |
leomerel | 12:9ec78b07c688 | 150 | } |
leomerel | 12:9ec78b07c688 | 151 | } |