Obligatorisk oppgave nr. 3, trafikklys
Hva som skal leveres
Fysisk demonstrasjon for din gruppelærer av følgende:
- Arduino som styrer trafikklys som reagerer på at fotgjenger trykker inn en bryter. Hele sekvensen som starter med at bryteren trykkes må vises. Oppkobling på brødbrett
- Kjøring av samme kode på ekte trafikklys
All kode må lastes opp på Devilry. Det kan bli etterspurt muntlig forklaring av koden.
Regler for gjennomføring av obligatoriske oppgaver
Leveringsfrist
- 27/3
Sikkerhet, regler og ressurser
- Vårt labreglement / sikkerhet på labben
- Kjøp av Arduino student kit
- Nettressurser som medfølger Arduino student kit. Arduino Online Learning Content, (hvis man har lyst på mye mer nyttig info og eksempler)
- Hvordan unngå å ødelegge Arduino
Oppgave 1
I denne oppgaven skal dere lage Arduinokode som styrer et trafikklys i et lysregulert gangfelt.

LYS:
- Biler:
- Rød/gul/grønn trafikklys i begge retninger. Vi antar at lysene i begge retninger viser det samme.
- Implementeres ved 3 LEDs i serie med 220 Ohm motstander og kobles til Arduinos digitale utganger som følger:
- Grønn LED med seriemotstend kobles til utgang nr.2
- Gul LED med seriemotstend kobles til utgang nr.3
- Rød LED med seriemotstend kobles til utgang nr.4
- Implementeres ved 3 LEDs i serie med 220 Ohm motstander og kobles til Arduinos digitale utganger som følger:
- Rød/gul/grønn trafikklys i begge retninger. Vi antar at lysene i begge retninger viser det samme.
- Fotgjengere:
- Rød/grønn trafikklys i begge retninger over gangfeltet. Vi antar at lysene i begge retninger viser det samme.
- Implementeres ved 2 LEDs i serie med 220 Ohm motstander og kobles til Arduinos digitale utganger som følger:
- Grønn LED med seriemotstend kobles til utgang nr.5
- Rød LED med seriemotstend kobles til utgang nr.6
- Implementeres ved 2 LEDs i serie med 220 Ohm motstander og kobles til Arduinos digitale utganger som følger:
- Lys på bryterboksen for å indikere at bryter er trykket ned.
- Implementeres ved Arduinos innebygde LED på pinne 13.
- Rød/grønn trafikklys i begge retninger over gangfeltet. Vi antar at lysene i begge retninger viser det samme.
I/O:
- Inngang: knapp som fotgjengere trykker på for å få grønt lys
- Kobles til utgang nr.10
- Utgang: Lydsignal (piezo element) som kommuniserer lystilstand til fotgjenger
- Kobles til utgang nr.11
Tilstandene for trafikklysene:
- Så lenge ingen trykker på knappen, skal:
- Trafikklys biler:
- Lyse grønt.
- Trafikklys fotgjengere:
- Lyse rødt.
- Piezo elementet skal pipe i sekvens: 0,5 sekunder AV og 0,5 sekunder PÅ.
- Trafikklys biler:
- Når en fotgjenger trykker på knappen, skal:
- Trafikklys biler:
- Etter 2 sekund skal trafikklyset for biler lyse gult.
- Etter 1 sekund med gult skal trafikklyset for biler lyse rødt.
- Trafikklys fotgjengere:
- Innebygd LED på pinne 13 skal lyse når fotgjenger trykker inn bryteren inntil det blir grønt lys for fotgjengere.
- Når det har blitt rødt lys for biler skal det gå 1 sekund før det blir grønt for fotgjengere.
- Når det er grønt lys for fotgjengere skal piezo elementet pipe i selvens: 0,125 sekunder AV og 0,125 sekunder PÅ.
- Når det har vært grønt lys for fotgjengere i 6 sekunder, skal det blinke grønt (0.5 sekunder av/på) i tre iterasjoner. Deretter skal det lyse rødt for fotgjengere.
- Trafikklys bil:
- Når det har blitt rødt lys for fotgjengere blir det først gult lys for biler i 1 sekund, og så grønt lys for biler.
- Trafikklys biler:
(Demo på gruppeøvelsen evt. video. Video må også vise Arduinokoden på PC skjermen). Hele sekvensen som starter ved at fotgjenger trykker på knappen må vises.
Oppgave 2
Vi kobler Arduino til vårt "ekte" trafikklys vist i figuren under. Dette står på labben og kobles til Arduino med en ferdig konnektor som man stikker ned i alle de digitale pinnene samtidig. Har man brukt rette pinnenummre slik som spesifisert over, vil den lyse og fungere på samme måte som oppkoblingen på eget breadboard. NB: bryteren i dette lyset kobler pinne 10 til jord uten pullupmotstand når man trykker, slik at man må bruke pinMode(10, INPUT_PULLUP) og sjekke mot verdien LOW eller 0 for å se om bryteren er trykket inn.
