Level 3PXT: Mentometer

Skrevet av: Oversatt fra makecode.microbit.org

Oversatt av: Kolbjørn Engeland

Kurs: Microbit
Tema: Blokkbasert, Spill
Fag: Programmering, Matematikk, Naturfag, Teknologi
Klassetrinn: 5.-7. klasse, 8.-10. klasse, Videregående skole

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.

checkSjekkliste

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.

checkSjekkliste

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()
})

flagTest 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!

Lisens: CC BY-SA 4.0

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!