PXT: Mentometer
Skrevet av: Oversatt fra makecode.microbit.org
Oversatt av: Kolbjørn Engeland
Introduksjon
Et mentometer er en slags stemmeteller som brukes til å måle hva folk mener ved at hver enkelt trykker på en knapp. Noen av dere voksne husker sikkert mentometeret fra flere av NRK sine TV-show på 80 og 90-tallet. I denne oppgaven skal vi lage vårt eget mentometer ved hjelp av mange micro:biter. Vi bruker en micro:bit til å registrere stemmer. Vi kan kalle denne mentometer. Siden vi bruker LED-lysene for å registrere stemmer, kan vi ha maksimalt 25 velgere. Vi må også kode 25 micro:biter til å sende stemmer til mentometeret. Da setter vi i gang!
Steg 1: Vi koder velger-brikkene
Først lager vi koden for micro:bitene som skal sende stemmer.
Sjekkliste
radio.setGroup(1) radio.setTransmitSerialNumber(true) basic.showIcon(IconNames.Heart)
input.onButtonPressed(Button.A, function () { radio.sendNumber(255) basic.showIcon(IconNames.Yes) })
input.onButtonPressed(Button.B, function () { radio.sendNumber(0) basic.showIcon(IconNames.No) })
Steg 2: Vi koder mentometeret
Vi skal nå lage koden for micro:biten som skal telle opp og vise stemmene. Du må da starte et nytt prosjekt. Denne vil la hver micro:bit som sender stemme få sin egen LED, og denne LED-en lyser med lysstyrken som stemmebrikkene sender. Trykker en sendebrikke på A
, blir lysstyrken 255
, trykkes B
, blir lysstyrken 0
. For å sikre at hver micro:bit kan stemme bare en gang, må vi sjekke hvilket serienummer micro:bitene som sender stemmene har og lagre alle serienummer i en egen liste.
Sjekkliste
radio.setGroup(1) let velger = []
Nå vet vi hvilken velger vi har mottatt stemme fra, og kan da tenne på riktig LED. Det er mange måter å gjøre dette på. Her tennes ledene kolonne for kolonne der kolonne 1 er lengst til venstre. For hver kolonne brukes først den nederste LED-en. Micro:biten har nummerert LED-ene slik at LED med indeks 0,0 er øverst til venstre og led med indeks 4,4 er nederst til høyre. Da trenger vi en liten algoritme som regner ut vilken LED som hører' til hvilken velgerindeks
let velger: number[] = [] function RegistrerStemme (styrke: number, id: number) { velgerindeks = velger.indexOf(id) if (velgerindeks < 0) { velger.push(id) velgerindeks = velger.indexOf(id) } ledX = Math.floor(velgerindeks / 5) ledY = 4 - (velgerindeks - ledX * 5) led.plotBrightness(ledX, ledY, styrke) }
radio.onReceivedNumber(function (receivedNumber) { RegistrerStemme(receivedNumber, radio.receivedPacket(RadioPacketProperty.SerialNumber)) }) function RegistrerStemme (styrke: number, id: number) { * * * }
let velger: number[] = [] function SlettStemmer () { for (let indeks = 0; indeks <= velger.length; indeks++) { ledX = Math.floor(velgerindeks / 5) ledY = 4 - (velgerindeks - ledX * 5) } led.unplot(ledX, ledY) } input.onButtonPressed(Button.B, function () { SlettStemmer() })
Test mentometeret
Nå er det på tide å sjekke om stemmebrikkene og mentometeret fungerer.
Noen utfordringer
Noen forslag til endringer og utvidelser, men prøv selv dine ideer!
Nedenfor er noen ideer til videreutvikling, men finn gjerne på noe helt eget!
Forbedre denne siden
Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!