Prototyping med Arduino del 3

Like dokumenter
Prototyping med Arduino del 2

INF1510: Bruksorientert design

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

INF1510: Bruksorientert design

INF1510: Bruksorientert design

IN1060: Bruksorientert design

Steg 1: Installere programvaren

7-Segment Display Nybegynner Arduino Lærerveiledning

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

WORKSHOP BRUK AV SENSORTEKNOLOGI

Bruk av interrupt og Timer i Arduino-program.

Pseudonym presenterer TEKNISK RAPPORT. Medlemmer: Camilla Christensen, Emma Tvinnereim, Hedda Dyngeland og Maren Berge

ARDUINO STUDIELABEN PROGRAMMERING DIGITALE/ANALOGE INNDATA/UTDATA LYSDIODER FRITZING. Roger Antonsen INF januar 2012

INF1510 Oblig #1. Kjetil Heen, februar 2016

Ultralydsensor. Introduksjon. Litt om ultralydsensorer. Arduino. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Python: Input og output

Elektronikk og programmering av ubrukelige roboter

SUPER DISCLAIMER. Vi endrer opplegget litt fra år til år, og vi hører på dere!

En to-timers oppskrift for å bygge og programmere en Arduino-drevet strikk-

Litt mer om Arduino. Roger Antonsen Sten Solli INF januar 2011

2. La det bli lys Ditt første Arduino program

Arduino bilen er en selvgående liten robot. Roboten består av:

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

EKSAMEN. Informasjon om eksamen. Emnekode og -navn: ITD13012 Datateknikk. Dato og tid: timer. Fagansvarlig: Robert Roppestad

EKSAMEN (Del 2, våren 2015) Løsningsforslag

Teknisk dokumentasjon for Ludosphaera

Prototyping og kommunikasjon med brukere

Universitetet i Oslo. Institutt for informatikk. IN Bruksorientert design TEKNISK RAPPORT. Pentagon. Christopher Kløv Andersen

IN1060: Bruksorientert design

Teknisk rapport. Julian Vars. Haweya Jama. Kjersti Viksaas. Yas Taheranpour. Inger Nordby Grønn. Institutt for informatikk. Universitetet i Oslo

Teknisk Rapport. Effektivisering av natteravnene i Oslos ressurser. Kristine Lokke Lotte Stubdal Renate Farberg Ane Marthe Ness Anna Helgestad

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærere: Robert Roppestad. Hele oppgavesettet består av 8 oppgaver, samt 1 vedlegg.

Læringsmål og pensum. if (be): else (not_to_be):

Reunited. Hanna Dokken, Rhea Toling, Marlene Hasle, Suresh Sapkota & Jonas Blårud. Teknisk rapport. IN Bruksorientert design.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

består av 7 sider inklusiv denne forsiden og vedlegg. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

INF Seminaroppgaver til uke 3

Lokal læreplan i valgfag programmering Utkast august 2018

Informasjon Eksamen i IN1000 høsten 2017

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Bruk av interrupt og Timer i Arduino-program.

Teknisk rapport. Språkopplæring i norsk for unge voksne. Fredrik T. Haugstulen Nina Sophie Justnæs Ina Ek Bjørntvedt Sondre Sandberg

Løse reelle problemer

Øvingsforelesning 1 Python (TDT4110)

TDT4110 IT Grunnkurs Høst 2015

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

TDT4100 Objektorientert programmering

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

MONTERINGS- OG BRUKSANVISNING FOR GARASJEPORTÅPNER

Høgskoleni østfold EKSAMEN. Oppgavesettet består av 8 sider inklusiv denne forsiden og vedlegg.

Programmeringsspråket C

Kodetime for Nordstrand barneskole

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Teknisk Rapport HVASS

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Kom i gang med micro:bit

INF2810: Funksjonell Programmering

Øvingsforelesning 5 Python (TDT4110)

INF2810: Funksjonell Programmering

Visuell Programmering: Kom i gang med Processing

1. Rullende navn, s 3 2. Smilefjes, s 5 3. Skritteller, s 7 4. Orakel, s 9 5. Stein, saks og papir, s Kompass, s 14

Teknisk rapport. IN Bruksorientert design. boks

MAT1030 Plenumsregning 1

Teknisk rapport GRUPPE 101

