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

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

Prototyping med Arduino del 3

IN1060: Bruksorientert design

Prototyping med Arduino del 2

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

Teknisk dokumentasjon for Ludosphaera

INF1510: Bruksorientert design

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

Teknisk Rapport HVASS

IN1060: Bruksorientert design

Teknisk rapport GRUPPE 101

INF1510: 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

Teknisk rapport. IN Bruksorientert design Vår Universitetet i Oslo - Institutt for informatikk

INF1510: Bruksorientert design

WORKSHOP BRUK AV SENSORTEKNOLOGI

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

Elektronikk og programmering av ubrukelige roboter

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

Teknisk rapport. IN Bruksorientert design. boks

INF1510 Oblig #1. Kjetil Heen, februar 2016

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

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

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

Python: Input og output

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

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

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

Prototyping og kommunikasjon med brukere

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Steg 1: Piler og knappetrykk

Snurrige figurer. Steg 1: En snurrig figur. Sjekkliste. Introduksjon

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

PXT: Bjelleklang. Introduksjon. Skrevet av: Kolbjørn Engeland, Julie Revdahl

Uendelig bakke. Introduksjon. Skrevet av: Kine Gjerstad Eide

"Hjerneteppe!" er en huskelek hvor du skal huske stadig lengre rekker med bokstaver!

Steg 1: Installasjon. Steg 2: Installasjon av programvare. ved nettverkstilkoblingen på baksiden av kameraet. Kameraet vil rotere og tilte automatisk.

Oppkobling av RGB lyslist

Espen. The Five Year Club. Anna. Aleksander. Jakob

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

Sprettball Erfaren ComputerCraft PDF

Mattespill Nybegynner Python PDF

La oss begynne enkelt. Vi vil først se hvordan vi kan flytte og snurre på en figur.

1. Arduino Bluetooth 2 HC-05 modul

Bruksanvisning Zoomax Snow Håndholdt elektronisk lupe V1.1

Oblig 4 Undervisningshefte i grunnleggende JavaScript programmering

WORKSHOP BRUK AV SENSORTEKNOLOGI

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

Steg 1: Bli kjent med spillet

Brugervejledning. MEMOdayplanner. Varenr:

Steg 1: Hente grafikk fra nettet

HEOS 3 QUICK START GUIDE

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

KTN1 - Design av forbindelsesorientert protokoll

PXT: Komponer en melodi

Steg 1: Katten og fotballbanen

Elektrolab I: Løgndetektor

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Rapport Øving 2 TDT4258 Mikrokontroller Systemdesign

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

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

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

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

Elektronikk med vitensenteret

Klask-en-Muldvarp. Steg 1: Gjøre klart spillbrettet. Sjekkliste. Introduksjon

Trådløs Aktuatorventil. Powercut. Kablet

Bruk av interrupt og Timer i Arduino-program.

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

NorthIce videobriller

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Steg 2: La løvinnen og papegøyen bevege seg

Eksempel på endring av funksjon Tast Display Forklaring. Det nåværende funksjonsnummer vises på displayet.

MONTERINGSANVISNING BRUKERVEILEDNING SMART STOP

Ved montering for oppkobling til Alarmsentral, kontakt først Safe4 Security Group

PXT: Hermegåsa. Steg 1: Sjekk at du har riktig utstyr. Sjekkliste. Introduksjon

Hentech RC04B-WiFi Brukermanual

King Kong Erfaren Scratch PDF

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Skrevet av: Geir Arne Hjelle

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

Oppgave 1.1 Kjør rett fram Programmere roboten til å kjøre rett fram ved å bruke begge motorer. Deretter rygge tilbake.

PXT: Spå fremtiden med bilder

Tell sekunder. Steg 0: Hva er forskjellig fra før? Introduksjon. I denne oppgaven skal vi lage vårt eget spill!

Bygge en kube. Introduksjon. Steg 1: Lage en ny mod. Skrevet av: Pål G. Solheim

Display og knapper 3-4. Flammesymbol 5 Batterier 5 Synkronisering 6 Tid og dato 6. Manuell styring 7-10 Tidsplan 11

Sprettende ball Introduksjon Processing PDF

Hva er maskinvaren Arduino

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

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Scratch. Skrevet av: Geir Arne Hjelle

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

