Mer oppgave 9 greier

This commit is contained in:
Alex Thomassen 2019-01-25 14:15:59 +01:00
parent 00733e7977
commit 81800e580b
Signed by: Alex
GPG Key ID: 10BD786B5F6FF5DE

View File

@ -74,15 +74,42 @@ int trafficLightLengths[] = {
unsigned long lastStateChange = millis(); unsigned long lastStateChange = millis();
/** /**
* Huske sist gang fotgjenger * Huske sist gang fotgjengermodus startet.
*/ */
unsigned long pedLastPress = 0; unsigned long pedLastStart = 0;
/**
* Huske sist gang fotgjengermodus var avsluttet.
* 500 ms etter dette skal trafikklys begynne nytt.
*/
unsigned long pedLastEnd = 0;
/**
* Antall millisekunder fotgjengere har å "krysse".
*/
int pedLength = 8000;
/**
* Antall millisekunder mellom hvert "blink" for fotgjengerlyset.
*/
int pedBlinkLength = 250;
/**
* Antall ganger fotgjengerlyset har blinket.
*/
int pedBlinkCount = 0;
/** /**
* Om fotgjengerne er "aktive", altså at trafikklys skal stoppe (og holde seg rødt). * Om fotgjengerne er "aktive", altså at trafikklys skal stoppe (og holde seg rødt).
*/ */
bool pedActive = false; bool pedActive = false;
/**
* Holder verdien om "fotgjengermodus" skal aktiveres
* etter neste trafikklyssyklus.
*/
bool pedShouldActivate = false;
void loop() { void loop() {
unsigned long currentTime = millis(); unsigned long currentTime = millis();
@ -91,8 +118,11 @@ void loop() {
* oppdater verdier basert dette. * oppdater verdier basert dette.
*/ */
if (analogRead(pedSwitch) == LOW) { if (analogRead(pedSwitch) == LOW) {
pedLastPress = currentTime; pedShouldActivate = true;
pedActive = true; }
if (pedActive) {
// TODO: Oppgave 9
} }
/** /**
@ -108,7 +138,7 @@ void loop() {
} }
int lightLength = trafficLightLengths[trafficState]; int lightLength = trafficLightLengths[trafficState];
if (currentTime - lastStateChange >= lightLength) if (!pedActive && currentTime - lastStateChange >= lightLength)
{ {
trafficState++; trafficState++;
lastStateChange = currentTime; lastStateChange = currentTime;
@ -119,6 +149,15 @@ void loop() {
if (trafficState > 3) if (trafficState > 3)
{ {
trafficState = 0; trafficState = 0;
/**
* Aktiverer fotgjengermodus som trafikklyssyklusen er ferdig.
*/
if (pedShouldActivate)
{
pedLastStart = currentTime;
pedActive = true;
}
} }
switch (trafficState) switch (trafficState)