Mer oppgave 9 greier
This commit is contained in:
parent
00733e7977
commit
81800e580b
@ -74,15 +74,42 @@ int trafficLightLengths[] = {
|
|||||||
unsigned long lastStateChange = millis();
|
unsigned long lastStateChange = millis();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Huske på sist gang fotgjenger
|
* Huske på sist gang fotgjengermodus startet.
|
||||||
*/
|
*/
|
||||||
unsigned long pedLastPress = 0;
|
unsigned long pedLastStart = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Huske på sist gang fotgjengermodus var avsluttet.
|
||||||
|
* 500 ms etter dette skal trafikklys begynne på nytt.
|
||||||
|
*/
|
||||||
|
unsigned long pedLastEnd = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Antall millisekunder fotgjengere har på å "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 på rødt).
|
* Om fotgjengerne er "aktive", altså at trafikklys skal stoppe (og holde seg på 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 på dette.
|
* oppdater verdier basert på 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 nå som trafikklyssyklusen er ferdig.
|
||||||
|
*/
|
||||||
|
if (pedShouldActivate)
|
||||||
|
{
|
||||||
|
pedLastStart = currentTime;
|
||||||
|
pedActive = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (trafficState)
|
switch (trafficState)
|
||||||
|
Loading…
Reference in New Issue
Block a user