Obligatorisk oppgave nr. 1
Hva som skal leveres
Fysisk demonstrasjon for din gruppelærer av følgende:
- Arduino som kjører egen, eller medfølgende eksempelkode som får den innebygde LEDen på pinne nummer 13 til å kontinuerlig blinke med ca 1Hz.
- Arduino som tar i mot en byte sendt over USB/serieport fra egen kode i Python eller annet programmeringsspråk, der arduinoens LED slår seg på hvis byten har verdi 1 og slår seg av hvis byten har verdi 0. Man må kunne forklare hva koden gjør hvis det blir forespurt. Programmet på PCen trenger ikke å ta brukerinput under kjøring.
- En bryter koblet opp på brødbrettet, som når den trykkes ned får den innebygde LEDen på pinne nummer 13 til å lyse, når den slippes, skal LED slukke. Bryteren må bruke pullupmotstand fra ditt Arduino kit. Beregn og mål strøm gjennom motstand.
All kode må lastes opp på Devilry.
- Det kan bli etterspurt muntlig forklaring av koden, og gruppelærer vil typisk ikke godkjenne obligen hvis dere ikke kan forklare godt hva koden gjør.
Tilbakemeldinger
- Under demonstrasjon for gruppelærer i gruppetime, vil man kunne diskutere med gruppelærer de løsninger og metoder som er valgt, samt problemer og overraskelser som måtte dukke opp.
Regler for gjennomføring av obligatoriske oppgaver
Leveringsfrist
- 8/2
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
- Bruk av serieport på Windows/Mac/Linux. Hvordan, og hva som kan gå galt
- Hvordan unngå å ødelegge Arduino
Læringsmål
- Komme i gang med Arduino UNO og Arduino IDE
- Få litt erfaring med å koble opp komponenter, og bruk av motstand/bryter
- Få erfaring med å måle motstand og strøm
- Få erfaring med bruk av AI til utvikling av et innbakt system (Arduino + kode + analog elektronikk)
Metode og bruk av AI
Husk at formålet med obligene er at dere skal lære, samt kvalifisere dere til eksamen.
- Her kan AI brukes både til å unngå å lære (lure seg selv), samt lære pensum (og mer til) i rekordfart hvis dere vil. AI gir dere også skreddersydd og individuell tilpasset hjelp til å kvalifisere dere til eksamen, hvis dere ber om det.
Det er derfor viktig at dere bruker AI rett. Her er en mulig metode.
- Gå på forelesninger/fellesøvelser og sjekk det skriftlige kursmateriellet for relevant info. Målet er å forstå de faglige temaene.
- Start ut med å lese oppgavebeskrivelsen.
- Har dere nok kunnskap til å starte programmering og oppkobling, begynn med det. Hvis ikke:
- Vis AI oppgaveteksten, og be AI om å forklare det som skal til for at dere kan skrive koden selv, samt koble opp. Ikke be AI om koden direkte.
- Begynn å skriv koden selv, og etter hvert koble opp, og med en gang dere kommer bort i noe dere ikke forstår - be AI om å forklare det.
- Be så AI om å kommentere den koden dere selv har skrevet, og forklare om det er rett forstått, og om det er lur eller ikke lur kode.
- Ha så en interaksjon med AI mens dere selv fullfører koden, der målet er at dere skal forstå alt, og ende opp med optimal kode for obligen.
- Forklar for AI hvordan dere har koblet opp kretsen, evt. bruk bilde, og diskuter med AI om det er rett eller galt koblet, samt hvorfor det virker eller ikke virker.
- Be AI om å lage multiple choice eksamenspørsmål basert på obligen, last gjerne opp gamle eksamensoppgaver i IN1080, og test dere selv.
Husk at vi har også fysiske gruppelærere.
Oppgave 1
Montere Arduino UNO på brettet
Vi begynner med å montere Arduino UNO kortet til den medfølgende plastikkbasen og deretter feste brødbrettet som vist i bildet under.

