void VerkeersRegelaar::doeWachtrij() { while(wachtrijbeheerder->geefEersteInWachtrij() != 0) { //Wanneer er iets in de wachtrij staat wordt de loop doorlopen Scenario* scenario = wachtrijbeheerder->geefEersteInWachtrij(); //Het eerste scenario uit de wachtrij wordt gegeven scenario->zetAllesNaarGroen(); //In het scenario alles naar groen zetten for (int n = 0; n < variabelebeheerder->krijgVariabele('g'); n++) _delay_ms(1000); //Een bepaalde tijd wachten scenario->zetAllesNaarRood(); //En alles weer naar rood laten gaan wachtrijbeheerder->haalEersteUitWachtrij(); //Het eerste scenario uit de wachtrij halen for (int n = 0; n < variabelebeheerder->krijgVariabele('r'); n++) _delay_ms(1000); //En 5 sec wachten voordat het volgende scenario op groen gaat if(variabelebeheerder->krijgNacht() == true) //Checken of het onderhand nacht is, zo ja dan moet er uit de functie worden gesprongen return; } }
void VerkeersRegelaar::doeStandaardSequentie() { //Deze functie voert de standaard sequentie uit for (int i = 1; scenariolijst->geefPositie(i) != 0; i++) { //Doorloop alle scenario's omstebeurt Scenario* scenario = scenariolijst->geefPositie(i); scenario->zetAllesNaarGroen(); //In het scenario alles naar groen zetten for (int n = 0; n < variabelebeheerder->krijgVariabele('g'); n++) _delay_ms(1000); //Een bepaalde tijd wachten scenario->zetAllesNaarRood(); //En alles weer naar rood laten gaan for (int n = 0; n < variabelebeheerder->krijgVariabele('r'); n++) _delay_ms(1000); //En 5 sec wachten voordat het volgende scenario op groen gaat int j = i + 1; if(scenariolijst->geefPositie(j) == 0) //Checken of de volgende positie in scenariolijst een scenario bevat i = 0; //Zo niet, dan begint de lijst weer van voor af aan //i wordt op 0 gezet ipv op 1 omdat aan het eind van de loop er eentje wordt opgeteld //Wanneer er iets in de wachtrij staat of wanneer het nacht is moet er uit deze functie gesprongen worden if((wachtrijbeheerder->geefEersteInWachtrij() != 0) || variabelebeheerder->krijgNacht()) return; } }
void VerkeersRegelaar::komtUitNachtStand() { //Deze functie wordt aangeroepen bij de overgang van nacht naar dag //Alle scenario's worden eenmalig langsgelopen in hun vaste patroon //Eerst wordt van alle scenario's alle verkeerslichten op rood gezet for (int i = 1; scenariolijst->geefPositie(i) != 0; i++) { Scenario* scenario = scenariolijst->geefPositie(i); scenario->allesDirectRood(); } for (int n = 0; n < variabelebeheerder->krijgVariabele('r'); n++) _delay_ms(1000); //Vijf seconden wachten for (int i = 1; scenariolijst->geefPositie(i) != 0; i++) { //Doorloop alle scenario's omstebeurt Scenario* scenario = scenariolijst->geefPositie(i); scenario->zetAllesNaarGroen(); //In het scenario alles naar groen zetten for (int n = 0; n < variabelebeheerder->krijgVariabele('g'); n++) _delay_ms(1000); //Een bepaalde tijd wachten scenario->zetAllesNaarRood(); //En alles weer naar rood laten gaan wachtrijbeheerder->haalUitWachtrij(scenario); for (int n = 0; n < variabelebeheerder->krijgVariabele('r'); n++) _delay_ms(1000); //En 5 sec wachten voordat het volgende scenario op groen gaat } }