Pong. Oversikt over prosjektet. Steg 1: En sprettende ball. Plan. Sjekkliste. Introduksjon

Brukerveiledning. Falck 6709 Mottaker. Varenr:

PLS PC-øving nr. 3 Global Label og Local Label, flagg og CJ

Tegnespillet. Introduksjon:

Bygge en kube. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

Transkript:

Pseudonym presenterer TEKNISK RAPPORT Medlemmer: Camilla Christensen, Emma Tvinnereim, Hedda Dyngeland og Maren Berge Universitetet i Oslo IN1060 - Bruksorientert design

Innholdsfortegnelse 1. Introduksjon 2 1.1 Hvem er vi? 2 2. Mål med dette prosjektet 3 2.1 Krav til prototypen 3 2.2 Teoretisk konsept bak lyslenken 3 3. Presentasjon av video 4 3.1 Målet med videoen 4 3.2 Link til video 4 4. Teknikken bak løsningen 4 4.1 Komponenter vi har brukt 4 4.2 Illustrasjon av kretsen 7 4.3 Valg som har ble tatt 7 4.3 Feiltesting og løsninger 9 5. Presentasjon av koden 9 5.1 Initiering av variabler 10 5.2 Metoder 10 1

1. Introduksjon I denne rapporten blir den tekniske løsningen til den høyoppløselige prototypen presentert. Det blir lagt fokus på bruken av de forskjellige komponentene inkludert i løsningen, og hvordan de fungerer sammen. Her blir det diskutert om målene satt før implementasjonen faktisk blir oppfylt. Fokuset i denne rapporten er hva som er blitt gjort og hvordan. Det legges også mye fokus på hvorfor. Vi vil også inkludere valg og alternative retninger vi måtte ta som viket fra den originale planen. Aller først presenteres forfatterne av dette dokumentet: 1.1 Hvem er vi? Gruppen vår består av Camilla Christensen, Emma Tvinnereim, Hedda Kjetun Dyngeland og Maren Ingunnsdatter Berge, og sammen er vi Pseudonym. Vi valgte gruppenavn ut ifra noe som reflekterte av målgruppen var, forfattere. Prosjektet vårt har fått navnet Girograf. Dette ordet er bygget opp av to ord: giro og graf. Her har vi tatt betydningen til giro for repetitive handlinger, og graf for visualisering av utvikling. For oss heter prosjektet dette, men vi har latt selve prototypen vårt få et navn etter brukerens smak/ønske, som da ble Rolf. 2

2. Mål med dette prosjektet Målet vårt for dette prosjektet går ut på å finne, og lage en løsning som svarer på problemstillingen vår: Kan vi gi én barnebokforfatter motivasjon, via visualisering av tid til å gjennomføre dagsplaner?. Dette tilsvarer at vi finner en løsning som oppfyller behovene som dukket opp under datainnsamlingen, og etter analysen. For oss er det å skape en uforstyrrende samarbeidspartner for forfatteren, fordi vi har vært fokusert på kontekst hele veien. Dette blir det ikke fokus på i denne rapporten, men blir videre forklart i prosjektrapporten. 2.1 Krav til prototypen - Den skal ha mulighet til å legge og trekke fra timer. - Bruker skal kunne starte timeren etter valgte timer. - Visuell visning av hvor mye tid som har gått, vise helheten i en arbeidsøkt. - Tydelig varsling etter hver time med arbeid. - Mulighet til å sette timeren i pause og deretter begynne igjen ved endt tidspunkt. Etter utformingen og implementering av prototypen har vi oppfylt kravene over. Dette inkluderer at det er tre knapper som har funksjonene; legge til timer, trekke fra timer og starte tidtakeren. Den midterste knappen, illustrert i bilde til høyre starter tidtakeren, og bruker antall registrerte timer til å lyse opp lyslenken basert på dette. Det blir gitt en tydelig feedback til bruker for hver time som går mens Girografen er aktiv, i form av lyd. Lysene i nakken er ikke synkronisert med lyden, men de brukes for å vise den helhetlige oversikten over arbeidsøkten. Det ble også implementert en funksjon som oppfylte kravet om at bruker skal kunne legge prototypen i pause, at dette påvirket hovedtidtakingen. 2.2 Teoretisk konsept bak lyslenken Ut ifra funnene i dagboken, har SuperForfatter stor variasjon i hvor mye hun kan jobbe totalt på en dag. Fra loggen hun førte var det ikke vanlig for henne å jobbe mer enn 10 timer, og Girografen fikk derfor begrenset til 10 timer. 3

