Oppgave 9: Fiks at det er 'delay' etter fotgjengerlys før trafikklys starter
This commit is contained in:
parent
ed88a808e3
commit
fc7a93c4e7
@ -145,6 +145,19 @@ bool pedLightOn = false;
|
|||||||
*/
|
*/
|
||||||
const int pedActivateAfter = 5000;
|
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
|
* Holder verdien om "fotgjengermodus" skal aktiveres
|
||||||
* etter neste trafikklyssyklus.
|
* etter neste trafikklyssyklus.
|
||||||
@ -238,6 +251,18 @@ void loop() {
|
|||||||
pedActive = false;
|
pedActive = false;
|
||||||
pedLightOn = false;
|
pedLightOn = false;
|
||||||
pedBlinkCount = 0;
|
pedBlinkCount = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Basert på `restartTrafficAfter` (500 ms) oppdaterer denne `trafficCanStart`.
|
||||||
|
* På 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 på 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
|
* 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.
|
* 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)
|
if (incrementTrafficState)
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user