Obligatorisk oppgave 1 for INF1510 våren 2012 Obligatorisk oppgave 1 i INF1510 består av et utvalg av oppgaver; det er 14 oppgaver i SparkFun-heftet som følger med Arduinosettet, og resten er gitt i oppgavetekstene under. Hver oppgave gir et bestemt antall stjerner, og du trenger totalt 100 stjerner for å få godkjent obligatorisk oppgave 1. Lykke til! 1. Stoppeklokke (25 stjerner) I denne oppgaven skal du lage en stoppeklokke. Kravene til stoppeklokken er følgende. Visning av tid: Stoppeklokken skal vise tiden med 1 sekunds nøyaktighet. Klokken skal nullstille seg selv hvert minutt (den skal gå fra 59 sekunder til 0 sekunder, ikke 60). Lydsignaler: Klokken skal hvert 10. sekund avgi et lydsignal. Brukergrensesnitt: Brukeren skal kunne starte, stoppe og nullstille stoppeklokken. Tilleggskonkurranse: Store mengder ære og berømmelse går til byggeren av stoppeklokken med beste ubrukelige tilleggsfunksjonalitet. 2. Reaksjonshastighetspill (30 stjerner) Her skal du lage et lite spill som består av følgende. Tre trykknapper; en knapp til hver spiller og en reset-knapp i midten. En multifarget LED i midten. Tre LEDer til hver spiller, som angir poengsum. Lag et program slik at spillet foregår på følgende måte. Reset-knappen i midten nullstiller alt slik at spillet kan begynne. Hvis LEDen i midten blinker gult, så må spillerne gjøre seg klare. Hvis LEDen i midten er avslått, så er spillet i gang. Nå vil LEDen i midten enten lyse grønt eller rødt, og dette skal være tilfeldig. Hvis LEDen i midten lyser grønt, så vil spilleren som trykker ned sin knapp først, få ett poeng. Deretter er det en kort pause og spillet fortsetter. Hvis LEDen i midten lyser rødt eller er avslått, så skal ingen trykke ned en knapp, men hvis noen gjør det, så mister vedkommende (dette kan godt være begge) ett poeng. Når en spiller har fått tre poeng, har denne spilleren vunnet spillet. Tilleggskonkurranse: Store mengder ære og berømmelse går til den som legger til beste ubrukelige tilleggsfunksjonalitet. 3 Trafikklys (10 stjerner) Lag et traffiklys bestående av en rød, en grønn og en gul LED. Lyset skal fungere på samme måte som et vanlig traffiklys. Først skal den røde LEDen lyse, og deretter skal den røde og
gule lyse for å symbolisere at man snart få grønt. Så skal den grønne lyse alene. Deretter skal det gule lyset lyse alene for å symbolisere at det snart blir rødt, hvorpå det røde lyset skal lyse alene. Dette skal gå i sekvens om igjen og om igjen. 4 Lyskryss (15 stjerner) Ta utgangspunkt i oppgaven Traffiklys, og ekspander med et overgangsfelt. Overgangsfeltet skal ha en knapp som man kan trykke på når man vil over veien, og dette skal trigge en prosess som gjør at trafikklyset går litt fortere tilbake til rødt lys dersom den er på grønt lys. Det skal også være et rødt og et grønt lys for overgangsfeltet som lyser rødt når ingen har trykket på knappen. Hvis knappen blir trykket på skal dette skifte til grønt etter at traffiklyset har skiftet til rødt. En piezo-buzzer skal kobles til og denne skal pipe mens overgangsfeltet har grønt lys. 5 Gradestokk (15 stjerner) Bruk 10 lysdioder, f.eks. 3 grønne, 4 gule og 3 røde, og montér disse på rekke slik at de går ifra grønt til gult til rødt. Koble så til en temperaturmåler. For hver tredje grad skal en ny led lyse opp. Det vil si at dersom det er mellom 0 og 2,9 grader skal ingen lysdiode lyse, og dersom det er 6 grader skal to grønne lysdioder lyse. Dersom det er 15 grader skal tre grønne og to gule lyse, og dersom det er 27 grader skal alle bortsett fra en rød lysdiode lyse. 1) + 5 stjerner hvis shift-register brukes 2) + 8 stjerner for å visualisere det samme i Processing i tillegg 6 Ambulanse (8 stjerner) Lag en krets med to røde LEDer og et piezoelement. Lysene skal blinke annenhver gang, så når den ene er av, så er den andre på. Piezoelementet skal lage en høy tone når den ene LEDen lyser og en lav tone når den andre lyser. (Hint: tone(port, freq) og notone(port).) 7 Lys-O-Meter (10 stjerner) Bruk en servomotor og en lys-sensor. Programmer servomotoren til å peke til venstre når lyssensoren ikke får noe lys og helt til høyre når lyssensoren får masse lys. 8 Lysblinkeren (10 stjerner) Bruk to LEDer, heretter kalt lys 1 og 2, og et potentiometer. Når potentiometeret er midtstilt skal lys 1 og 2 blinke annenhver gang og et sekund av gangen. Når potentiometer er helt til venstre, så skal lys 1 være konstant på og lys 2 være slått av. Når potentiometer er helt til høyre skal lys 1 være slått av og lys 2 være konstant på. 9 Knappkontrollert lys (15 stjerner) Bruk to LEDer og en trykknapp. - Når knappen er oppe, og ikke trykkes på, så skal kun én av LEDene blinke. - Når knappen trykkes, så skal blinkingen gå over til den andre LEDen. - Når knappen holdes inne, så skal begge LEDene være konstant på.
10 Data til Arduino via seriellport (20 stjerner) Lag en krets med minimum 2 LEDer, samt en piezobuzzer ELLER en servomotor. Disse skal reagere på det du skriver i seriellkonsollen i Arduinoeditoren. For eksempel, hvis du skriver inn 1, så skal den ene LEDen lyse; skriver du inn 2, så skal den andre LEDen lyse, og skriver du inn 3, så skal begge lyse. Lag også en kommande som kan manipulere piezo ELLER servoen. 11 Styr tempo i oppgave Circ-06 (10 stjerner) Denne oppgaven er en utvidelse av Circ-06. Her er det derfor viktig at du har gjort den allerede. Det du skal gjøre er å bruke et potensiometer for å styre tempoet i sangen som spilles. (Hint: Dette kan gjøres ved å lese av verdien til potensiometeret og skrive den inn der variabelen tempo blir brukt i for-løkken.) 12 Lys-lyd-og-bevegelse-maskinen (25 stjerner) Ved hjelp av én knapp skal du kunne velge mellom: 1. masse lys, tilfeldig 2. masse lyd, tilfeldig 3. masse bevegelse, tilfeldig 4. både lys, lyd og bevegelse, tilfeldig 13 Alternativ H-bro (25 stjerner) En H-bro er en krets som gjør det mulig for en motor å kjøre begge veier. En vanlig DC-motor snurrer den ene veien når du kobler den til støm og bytter retning når du bytter polariteten. En H-bro er en krets som kan bytte retning på strømmen. Vanligvis bygges en H-bro av fire transistorer, men i denne oppgaven skal du klare deg med to transistorer og et relé. Her er en skjematisk tegning av kretsen; merk at symbolet for reléet er litt anerledes ifra det som står i settene, men prinsippene er de samme. Se tegningen i SparkFun-heftet for korrekt skjematikk av reléet.
14 To-knapps kodemaskin (15 stjerner) Her skal du lage en kodemaskin med to knapper der en bruker skal kunne taste inn en bestemt kombinasjon av knappene for å få en grønn LED til å lyse. Du trenger: - 1 stk. grønn LED - 1 stk. 330 Ω motstand - 2 stk. trykknapper - 2 stk. 10 KΩ motstand - Noen ledninger - Det kan være kjekt med to røde LEDer for å vise hvilke knapper som blir trykket inn Først bør du bygge opp kodemaskinen med knappene og LEDene. Programmeringen er det som vil ta lengst tid. Noen tips: - Se på andre oppgaver med knapper, f.eks. Circ-06, og hvordan de er løst. - Det kan være smart å representere knappetrykkingen med tall (f.eks. et tall, 0 eller 1, for hver knapp) slik at kombinasjonen man skal trykke kan representeres med et array. 2) +5 stjerner Gjør det slik at det kun er de siste knappetrykkene som teller. 15 DC-motorkontroll (10 stjerner) Få en DC-motor til å snurre rundt når du trykker på en knapp, og få den til å stoppe når du
trykker en gang til. 16 Etch-a-Sketch (30 stjerner) Bruk to potentiometere til å tegne i Processing; det ene potentiometeret skal styre x-aksen og det andre skal styre y-aksen. Du trenger også en knapp for å aktivere og deaktivere tegning, samt en knapp for å resette tegneflaten. 17 Processing-kontrollpanel (20 stjerner) Lag et kontrollpanel i Processing som består av minst to knapper og en slider. Den ene knappen skal brukes til å skru en LED av og på. Den andre skal brukes til å få et piezoelement til å generere lyd og slideren skal brukes til å dimme en LED. 1) +5 Stjerner. Lag en ekstra slider i Processing-vinduet som kan kontrollere en servomotor. 18 Turbulensmaskinen (15 stjerner) I denne oppgaven skal du bruke et akselerometer og en liten høyttaler. Målet er å lage en liten maskin som oppdager når den ristes på. Når den ristes på, så skal den avgi en lyd og fortsette med det til den ikke ristes på lenger. Når den ikke ristes på, så skal den være stille. 19 Visualisering av data i sanntid (20 stjerner) Bruk en lysmåler, og lag et program i Processing som visualiserer lysmengden i forhold til tiden som går. Bruk et koordinatsystem hvor tiden utgjør x-aksen og lysstyrken utgjør y-aksen. 20 Arduinobasert tegnemaskin en polargraph (80 stjerner) Lag en tegnemaskin en polargraph ved hjelp av Arduino, steppermotorer, tråd og tusj.