Videre ble det implementert at alle lysene skal lyses opp gjennom økten, selv om eksempelvis bare 4 timer blir valgt å jobbe for dagen, skal dette ikke resultere i opplysning av 4 lys men hele nakken over 4 timer. Dette ble gjort etter valg gjort av bruker. Dette ble løst med et regnestykke med 6-gangen, fordi vi hadde 10 lys som skulle tilsvare 10 timer og det er 60 min i en time. Eksempelvis SuperForfatter velger én time for dagen, vil være 6 min mellom hvert lys. Altså ett lys per 6. min. Videre med to timer blir ett lys hvert 12 min, og tre timer blir ett lys hvert 18 min, osv. 3. Presentasjon av video 3.1 Målet med videoen Målet med videoen vi har laget er å vise Girograf sine funksjoner, hvilket problem den er ment til å løse og hvordan den gjør dette i praksis. Dette ønsker vi å oppnå ved å vise et scenario av brukerens arbeidsdag først uten prototypen og deretter med bruk i konteksten den er ment. Ved å få med dette fremstilles problemet - en forfatter som ikke har motivasjon og struktur nok til å gjennomføre dagsplanene hun setter seg, og løsningen - en artefakt som visualiserer tid og gir feedback i form av lys og lyd. NB! Vær oppmerksom på at stemmen er ikke en del av Girografens originale funksjoner og egenskaper. Den ble lagt til for å redegjøre for sine funksjoner på egen hånd, i tillegg til å spille på humoren som går igjen i videoen. 3.2 Link til video Her er linken til videoen! 4. Teknikken bak løsningen 4.1 Komponenter vi har brukt Komponenter Antall Bilde Fra Arduino Starterpakke Bildene tatt fra skisseprogrammet Fritzing 4

Arduino uno 1 Breadboard 1 Tiltsensor 1 Bilde: http://www.varesano.net/files/imagecach e/500width/tilt_sensor.jpg Resistorer 220 Ω 4 Fra Kjell og Company Bildene tatt fra netthandelen til Kjell og Company Strømbryter, 1-polet Av/på: 250 V / 6 A 1 Luxorparts Koblingskabel som kan deles, 40-polet Hann-hann - 40 stk i en pakke 2 Fra Teknikmagasinet Bilde tatt fra netthandelen til Teknikkmagasinet 5

Lydeffektboks - inkluderer høyttaler 1 (Bilde til høyre er det vi brukte - høyttaleren er kuttet ut i en sirkel) Fra Digital Impuls Bildene tatt fra netthandelen til Digital Impuls Arcade Button med LED 3 Strømadapter 220V -> 9V 1 Fra Verksted i Masterbygg Neopixel lyslenke, krever RGB-fargekoder 10 lys 6

4.2 Illustrasjon av kretsen 4.3 Valg som har ble tatt Strømforsyning Vi vurderte flere løsninger for å sende strøm til Arduino, men endte opp med å hente strøm fra stikkontakt i veggen. På illustrasjonen er det bilder av batterier som illustrerer denne strømkilden. Strømtilførselen kontrolleres vha. en strømbryter som er loddet til strømforsyningen, og åpner og lukker kretsen. Kretskort med lydeffekter I utgangspunktet falt valget på å bruke mp3-shield, men etter tilbakemelding fra gruppelærer kunne vi bruke en lyd-effektboks vi hadde kjøpt. Den grønne figuren (sentrert i illustrasjonen over) representerer kretskortet. I lydboksen ble lyden spilt av når kretsen ble lukket ved hjelp 7

