Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: XBeeLib mbed mbed-rtos
Diff: main.cpp
- Revision:
- 12:9ec78b07c688
- Parent:
- 11:0309bef74ba8
- Child:
- 13:af1b80df064c
--- a/main.cpp Wed Feb 15 14:04:02 2017 -0600
+++ b/main.cpp Tue Oct 30 20:34:01 2018 +0000
@@ -1,22 +1,151 @@
#include "mbed.h"
#include "rtos.h"
-
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
-Thread thread;
-
-void led2_thread() {
- while (true) {
- led2 = !led2;
- Thread::wait(1000);
+
+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();
+ }
+
}
}
-
-int main() {
- thread.start(led2_thread);
-
- while (true) {
- led1 = !led1;
- Thread::wait(500);
+
+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>(nombreDeVoitureEO+10)) {
+ 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) {
+
+ }
+}
\ No newline at end of file
