Obligatorisk oppgave nr. 3
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. (Demo på gruppeøvelsen evt. video)
Regler for gjennomføring av obligatoriske oppgaver
Leveringsfrist
- 28/3 kl. 23.59
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)
- Komme i gang med UIO GPT-4
- Hvordan unngå å ødelegge Arduino
Læringsmål og metode
- Lære å programmere et litt større styringssystem
Når man har et generelt teknisk spørsmål er rekkefølgen:
1) Spør AI
- Fungerer det ikke, eller forstår man ikke svaret
- Spør AI om den delen av svaret du ikke forsto
- Spør AI på en annen måte
2) Spør gruppelærer
Husk at gruppelærers primære jobb er ikke å hjelpe, men å veilede deg til selv å finne løsninger
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.
Frivillig
Hvis man vil kan man koble 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.
