Level 2PXT: Smitte:Bit

Skrevet av: Sigurd Schaathun

Kurs: Microbit
Tema: Elektronikk, Blokkbasert, Spill
Fag: Matematikk, Naturfag, Samfunnsfag, Teknologi, Programmering
Klassetrinn: 5.-7. klasse, 8.-10. klasse

Introduksjon

Virus kan smitte gjennom luft, men hvor fort smitter det, og hvor lang tid tar det før en hel klasse er smittet? Vi skal simulere dette med micro:bit. Simulere betyr å etterligne og som regel forenkler vi virkeligheten. Til dette programmet trenger dere flere micro:bit som snakker sammen.

Steg 1: Radiokommunikasjon

Micro:Bit kan kommunisere med hverandre ved hjelp av radio. Først må vi få sette opp radio og teste radiokommunikasjonen. Dette programmerer vi på https://makecode.microbit.org. Start et nytt prosjekt og gi det et navn, gjerne Smittebit.

checkSjekkliste

 {
    radio.setGroup(42)
})

Koden kan se slik ut:

input.onButtonPressed(Button.A, function () {
   radio.sendNumber(5)
})

radio.onReceivedNumber(function (receivedNumber) {
        basic.showNumber(receivedNumber))
})

flagTest prosjektet

Last inn programmet på 2 micro:biter. Det er lurt å samarbeide med en annen.

radio.setGroup(42)
radio.setTransmitPower(3)

Avansert: signalstyrke

Under radio finner du også blokken mottok pakke signalstyrke. Den gir et tall mellom -127 og -42. Et svakt signal gir en verdi nær -127, og et meget sterkt signal gir verdi -42. Ved å sjekke signalstyrken i en hvis - løkke kan vi gjøre mottaket mindre følsomt og sikre at to micro:biter må være nær for å kunne snakke sammen.

Steg 2: Smittespredning

I dette steget skal vi sette opp en funksjon for å vise status til micro:biten, og spre smitte når man er smittet.

checkSjekkliste

radio.setGroup(42)
radio.setTransmitPower(7)
smitte = 0
farlig = randint(2, 5)
basic.showIcon(IconNames.Happy)

Tips: Rekkefølge i en hvis-løkke

Når du lager en hvis - eller-løkke med områder som inneholder andre områder du også skal sjekke (mer enn 100 er også mer enn 25), bør du begynne med det som inneholder alt, i dette tilfellet mer enn 100.

Koden kan se slik ut:

basic.forever(function () {
    if (smitte > 100) {
        basic.showIcon(IconNames.No)
    } else if (smitte > 50) {
        basic.showIcon(IconNames.Sad)
        radio.sendNumber(farlig)
    } else if (smitte > 25) {
        radio.sendNumber(farlig)
    }
    basic.pause(5000)
})

radio.onReceivedNumber(function (receivedNumber) {
    smitte += receivedNumber
})
input.onButtonPressed(Button.A, function () {
    radio.sendNumber(5)
})
input.onGesture(Gesture.Shake, function () {
    radio.sendNumber(farlig * 3)
})
input.onButtonPressed(Button.AB, function () {
    basic.showNumber(farlig)
})
input.onButtonPressed(Button.B, function () {
    basic.showNumber(smitte)
})

checkTest prosjektet

Last inn programmet på 2 micro:biter. Det er lurt å samarbeide med en annen.

Steg 3: Prøve med hele gruppen

Nå er det på tide å prøve dette med hele gruppen, men først kan vi legge inn litt mer funksjonalitet.

checkSjekkliste

flagDet store eksperimentet

Last inn programmet på alle micro:bitene. Jo flere som er med, jo bedre er det for forsøket. Når programmet er lastet inn, kan dere ha vanlig time eller gå rundt. Pass på at det er en micro:bit som er smittet ved starten.

Utfordring

Hvordan virus smitter er avhengig av mange ting. Dette er en simulering og er sterkt forenklet. Her er den endelige koden:

radio.onReceivedNumber(function (receivedNumber) {
    smitte += receivedNumber
    basic.showNumber(radio.receivedPacket(RadioPacketProperty.SignalStrength))
})
input.onButtonPressed(Button.A, function () {
    smitte += -2
})
input.onGesture(Gesture.Shake, function () {
    radio.sendNumber(farlig * 3)
})
input.onButtonPressed(Button.AB, function () {
    basic.showNumber(farlig)
})
input.onButtonPressed(Button.B, function () {
    basic.showNumber(smitte)
})
let farlig = 0
let smitte = 0
radio.setGroup(42)
radio.setTransmitPower(7)
smitte = 0
farlig = randint(2, 5)
basic.showIcon(IconNames.Happy)
basic.forever(function () {
    if (smitte > 100) {
        basic.showIcon(IconNames.No)
    } else if (smitte > 50) {
        basic.showIcon(IconNames.Sad)
        radio.sendNumber(farlig)
    } else if (smitte > 25) {
        radio.sendNumber(farlig)
    }
    basic.pause(5000)
})

saveLagre spillet

Vi har laget en smittesimulator og testet det. Hvis du vil ta vare på prosjektet, kan du enten dele på makecode.microbit.org - der får du en lenke, eller laste programmet ned på din datamaskin.

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!