diff --git a/Sketches/sketch_jan10a-ArduinoInnlevering/sketch_jan10a-ArduinoInnlevering.ino b/Sketches/sketch_jan10a-ArduinoInnlevering/sketch_jan10a-ArduinoInnlevering.ino index ce018e8..6d63f07 100644 --- a/Sketches/sketch_jan10a-ArduinoInnlevering/sketch_jan10a-ArduinoInnlevering.ino +++ b/Sketches/sketch_jan10a-ArduinoInnlevering/sketch_jan10a-ArduinoInnlevering.ino @@ -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 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 * 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) { /**