Programmer et trafikklys med Arduino

Innledning

Læringsopplegget passer godt i naturfag og teknologi i praksis.

Læringsopplegget krever noe kjennskap til Arduino, men skal være greit å komme i gang med for en teknologiinteressert lærer.

Arduino er en liten datamaskin (mikrokontroller) som kan programmeres til å fungere sammen med tilkoblede komponenter som sensorer, lysdioder, høyttalere, knapper, motorer osv. I dette eksemplet bruker vi Arduino sammen med lysdioder (LED)  i rødt, gult og grønt for å imitere et lyskryss med fotgjengerovergang. Lysene må programmeres til å skifte mellom fargene og slik at biler og fotgjengere ikke får grønt lys samtidig.

Læringsopplegget baserer seg på et opplegg utviklet av Øystein Sørborg ved Naturfagssenteret, og har blitt videreutviklet og utprøvd i samarbeid med lærer Anders Fossen Trøan og elever ved Brundalen barneskole i Trondheim.

Slik gjør du

Beskriv et trafikklys i nærområdet

Som forberedelse kan elevene bli bedt om å beskrive et lyskryss de kjenner til fra nærområdet (forutsatt at det finnes). Dette kan gjøres med tekst, bilder, video eller en kombinasjon. Hvordan skifter lysene, hvor lenge lyser det, hvor lang tid har man ‘grønn mann’ etc.  Om man ønsker å trene kodeferdigheter, kan man be elevene beskrive logisk hva som skjer med setninger på formen hvis-så, ellers-så. (eks: hvis grønt lys, så rød mann, hvis fotgjenger trykker på knapp, så…).

Bygg en elektronisk krets som representerer trafikklyset

Elevene trenger en Arduino, et koblingsbrett, 5 LEDs (2 rød, 1 gul, 2 grønne), ledninger og resistorer. Det kan være en fordel å ha ledninger i ulike farger slik at rød ledning går til pluss, svart til minus, og rød, gul , grønn ledning til korresponderende lys. Da blir det lettere å se hvilken port som er koblet til hvilket lys (pass på at elevene forstår at farge på ledningene ikke egentlig har noe å si, de er like inni).

Elevene kan begynne med å lage trafikklyset for biler, se skjemategningen nedenfor. Her kan læreren godt stoppe opp og snakke litt om strøm, kretser, spenning, motstand og jording dersom det passer.

Programmer lysene til å skifte mellom rødt, gult og grønt

Etter at vi har bygd kretsen med trafikklyset, må vi programmere lysene slik at de skifter mellom rødt, gult og grønt. Det gjøres ved å knytte handling (verdi på/av) til portene lysdiodene er tilkoblet (i dette tilfellet port 9, 10 og 11). Koden for dette vises nedenfor (og ferdig Arduino-fil finnes som vedlegg). MERK: Det er ikke nødvendig at elevene (eller lærer for den del) forstår alt koden gjør, dette kan gjerne tilpasses fag og nivå. VI har gjort denne oppgaven med elever ned på 4. trinn.

———————

//Alt som står bak to skråstreker er kommentarer som blir ignorert av datamaskinen når programmet kjører

const int redPin = 11; // port for strøm til rød lysdiode

const int yellowPin = 10; // port for strøm til gul lysdiode

const int greenPin = 9; // port for strøm til grønn lysdiode

// setup() kjøres én gang ved oppstart  

void setup(){

  pinMode(redPin, OUTPUT); // aktiver porten

  pinMode(yellowPin, OUTPUT); // aktiver porten

  pinMode(greenPin, OUTPUT); // aktiver porten

}

// funksjonen loop kjøres om og om igjen

