Bygge en terning

Bygge en terning

Innhold

I dette kapittelet skal vi bygge en terning som viser terningkastets utfall ved hjelp av en servo.

Kobling

For å bygge terningen vår må vi koble en trykknapp og en servomotor til utviklingskortet vårt. Tanken er at trykknappen skal få Arduinoen til å gi oss en tilfeldig verdi mellom 1 og 6. Denne verdien skal så vises med en arm som vris ved hjelp av servomotoren. Merk at armen ikke har noe bestemt stilling. Den kan monteres på nesten hvilken som helst måte. Husk dette hvis den peker feil.

For å tydeliggjøre hvilke verdier terningen viser, trenger vi et papir med tallene 1 til 6. Du finner en ferdig papirmal for dette i slutten av boken. Malen passer for øvrig i akrylglassholderen som du finner i bokens medfølgende komponentpakke.

I slutten av boken finner du en mal for terningen.
Illustrasjon laget med komponenter fra Fritzing (fritzing.org). CC BY-SA 3.0

Skisse

I denne skissen må vi bruke to biblioteker: Servo og Button. Servo er forhåndsinstallert i utviklingsmiljøet, mens Button må installeres manuelt (se Biblioteker). Vi lager et nytt objekt av hver type.

Del 1/5 av RollDice.ino

I setup-funksjonen kaller vi opp funksjonen randomSeed for å få pseudotilfeldige verdier. Verdiene er altså ikke 100 % tilfeldige, og denne terningen bør derfor ikke brukes på et kasino. Verdiene er imidlertid tilfeldige nok til ikke å lage familiebråk på monopolkvelder.

Del 2/5 av RollDice.ino

I loop-funksjonen legger vi inn en if-setning som gjør at to andre funksjoner kalles opp når noen slipper opp knappen: upDown og setDice.

Del 3/5 av RollDice.ino

Funksjonen upDown bruker vi for at servoen skal kunne bevege seg litt før den vrir seg til det riktige resultatet av terningkastet. Det er nødvendig fordi terningen kan gi samme utfall (verdi) to ganger på rad.

Del 4/5 av RollDice.ino

Funksjonen setDice bruker vi til å vise resultatet av terningkastet. I funksjonen sender vi et tilfeldig terningnummer. Funksjonen begynner med å tilordne utfallsmulighetene (1-6) til servoens vridning (20-140). Legg merke til at vi ikke drar nytte av hele 180°-området. Deretter vrir funksjonen servoens pil til sifferet som terningen havnet på.

Del 5/5 av RollDice.ino

Sist endret: 2017-09-08