Tips: Det er vilkårlig hvilken vei du fester brødbrettet , men det er anbefalt å feste brødbrettet slik at nummereringen er lik som i Arduinos nettressurser.
Installasjon av Arduino IDE
For å programmere Arduinoen, trenger vi Arduino Desktop IDE. Vi installerer programvaren, og bruker så gjerne et eksempelprogram som følger med Arduino Desktop IDE. Programmet gjør at en LED på Arduinoen blinker. Arduino IDE er installert på alle Linux termstuemaskiner på Assembler.
Dersom du bruker egen laptop, last ned og installer Arduino Desktop IDE (Vi bruker Arduino Desktop IDE versjon 2.0, ikke Arduino Web Editor). Hvis du opplever problemer med installasjonen, kan du få hjelp av gruppelærer i gruppetime.
Pakk ut USB kabelen og koble Arduinoen til PCen. I Arduino IDE, gå til Tools->Board og sjekk at brettet som er valgt er Arduino UNO. Gå deretter til Tools->Serial Port og velg porten som på Linux/Mac antageligvis heter /dev/ttyACM0 eller lignende (som vist i bildet under). På Windows kan porten hete COMX, der X er et nummer. Navnet på porten kan variere, avhengig av operativsystem og hvor mange USB-enheter du har tilkoblet. Se tips evt. dokumentasjon på Arduinos nettside her.

For å teste at programvaren fungerer, skal dere programmere Arduinoen til å blinke. Gå til File->Examples->01.Basics->Blink. Dette åpner et nytt vindu med koden som får en LED på Arduinoen til å blinke. For å kjøre koden på Arduinoen, trykk på høyre-pilen i menyen (som vist i bildet under). Dette vil kompilere og overføre koden til Arduinoen.

Når Arduinoen er programmert blinker en LED av og på med et sekunds intervall. Prøv å gå inn i koden og juster parameteren til funksjonen delay, slik at LEDen er på i 4 sekunder, og av i 2 sekunder. Merk at delay parameteren er gitt i millisekunder.
Oppgave 2
I denne oppgaven skal dere sette opp datakommunikasjon mellom PCen og Arduinoen. Målet er å kunne skru av og på den innebygde LEDen på Arduinoen fra egen programkode på PCen. Når man sender en byte-variabel med verdi 1 fra PCen skal Arduinos innebygde LED på pinne 13 lyse, Når man sender 0 skal den slukke.
- Spør AI hvordan man overfører en byte fra ditt favoritt programmeringsspråk/rammeverk til Arduino. Derifra kan du bruke digitalWrite() til å styre LEDen
- Les nøye det AI svarer og spør gjerne utdypende om begreper som blir listet opp og hva som må til for at en slik datakommunikasjon skal virke. Er det noe du ikke forstår - spør utdypende om en ny forklaring
- Virker ikke kommunikasjonen - klag og spør AI om hva som kan være galt
- Enkle språk å bruke på PCen er Python eller Java via Processing.
Noen tips og begreper:
- Man må bruke serieportkommunikasjon
- Arduino må først programmeres
- Man må sette opp serieportkommunikasjon på Arduino, husk å bruke samme baudrate som du bruker på PCen
- Man må programmere Arduino til å kontinuerlig kjøre kode som leser av serieporten, NB Serial.read() er ikke-blokkerende. Man kan evt. velge å bruke testen Serial.available() == 0 i tillegg hvis man synes at det er et problem
- I ditt valgte programmeringsspråk på PCen må man først åpne rett serieport, (husk å lukke den når du er ferdig)
NB: Det blir ofte litt problem med valg og overføring av variabeltype mellom to forskjellige programmer. Fungerer ikke "byte" kan man bruke "char" osv. Dette er et typisk "real world" problem, og den feilsøkningen man her går inn i er nyttig å har vært i gjennom
Oppgave 3
I denne oppgaven kobler dere opp en bryter på brødbrettet. For å få denne bryteren til å gi ut 0V/5V må dere koble den i serie med en 1KOhm motstand opp til 5V. Bryteren har 4 terminaler, og for å finne ut hvilke par som blir brutt, kan dere bruke det medfølgende multimeteret. Sett det til å vise motstand (Ohm). Bruk AI som lærer, samt det dere har lært på forelesning til å finne ut hvordan man kobler opp systemet.

Spenningen på 5V tar vi fra Arduino, men vi ønsker å sjekke at Arduino maks leverer ut ca. 1mA på denne pinnen. Beregn strømmen, og mål faktisk strøm med multimeteret. Multimeteret må stå i ampere modus