void loop(){

 analogWrite(redPin, 255); // slå på rødt lys

 analogWrite(yellowPin, 0); // slå av gult lys

 analogWrite(greenPin, 0); // slå av grønt lys

 delay(5000); // vent 5 sekund (5000 millisekund)  

 analogWrite(redPin, 255); // slå på rødt lys

 analogWrite(yellowPin, 255); // slå på gult lys

 analogWrite(greenPin, 0); // slå av grønt lys

delay(2000); // vent 2 sekund

analogWrite(redPin, 0); // slå av rødt lys

 analogWrite(yellowPin, 0); // slå av gult lys

 analogWrite(greenPin, 255); // slå på grønt lys

 delay(5000); // vent 5 sekund

analogWrite(redPin, 0); // slå av rødt lys

 analogWrite(yellowPin, 255); // slå på gult lys

 analogWrite(greenPin, 0); // slå av grønt lys

 delay(3000); // vent 3 sekund

————-

Når man sender koden til Arduinoen, vil lysene skrifte mellom rødt (fem sekund), rødt og gult (2 sekund), grønt (fem sekund, gult (3 sekund). Dette gjentas uendelig.

Stemmer dette med elevenes observasjon fra ‘sitt’ trafikklys? Antagelig er dette altfor raske skifter. Her kan elevene gjerne endre koden slik at den stemmer bedre med sin observasjon.

Utvid kretsen med lys for fotgjengere

Dette kan enten være en del av opplegget for alle, eller ekstra utfordring for de som trenger det.

Elevene lager så et trafikklys for fotgjengere (rødt/grønt) og kobler dette til Arduino på samme måte som tidligere. Her kan man la elevene prøve seg på å skrive koden for å få fotgjengerlyset til å skifte korrekt. De kan gjerne skrive kommentarer direkte i koden (//) som forklarer hva de har tenkt. Selv om de ikke får koden til å virke (et feilplassert komma eller et semikolon for mye er nok til at koden ikke virker), kan de godt ha tenkt ‘riktigere’ i forhold til trafikklyset funksjon enn de som får lysene til å blinke.

Eksempelkode til denne kretsen finnes også som vedlagt fil.

Utvid kretsen med knapp og lyd for fotgjengere

Antagelig har flere av elevene beskrevet et lyskryss der fotgjengere må trykke på en knapp for å få ‘grønn mann’ og at det ‘piper’ når man kan krysse veien.

Dersom man har en Piezo høyttaler (standard i alle Arduino kits), kan man koble på denne og programmere lyd på fotgjengere. Man kan også eksperimentere med en bryter (push button) for å aktivisere skifte til grønt fotgjengerlys.

Mål

Naturfag. Hovedområde Teknologi og design

Hovedområdet dreier seg om å planlegge, utvikle, framstille og vurdere funksjonelle produkter. Samspillet mellom naturvitenskap, teknologi og bærekraftig utvikling står sentralt i dette hovedområdet. Teknologi og design er et flerfaglig emne i naturfag, matematikk og kunst og håndverk.

5.-7. trinn: Mål for opplæringen er at eleven skal kunne

  • planlegge, lage og teste enkle produkter som gjør bruk av elektrisk energi, og reklamere for ferdig framstilt produkt

8.-10. trinn: Mål for opplæringen er at eleven skal kunne

  • utvikle produkter ut fra kravspesifikasjoner og vurdere produktenes funksjonalitet, brukervennlighet og livsløp i forhold til bærekraftig utvikling
  • beskrive et elektronisk kommunikasjonssystem, forklare hvordan informasjon overføres fra avsender til mottaker, og gjøre rede for positive og negative konsekvenser
  • bruke begrepene strøm, spenning, resistans, effekt og induksjon til å forklare resultater fra forsøk med strømkretser

Valgfag Teknologi i praksis 8.-10. trinn

Valfaget er strukturert i to hovudområde: Undersøkingar og Idéutvikling og produksjon

1. Undersøkingar

Hovedområdet handlar om korleis teknologiske produkt er konstruerte og verkar, kva for prosessar som inngår i utvikling og bruk, og kva for behov produkta dekkjer. Utvikling, konstruksjon og produksjon av teknologi inngår i hovudområdet, i tillegg til helse, miljø og sikkerheit (HMS). Kunnskap om korleis teknologien byggjer på nokre grunnleggjande prinsipp, og korleis ny teknologi byggjer på tidlegare erfaringar, høyrer også med til hovudområdet.

Kompetansemål

Mål for opplæringa er at eleven skal kunne

  • undersøkje teknologiske produkt og dei vala som er gjorde med omsyn til bruk, tekniske løysingar, funksjonalitet og design
  • demonstrere riktig bruk av utvalde verktøy
  • vurdere teknologiske produkt ut frå brukartilpassing, HMS-krav og miljøtilpassing

2. Idéutvikling og produksjon

Hovudområdet omfattar planlegging, framstilling og utprøving av eigne produkt og konstruksjonar. Planar for framstilling og utprøving av eigne produkt og konstruksjonar byggjer på kravspesifikasjon.

I utviklingsfasen er kjennskap til design og verkemåte til andre produkt viktig. Diskusjon omkring ulike sider ved produkta er viktig i alle fasar av produktutviklinga og kan også medverke til å forbetre prosessar og produkt

Kompetansemål

Mål for opplæringa er at eleven skal kunne

  • utvikle ein realistisk kravspesifikasjon for eit teknologisk produkt og beskrive kva behov produktet skal dekkje
  • framstille produktet med eigna materiale, komponentar, og funksjonelle teknologiske løysingar
  • bruke kunnskap om andre produkt i arbeidet med eige produkt
  • teste eigne produkt og foreslå moglege forbetringar

Utstyr

Til hver elev, elevpar eller gruppe av elever trenger man:

1 Arduino

1 koblingsbrett

En håndfull ledninger

2 Resistorer

Lysdioder i rødt, gult og grønt

Evt: piezo høyttaler og trykknapp (push button)

I tillegg trenger man en datamaskin med Arduino programvare installert (gratis fra arduino.cc/download)

Forberedelse

Det kan være en fordel om elevene har laget en enkel krets med arduino tidligere, for eksempel der man kun kobler på en lysdiode og får denne til å blinke. Du finner et opplegg for dette på Kodegenet.no

Tips

Opplegget kan enkelt tilpasses ulike nivå og man kan legge til mye eller lite teori avhengig av elevene man har. Kan tilpasses til barneskole, ungdomsskole og videregående skole.

Oppgaven kan være et enkelt trafikklys for bil, evt. med et gangfelt eller mer komplekse kryss med flere veier og fotgjengeroverganger.

Dersom fokus er på koding/programmering kan man be elevene skrive pseudo-kode, eller gi dem koden med innlagte feil (en enkel feil er å bytte portene i koden så de ikke samsvarer med tegningen).

Det kan være en fordel for de yngre elevene å være 2 sammen, men det bør ikke være for mange om en Arduino, det er viktig at alle får ‘henda på’

Oppgaveforslag

Oppgave 1 (enkelt trafikklys)

  1. Beskriv hvordan et lyskryss fungerer, tegn og forklar
  2. Bygg kretsen og programmer lysene til å lyse som lys i lyskryss gjør

Oppgave 2 (med fotgjengerovergang)

  1. Programmere slik at ikke det er grønt lys for både biler og fotgjengere samtidig
  2. Programmere lysene til å lyse som de gjør i virkeligheten (sjekke lyskryss i nærheten av skolen og se hvordan de oppfører seg)
  3. (avansert) Legge til lyd-kilde som lager lyd (når lager de lyd i virkelige lyskryss? Programmer dette)
  4. (Avansert) Sette inn enda en rekke lys for biler, og passe på at ingen kræsjer eller kjører på fotgjengere

Filvedlegg:

Trafikklys Arduino-filer

Tilleggsinformasjon

Tilleggsinformasjon

Naturfag etter 7.trinn

Designe og lage et produkt basert på brukerbehov., Utforske elektriske og magnetiske krefter gjennom forsøk og samtale om hvordan vi utnytter elektrisk energi i dagliglivet., Utforske, lage og programmere teknologiske systemer som består av deler som virker sammen.

Naturfag etter 10.trinn

Utforske, forstå og lage teknologiske systemer som består av en sender og en mottaker.

Matematikk etter 10.trinn

Utforske matematiske eigenskapar og samanhengar ved å bruke programmering.

Matematikk etter 8.trinn

Utforske korleis algoritmar kan skapast, testast og forbetrast ved hjelp av programmering.

Matematikk etter 9.trinn

Simulere utfall i tilfeldige forsøk og berekne sannsynet for at noko skal inntreffe ved å bruke programmering.