TDT4110 IT Grunnkurs Høst 2012

PXT: Snake. Introduksjon. Skrevet av: Håvard Nygård Jakobsen

Øvingsforelesning 5 Python (TDT4110)

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Teknisk rapport for prototype «BOWMASTER»

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

FORDYPNINGSEMNE 2012

Feilmeldinger, brukerinput og kontrollflyt

MAT1030 Diskret Matematikk

INF1000 Eksamen 2014 (modifisert)

Verden - Del 2. Intro. Skrevet av: Kine Gjerstad Eide

BRUK OG MONTERING AV FJERNKONTROLL

Finne ut om en løsning er helt riktig og korrigere ved behov

Sengealarm PIR Brukerveiledning. Sengealarm (bevegelsesdetektor) PIR-2003 INNHOLD

Dagens tema: 12 gode råd for en kompilatorskriver

Arduino bilen er en selvgående liten robot. Roboten består av:

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

INF2810: Funksjonell Programmering

Løse reelle problemer

INF2810: Funksjonell Programmering

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

MONTERING AV FORSTERKERBRAKETT OG FESTEBRAKETT FOR GM 800 & GM1000 PORTÅPNERE TIL GRANDAL GARASJEPORTER

Skrevet av: Oversatt fra microbit-micropython.readthedocs.io (

Innholdsfortegnelse. Sector Alarm AS...4. Ordliste Alarmsystemets betjeningspanel Hva gjør jeg ved utløste alarmer...

En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

INF Uke 11. Ukeoppgaver oktober 2012

Kan du se meg blinke? trinn 90 minutter

INF1411 Obligatorisk oppgave nr. 3

Introduksjon til objektorientert programmering

Tell sekunder. Introduksjon. Skrevet av: Teodor Heggelund. I denne oppgaven skal vi lage vårt eget spill!

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Eksamensoppgaver 2014

Transkript:

Prototyping med Arduino del 3 Magnus Li magl@ifi.uio.no INF1510 06.02.2017

Arduinoundervisningen Forelesninger Siste i dag. Gjennomgang av grunnleggende temaer Teknisk verksted i dag, 13.02 & 20.02 Hjelp til ukesoppgaver Gruppetimer Denne uken Hjelp til ukesoppgaver Obligatoriske oppgaver 1) Frist 10.02 Utvalgte ukesoppgaver skal leveres 2) Frist 24.02 Miniprosjekt skal leveres

Oblig 1 - frist fredag 23:59! Obligatoriske oppgaver 1) Frist 10.02 Utvalgte ukesoppgaver skal leveres 2) Frist 24.02 Miniprosjekt skal leveres

Oblig 2: konkurranse Gavekort på Kjell & Company + mye heder og ære

Nå - Litt repetisjon - Tidsutsettelse uten delay() - Trøbbel ved knappeklikk - debounce - Modularisering av kode - Veien videre

Forrige uke

Elektrisitet i kretser Elektrisitet i kontrollerte former beveger seg alltid i det vi kaller en sluttet krets. Batteri LED + -

Elektrisitet i kretser Elektrisitet i kontrollerte former beveger seg alltid i en sluttet krets, og vil ta veien med minst motstand. Batteri LED + -

Digitale og analoge signaler Med Arduino må vi forholde oss til to typer signaler. Analoge, som kan ha mange verdier innenfor et bestemt spekter. Digitale, som kun består i AV og PÅ.

