Oppgave 9: Fiks at det er 'delay' etter fotgjengerlys før trafikklys starter

This commit is contained in:
Alex Thomassen 2019-02-21 18:30:51 +01:00
parent ed88a808e3
commit fc7a93c4e7
Signed by: Alex
GPG Key ID: 10BD786B5F6FF5DE

View File

@ -145,6 +145,19 @@ bool pedLightOn = false;
*/
const int pedActivateAfter = 5000;
/**
* Hvor mange millisekunder programmet skal vente
* før den restarter trafikklyset, etter at fotgjengerlyset er ferdig.
*/
const int restartTrafficAfter = 500;
/**
* Denne brukes for å sjekke om trafikklys kan starte.
* I hovedsak brukes denne ETTER at fotgjengerlys er ferdig,
* siden det skal være et 500 ms delay etter fotgjengerlyset er ferdig.
*/
unsigned long trafficCanStart = 0;
/**
* Holder verdien om "fotgjengermodus" skal aktiveres
* etter neste trafikklyssyklus.
@ -238,6 +251,18 @@ void loop() {
pedActive = false;
pedLightOn = false;
pedBlinkCount = 0;
/**
* Basert `restartTrafficAfter` (500 ms) oppdaterer denne `trafficCanStart`.
* grunn av `trafficCanStart`, vil trafikklys restarte sine "sjekker" 500 ms
* etter at denne loopen er ferdig.
*
* Som en liten "dirty fix", legger jeg også til lengden hvor lenge det røde
* trafikklyset vanligvis lyser (`redLength`).
* Uten denne hadde trafikklyset gått fra rødt til gult rett etter 500 ms,
* noe som jeg tyder som feil i følge oppgaven.
*/
trafficCanStart = currentTime + restartTrafficAfter + redLength;
}
/**
@ -273,7 +298,7 @@ void loop() {
* Dette sjekker om `trafficState` skal inkrementes, altså at et viss antall millisekunder har gått
* siden trafikklys endret fra f.eks. gult til grønt, eller rødt til gult.
*/
bool incrementTrafficState = (!pedActive && currentTime - lastStateChange >= lightLength);
bool incrementTrafficState = (!pedActive && currentTime - lastStateChange >= lightLength && currentTime > trafficCanStart);
if (incrementTrafficState)
{
/**