av strømførende materiale i knappene. Vi prøvde å løse dette ved uten bruk av de medfølgende knappene, ved å først lodde en ledning til hver side av kretsen til den ønskede lyden, slik at kretsen kunne bli lukket på vårt signal. Etter litt testing viste seg at det kun var nødvendig å føre strøm på den ene siden, og dette ble løsningen vår. Høyttalerne får strøm fra via et signal når kretsene lukkes og dette spiller av lyden. En konsekvens ved at vi benyttet oss av dette kretskortet var at vi kun fikk implementert en lyd, og ikke fire som var brukerens ønske. Dette skyldes at kretskortet var av dårlig kvalitet og klarte ikke å stå imot varmen fra loddingen. Dette resulterte i at kortet begynte å smelte, så da det var en stor risiko for total ødeleggelse, prioriterte vi den ene lyden vi hadde fått til å fungere. Neopixel Vi ble fortalt at man burde ha en ekstra strømkilde for å drive hele lenken med Neopixelsene, men fordi vi kun skulle bruke 10 lys kunne vi drive den med strømmen fra Arduino. For å dekke kravet om å visualisere hvor mye tid som har passert ble det tatt et valg at lys var det mest visuelle virkemiddelet. Det endelige valget falt på Neopixel da det er mulig å kontrollere med Arduino. Ved bruk av indekser til å tenne lys, ville vår kunnskap om programmering være tilstrekkelig. Knapper For å ha mulighet til å inkludere behovet for å velge antall timer, valgte vi å ta utgangspunkt i knapper. Her var det viktig at det var mulighet for å legge til timer, fjerne timer og starte tidtakingen, og ut i fra dette falt valget på en pluss- minus- og en startknapp. Ved at bruker interagerer med knappene skulle dette bestemme hvilken intervall lysene skulle lyse, slik at det fungerte som en progressbar i sin helhet. Knappene fungerte derfor som en overgang for brukerens ønsker i form av knappetrykk. Tilt Bruken av tilt ble tatt etter veiledning fra gruppelærere, da dette var en god komponent for å registrere om prototypen var lagt til siden eller ikke. Vi undersøkte andre muligheter, men det var tilt som var det beste alternativet. Ferdig() Et valgt som ble gjort uten innspill fra SuperForfatteren, er slutteffekten. Når hun er ferdig med alle de satte timene, vil halsen lyse opp i form av alle regnbuens farger. Dette ble gjort for å gi bruker tilbakemelding om at prototypen har strøm ved begynnelsen, og som et tillegg når bruker har blitt ferdig med arbeidsøkt. 8

settgrønt() Denne metoden setter alle lysene i lenken til grønt i en kort periode, og dette ble gjort etter brukers ønske om å motta feedback på at start-knappen ble trykket. 4.3 Feiltesting og løsninger Lyset Etter gjennomført evaluering med bruker, ble det oppdaget noen problemer med tidtakingen for lys da det skulle telles med timer. Dette skyldes at vi kun hadde testet med sekunder og minutter under tidligere tester. Løsningen ble at variablene for tid (se kode) gradvis ble økt fra sekunder til minutter til timer under kontrollert testing av tidtaking, slik at det kunne kartlegges hvor problemet lå. Det viste seg at en tidligere brukt variabel var begrenset til en int verdi, og måtte byttes til unsigned long for å takle store tall. Lyden Fram til dette punktet var ikke implementasjonen av lyden styrt av hovedprogrammet, kun av menneskelig manupulering eller et selvstendig kodeprogram. Dette var et av programmets største problemer, men ved hjelp av gruppelærer fikk vi testet alle funksjoner som hadde innvirkning på lyden, og problemet fant vi med tilstanden til port 11 som styrer lyden. Ved å endre tilstanden fra daværende HIGH til nåværende LOW, ville lyden fungere på signal fra Arduino. Pause Det siste kravet for prototypen ble satt til å være implementasjon av pause-funksjon, som også skulle sørge for at brukers selvvalgte pause skulle holdes utenfor. Etter første implementering av denne funksjonen fortsatte tidtakingen under pausen, og lysintervallene ble dermed ikke korrekt. Løsningen ble at vi lagret tiden som var da pausen ble initiert, og deretter satte hovedtidsvariablene til den tiden, og da fortsatte tidtakingen fra der vi slapp. 9