SETUP OG LOOP Da loop kjører i en evig løkke vil all kode her skje igjen og igjen, noe som former måten vi programmerer på. Løkken gjør at vi kan lytte etter signaler fra portene hele tiden. Arduino starter void setup() { //skjer en gang //lytte etter input Evig løkke

Tidsutsettelse uten delay()

Mål: Vi ønsker å lage et system hvor et lys blinker av og på hvert sekund. Samtidig vil vi at man skal kunne klikke på en knapp når som helst. Når knappen klikkes skal lyset slutte å blinke

DELAY() void setup() { pinmode(12, OUTPUT); int led = 6; void setup() { pinmode(led, OUTPUT); digitalwrite(led, HIGH); delay(1000); digitalwrite(led, LOW); delay(1000); digitalwrite(12, HIGH); delay(1000); Hviler i 1 sekund digitalwrite(12, LOW); delay(1000); Evig løkke Hviler i 1 sekund

DELAY() Evig løkke digitalwrite(12, HIGH); delay(1000); Hviler i 1 sekund digitalwrite(12, LOW); delay(1000); Hviler i 1 sekund Det ikke være mulig å registrere nye signaler som kommer inn i tidsrommet til delay().

Løsning: telle tid Vi teller hvor lang tid det har gått siden forrige gang vi skrudde av/på lyset. void setup() { pinmode(12, OUTPUT); Hvis det har gått 1 sekund (1000 millisekunder), så skrur vi det av/på. if (currenttime - previoustime >= 1000)) { //skru av eller på LED previoustime = currenttime; //lytte til knapp

Løsning: telle tid previoustime = 0 currenttime = 300 void setup() { pinmode(12, OUTPUT); (currenttime - previoustime >= 1000) ==? if (currenttime - previoustime >= 1000)) { previoustime = 0 currenttime = 1000 //skru av eller på LED previoustime = currenttime; (currenttime - previoustime >= 1000) ==? //lytte til knapp

Løsning: telle tid previoustime = 1000 currenttime = 1300 void setup() { pinmode(12, OUTPUT); (currenttime - previoustime >= 1000) ==? if (currenttime - previoustime >= 1000)) { previoustime = 1000 currenttime = 2002 //skru av eller på LED previoustime = currenttime; (currenttime - previoustime >= 1000) ==? //lytte til knapp

Millis() Metoden millis() returnerer tiden siden Arduino startet opp i millisekunder. void setup() { pinmode(12, OUTPUT); 5 sekunder etter at Arduino starter vil millis() returnere 5000. Dette kan vi bruke for å telle tid. currenttime = millis(); if (currenttime - forrige tid >= 1000)) { //skru av eller på LED previoustime = currenttime; //lytte til knapp

Tidsutsettelse med millis() int led = 2; unsigned long previoustime = 0; unsigned long currenttime; int interval = 1000; deklarering av variabler void setup() { pinmode(led, OUTPUT); void setup() { pinmode(led, OUTPUT); currenttime = millis(); currenttime = millis(); if (currenttime - forrige tid >= 1000)) { if (currenttime - previoustime >= interval) { //skru av eller på LED //skru lys av/på previoustime = currenttime; previoustime = currenttime; //lytte til knapp

Få lyset til å blinke currenttime = millis(); if (currenttime - previoustime >= interval) { //skru lys av/på previoustime = currenttime;

Blink int led = 2; unsigned long previoustime = 0; unsigned long currenttime; int interval = 1000; boolean ledstate = 0; void setup() { pinmode(led, OUTPUT); currenttime = millis(); if (currenttime - previoustime >= interval) { if (ledstate == false) { digitalwrite(led, HIGH); ledstate = true; else { digitalwrite(led, LOW); ledstate = false; previoustime = currenttime;

Blink int led = 2; unsigned long previoustime = 0; unsigned long currenttime; int interval = 1000; boolean ledstate = true; void setup() { pinmode(led, OUTPUT); currenttime = millis(); if (currenttime - previoustime >= interval) { ledstate =!ledstate; digitalwrite(led, ledstate);! (utropstegn) reverserer verdien previoustime = currenttime;!true = false (1 > 2) = false!(1 > 2) = true

Blink int led = 2; unsigned long previoustime = 0; unsigned long currenttime; int interval = 1000; void setup() { pinmode(led, OUTPUT); currenttime = millis(); if (currenttime - previoustime >= interval) { digitalwrite(led,!digitalread(led)); previoustime = currenttime;! (utropstegn) reverserer status av porten :-)

Modularisere koden int led = 2; unsigned long previoustime = 0; unsigned long currenttime; int interval = 1000; Når programmet begynner å vokse, kan det fort bli rotete i loop(). void setup() { pinmode(led, OUTPUT); Derfor gjelder det å legge alle deler av koden som har med hverandre å gjøre, ut i egne funksjoner. currenttime = millis(); if (currenttime - previoustime >= interval) { Det gjør det lettere å lese koden for andre. Dermed blir det bedre å samarbeide i prosjektet. digitalwrite(led,!digitalread(led)); previoustime = currenttime; NB! Dette er veldig viktig i oblig 2, og i koden til prosjektet.

Modularisere koden unsigned long currenttime = millis(); if (currenttime - previoustime >= interval) { blink(led, 1000); digitalwrite(led,!digitalread(led)); void blink(int led, int interval) { previoustime = currenttime; unsigned long currenttime = millis(); if (currenttime - previoustime >= interval) { digitalwrite(led,!digitalread(led)); previoustime = currenttime;

Modularisere koden blink(led, 1000); blink(led, 1000); void blink(int led, int interval) { void blink(int led, int interval) { unsigned long currenttime = millis(); unsigned long currenttime = millis(); if (currenttime - previoustime >= interval) { toggle(led); previoustime = currenttime; if (currenttime - previoustime >= interval) { digitalwrite(led,!digitalread(led)); previoustime = currenttime; void toggle(int pin) { digitalwrite(pin,!digitalread(pin));

Mål: Vi ønsker å lage et system hvor et lys blinker av og på hvert sekund. Samtidig vil vi at man skal kunne klikke på en knapp når som helst. Når knappen klikkes skal lyset slutte å blinke

Legge til funksjonalitet for knapp blink(led, 1000); void blink(int led, int interval) { unsigned long currenttime = millis(); if (currenttime - previoustime >= interval) { toggle(led); previoustime = currenttime; void toggle(int pin) { digitalwrite(pin,!digitalread(pin)); På grunn av modulariseringen vår, slipper vi nå å forholde oss til akkurat hvordan blinkingen vår er implementert, og kan lett fokusere på å implementere knappen vår.

Legge til funksjonalitet for knapp int button = 8; boolean shouldblink = true; if (shouldblink == true) { blink(led, 1000); (skitten og tungvind implementasjon) Først må vi legge til en variabel som kan ta vare på om lyset skal blinke

Legge til funksjonalitet for knapp int button = 8; boolean shouldblink = true; if (shouldblink == true) { blink(led, 1000); if (digitalread(button) == HIGH) { shouldblink = false; (skitten og tungvind implementasjon) Så legger vi til en if, hvor vi sjekker om knapp har blitt klikket. Hvis klikket setter vi shouldblink til false.

Evaluering av boolean / HIGH og LOW int button = 8; boolean shouldblink = true; int button = 8; boolean shouldblink = true; if (shouldblink == true) { blink(led, 1000); if (digitalread(button) == HIGH) { shouldblink = false; if (shouldblink) { blink(led, 1000); if (digitalread(button)) { shouldblink = false; (skitten og tungvind implementasjon) (penere implementasjon)

Mer modularisering? int button = 8; boolean shouldblink = true; int button = 8; boolean shouldblink = true; if (shouldblink) { blink(led, 1000); if (digitalread(button)) { shouldblink = false; if (shouldblink) { blink(led, 1000); if (isclicked(button)) { shouldblink = false; boolean isclicked(int pin) { return digitalread(pin);

Trøbbel med knappeklikk debounce

Trøbbel med knappeklikk Når vi klikker en knapp kan vi ha ulike scenario avhengig av hva vi ønsker å gjøre. For eksempel: 1. 2. Slå av en blinkende LED. Få lampen til å blinke når vi holder inne knappen 3. Slå av eller på blinkingen hver gang knapp klikkes Slå på blinkingen etter 5 klikk 4.

Trøbbel ved knappeklikk 1. Slå av blinkende LED 2. Få LED til å blinke når vi holder inne knapp boolean shouldblink = true; if (shouldblink) { blink(led, 1000); if (isclicked(button)) { shouldblink = false; if (isclicked(button)) { blink(led, 1000);

Trøbbel med knappeklikk Når vi klikker en knapp kan vi ha ulike scenario avhengig av hva vi ønsker å gjøre. For eksempel: 1. 2. Slå av en blinkende LED. Få lampen til å blinke når vi holder inne knappen 3. Slå av eller på blinkingen hver gang knapp klikkes Slå på blinkingen etter 5 klikk 4.

Trøbbel ved knappeklikk 3. Slå av eller på blinkingen hver gang knapp klikkes boolean shouldblink = true; if (shouldblink) { blink(led, 1000); if (isclicked(button)) { shouldblink =!shouldblink; boolean isclicked(int pin) { return digitalread(pin);

Trøbbel ved knappeklikk 3. Slå av eller på blinkingen hver gang knapp klikkes boolean shouldblink = true; if (shouldblink) { blink(led, 1000); if (isclicked(button)) { shouldblink =!shouldblink; boolean isclicked(int pin) { return digitalread(pin); shoudblink blir her endret mellom true og false flere ganger fordi loop rekker å gå flere runder mens vi klikker knappen

Trøbbel ved knappeklikk 4. Slå på blinkingen etter 5 klikk int clickcount = 0; if (clickcount >= 5) { blink(led, 1000); if (isclicked(button)) { clickcount++; boolean isclicked(int pin) { return digitalread(pin);

Trøbbel ved knappeklikk 4. Slå på blinkingen etter 5 klikk int clickcount = 0; if (clickcount >= 5) { blink(led, 1000); if (isclicked(button)) { clickcount++; boolean isclicked(int pin) { return digitalread(pin); Det blir her registrert flere knappeklikk fordi loop rekker å gå mange runder før vi slipper knappen

Debounce 1: med delay() 4. Slå på blinkingen etter 5 klikk int clickcount = 0; if (clickcount >= 5) { blink(led, 1000); if (isclicked(button)) { clickcount++; boolean isclicked(int pin) { return digitalread(pin); boolean isclicked(int pin) { if (digitalread(pin)); delay(50); return true; return false; Her bruker vi delay() for å pause loop litt, slik at vi ikke registrerer flere knappeklikk på ett klikk. Problem: delay()

Debounce 2: med millis()-utsettelse int clickcount = 0; unsigned long lastbuttonpush = 0; int debouncedelay = 50; boolean isclicked(int pin) { if (clickcount >= 5) { blink(led, 1000); if (isclicked(button)) { clickcount++; if ((millis() - lastbuttonpush) >= debouncedelay) { if (digitalread(button)) { lastbuttonpush = millis(); return true; return false;

Debounce 3: med millis()-utsettelse og lastbuttonstate int clickcount = 0; unsigned long lastbuttonpush = 0; int debouncedelay = 50; boolean isclicked(int pin) { if (clickcount >= 5) { blink(led, 1000); if (isclicked(button)) { clickcount++; if ((millis() - lastbuttonpush) >= debouncedelay) { if (digitalread(button)) { lastbuttonpush = millis(); return true; return false; Fortsatt problemer! Hvis vi holder knappen lenger enn 50 millisekunder vil flere klikk fortsatt registreres. For løsning se: https://www.arduino.cc/en/tutorial/debounce

(Mer) modularisering

Modularisering Å modularisere koden vår i funksjoner hjelper oss med: - Bryte opp et problem til mindre delproblemer Lage lettlest kode Koble sammen arbeidet til flere personer Dette ved å abstrahere bort kompleksitet Still deg disse spørsmålene før du begynner å løse problemet, og hele tiden underveis: - Hvilke funksjonalitet må jeg ha for å løse problemet? Danner grunnlag for hovedfunksjoner - Bruker jeg denne (del)-koden flere ganger? Kanskje det bør være en egen funksjon. - Kan denne delen av koden uttrykkes som funksjonalitet i seg selv? Legg det i en egen funksjon

Modularisering Vi ønsker en boks som kan måle forskjellige faktorer i rommet den er i, og si ifra til bruker dersom noen verdier er ugunstige i forhold til hva man ser på som et godt arbeidsmiljø. Temp Lys Tilt Input fra miljø Lys, temperatur, luftfuktighet. Fuktighet Input fra bruker Tilt-sensor Output (for feedback til bruker) LED-lys. Lyd med piezo-element. LED Piezo

Modularisering Tanken er at boksen skal kunne stå på et bord, og ha alle sensorer inkludert. Hvilken vei boksen står vil bestemme om den er på eller av. For å oppnå dette kan vi benytte en tilt-sensor. Off On

Modularisering For å holde oversikt i prosjektet er det nå viktig at vi tenker på hvordan vi skal strukturere koden. Temp Lys Tilt Fuktighet Det kan være lurt å implementere hver av de ulike funksjonene vi har listet opp i forskjellige funksjoner. LED Piezo

Modularisering Her har vi satt opp et skjelett for hvilke metoder vi kan benytte for å løse problemet. boolean lighttoolow() { Inndelingen gjør det også lett å dele opp kodingen på flere personer. boolean humiditytoohigh() { boolean temperaturetoohigh() { Input fra miljø Lys, temperatur, luftfuktighet. boolean on() { Input fra bruker (er den på) Tilt-sensor

Modularisering Slå av og på int tiltswitch = 2; boolean on() { return digitalread(tiltswitch); Sjekke lysnivå int lightsensor = A0; int lightthreshold = 420; boolean lighttoolow() { int light = analogread(lightsensor); return (light < lightthreshold);

Modularisering Feedback til bruker Vi trenger også noen metoder for å gi feedback til bruker via LED-pærer og Piezo-element. void alertuser(int ledport) { blink(ledport); makesound(seconds); void blink(int ledport) { //implementasjon void makesound(int seconds) { //implementasjon

Modularisering if (on()) { if (lighttoolow()) { alertuser(lightled); else if (humiditytoohigh()) { alertuser(humidityled); else if (temperaturetoohigh()) { alertuser(temperatureled); Koden til venstre gir et eksempel på hvordan loop kan se ut. Siden vi har brukt selvforklarende navn på metodene, er det lett for alle å se hva de gjør, og alle er ikke nødt til å sette seg inn i detaljer for hver metode.

Oppsummering - modularisering Å modularisere koden vår i funksjoner hjelper oss med: - Bryte opp et problem til mindre delproblemer Lage lettlest kode Koble sammen arbeidet til flere personer Dette ved å abstrahere bort kompleksitet Still deg disse spørsmålene før du begynner å løse problemet, og hele tiden underveis: - Hvilke funksjonalitet må jeg ha for å løse problemet? Danner grunnlag for hovedfunksjoner - Bruker jeg denne (del)-koden flere ganger? Kanskje det bør være en egen funksjon. - Kan denne delen av koden uttrykkes som funksjonalitet i seg selv? Legg det i en egen funksjon

Arduinoprototypen i prosjektet Shields

Shields

Shields Kilde: learn.adafuit.com

Kjøpe Shields Det finnes mange steder å handle komponenter til Arduino. Sparkfun Kjell & company Adafruit.com Det er lurt å sjekke hva slags API/ bibliotek som er utviklet til komponenten på forhånd. Dette kan man som regel finne på nettsiden til produktet. Det er også viktig å lese nøye hvordan komponenten skal kobles. Noen komponenter skal for eksempel benytte 3.3V-port i stedet for 5V, og kan bli ødelagt om man blander disse.

Arduinoprototypen i prosjektet Processing

Processing Processing er et språk og en verktøykasse hvor vi enkelt kan lage visuelle elementer og interaksjon mellom disse og bruker. Det er forholdsvis enkelt å få dette til å snakke med Arduino-brett. Dette gjør at vi kan lage skjermbaserte visualiseringer og interaksjonselementer som kan styres fra, eller styre Arduino. Les mer og lær her.

Arduinoprototypen i prosjektet Fra breadboard til prototype

Fysisk utforming

Fysisk utforming Handler om å være kreativ. - Lodding Ledninger Kontakter 3D-printing Treverk f.eks. kryssfinér Lim Det er mye utstyr til dette på Sonen. Husk: Dimensjonene vi ønsker å teste er viktig for valg i utformingen av prototypen.

3D-printing En 3D-printer bruker et passende materiale til å skrive ut lag på lag for å printe i tre dimensjoner. Det er en slik printer på Sonen som bruker plast i forskjellige farger som materiale. Denne kan dere bruke, og det er bare å spørre de som er der om assistanse. For å lage modellene brukes et 3D-skisseprogram som for eksempel Sketchup.

Lodding Lodding er en teknikk vi bruker for å feste deler, kort, kontakter og kabler sammen. Loddebolten er varm, og smelter dermed loddetinn. Når dette blir kaldt holder det sammen det vi ønsker å feste.

Fremover

Arduinoundervisningen fremover Forelesninger Ferdig. Obligatoriske oppgaver 1) Frist 10.02 Utvalgte ukesoppgaver skal leveres 2) Frist 24.02 Miniprosjekt skal leveres Teknisk verksted Mandag i dag, 13.02 & 20.02 Hjelp til ukesoppgaver Gruppetimer Uke 6 Hjelp til ukesoppgaver

Forelesning neste uke Mandag 13.02 Kvalitative undersøkelsesmetoder