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
?