5. Presentasjon av koden Det anbefales å ha koden tilgjengelig under lesing av disse avsnittene ( koden finner du her). 5.1 Initiering av variabler Først og fremst bruker vi Neopixel sitt biblioteket, som gjør at vi kan styre lysene med koden i Arduino. Porten som skal sende data til Neopixels defineres, og denne er satt til å være pin 6. Videre blir antall led-lamper definert og satt til 10 stk. Neopixel lenken defineres til strip, da det var en gjenganger i flere andre prosjekter. De globale variablene blir også satt i begynnelsen av koden, og alle brukes videre i de ulike metodene. Her settes tiden som bestemmer utgangspunktet for tidsintervallet som lyser opp Neopixelene. 5.2 Metoder setup() Det første vi kommer til i koden er setup(). Her defineres alle tilstandene til portene, det vil si om de enten skal lytte eller sende ut signal. Vi satte alle knappene til å lytte etter input, fordi vi vil registrere når en knapp blir trykket. Neopixelene mottar data fra pin 6, og den defineres da til output. Lydporten settes også til output, fordi vi får lyd når den mottar strøm fra Arduino. Tilt defineres til input, fordi vi vil registrere om det føres strøm eller ikke. Da gjenstår det tre steg igjen; sette lysene i gang med strip.begin(), kjøre ferdig()-metoden som bekreftelse på start og sette lysene til sort slik at de er klare for start. loop() Det neste steget i koden er loopen. Denne kjøres kontinuerlig, så lenge det ikke er en annen metode som kjører. Her har det blitt lagt inn en ny metode som sjekker de tre knappene, lytttilknapp(). lytttilknapp() I denne metoden vil programmet lese av portene som er koblet til knappene. Dersom en knapp registreres som trykket, vil programmet kjøre den tilhørende metoden. Dersom pluss- eller minusknappene blir trykket, vil antall lys og timer øke eller minke før den går videre tilbake til lytttilknapp(). Det vil si at knappene alltid sjekkes, med mindre start blir trykket. Hvis start-knappen blir trykket vil den gå inn i tilhørende metode, og fortsette helt til alle lys er tent og ferdig-metoden er kjørt. Etter dette vil programmet gå tilbake igjen, og knappene vil bli sjekket på nytt. 10

start() Grunnen til at vi ikke har delt denne metoden inn i flere metoder, er fordi vi ville vise flyten i koden i ett og et samlet bilde over hva som skjer etter hverandre og hva som er avhengighetene i de forskjellige metodene. Det som skjer i start()-metoden er først og fremst at det blir lagret en tid, som blir tiden akkurat nå ved hjelp av millis(). Denne er satt til starttid. Variabelen tidfornyttlys setter til å være det samme som den globale variabelen tid, ganger antall timer. Programmet vil alltid gå inn i den første while-løkken så lenge alle lysene ikke er tent. Deretter sjekker en if-test om det er tid for å tenne et nytt lys. Hvis dette blir sant vil et nytt lys tennes, og lysindeks økes med én. Dersom det ikke er det, vil den gå videre til else if som sjekker om tilten har endret seg fra HIGH til LOW. Hvis dette er tilfelle vil alle lys settes til blått inntil videre. Tiden frem til dette punktet blir lagret. Hvis tilt er tilbake til HIGH så hopper den ut av den kjørende while-løkken og lysene settes tilbake til slik de var før pausen ble initiert. Variablene som regner ut tid for lyd og tidfornyttlys settes lik de lagrede tidene, slik at tiden som gikk under pausen blir ekskludert fra tidtakingen. Når den ønskede tiden for lyd er det samme som en time, vil lyden spilles av. Variabelen lydtid settes på nytt, slik at det igjen vil gå en time til neste lyd spilles. Etter at alle lysene er tent, vil programmet gå ut av den første while-løkken fordi lysindeksen da vil være 10. Det vil da spilles av lyd og lys som gir feedback til bruker om at arbeidsøkten er ferdig. ferdig() Ferdig()-metoden setter lysene til forskjellige farger ved å bruke random(tall) tre ganger som gir oss en unik rgb-fargekode for hver runde. Dette vil skje fem ganger, fordi vi har definert variabelen som må oppfylles i while-løkken til fem. Etter dette vil programmet hoppe tilbake til start()-metoden, sjekker om alt er ferdig, og så gå videre til loop(), der alt sammen skjer om igjen. Metoder for å bestemme lys Lysene i Neopixel bestemmes av rgb-koder, slik som (198,43,183)som gir rosa farge. Det er laget metoder for å gi sort lys, som på en måte nullstiller lysene, og for å gi grønt lys som brukes etter start-knappen er trykket. 11