Programmering og koding

micro:bit i skolen: ti oppgaver fra enkel til avansert

Eksperimentsett for micro:bit og et micro:bit V2-kort ved siden av MakeCode-koden til en terning du kaster ved å riste kortet

micro:bit i skolen fungerer best med tydelig progresjon: Elevene starter med skjermen og knappene, går videre til variabler, sensorer og egne LED-kretser, og avslutter med radio, datalogging og et eget prosjekt. Her er ti oppgaver i den rekkefølgen, koblet til matematikk, naturfag og kunst og håndverk, med kompetansemålene fra LK20 sitert ordrett. Du får også korte kodeeksempler og praktiske råd om pararbeid, batterier, lagring og Chromebook.

Kort forklartEtt micro:bit-kort per par holder til de fleste oppgavene. Bruk MakeCode i Chrome eller Edge, la elevene lagre prosjektet som fil, og gi hvert par sitt eget radiogruppenummer. Oppgave 1 til 3 trenger bare kortet, 4 til 7 bruker variabler, sensorer og LED-er, og 8 til 10 kobler kort sammen med radio eller bygger et system med et sensorsett.

Ti micro:bit-oppgaver fra enkel til avansert

Oppgavene bygger på hverandre, men hver av dem kan også brukes alene. Nivå 1 passer for elever som aldri har programmert, nivå 3 for elever som kan bruke variabler og vilkår. Tidsbruken avhenger av klassen; regn med én til to skoletimer per oppgave, og mer for oppgave 10. Den tekniske innføringen med tilkobling, WebUSB og de tre programmeringsspråkene står i guiden om å komme i gang med micro:bit.

Nr.OppgaveNivåFagUtstyr
1Navneskilt og humørikon1Kunst og håndverk, matematikkKortet
2Elektronisk terning1MatematikkKortet
3Termometer og lysmåler1NaturfagKortet
4Skritteller2Matematikk, naturfagKortet med batterier
5Nattlys som reagerer på mørke2Kunst og håndverk, naturfagKortet
6Trafikklys med tre LED-er2Naturfag, matematikkKortet og Discovery Kit
7Datalogger for klasserommet2Matematikk, naturfagmicro:bit V2
8Hemmelig melding med radio3NaturfagTo kort
9Bevegelsesalarm med radio3Naturfag, matematikkTo kort
10Eget system med sensorsett3Naturfag, kunst og håndverk, matematikkEt sensorsett

Kobling til LK20

Programmering står i kompetansemålene i matematikk, naturfag og kunst og håndverk. Tabellen siterer målene ordrett fra bokmålsoversettelsen av de gjeldende læreplanene på udir.no (planene er fastsatt på nynorsk): matematikk (MAT01-06), naturfag (NAT01-05) og kunst og håndverk (KHV01-03). Oppgavene er forslag til hvordan elevene kan arbeide med målene, ikke en fasit for vurdering.

Fag og trinnKompetansemål, ordrettOppgaver
Matematikk etter 4. trinn«lage algoritmer og uttrykke dem ved bruk av variabler, vilkår og løkker»2
Matematikk etter 5. trinn«lage og programmere algoritmer med bruk av variabler, vilkår og løkker»2, 4, 5
Matematikk etter 5. trinn«utforske og beskrive tilfeldighet og sannsynlighet i spill og praktiske situasjoner og knytte det til brøk»2
Matematikk etter 7. trinn«bruke programmering til å utforske data i tabeller og datasett»4, 7
Matematikk etter 8. trinn«utforske hvordan algoritmer kan skapes, testes og forbedres ved hjelp av programmering»9
Matematikk etter 9. trinn«simulere utfall i tilfeldige forsøk og beregne sannsynligheten for at noe skal inntreffe, ved å bruke programmering»2
Matematikk etter 10. trinn«lese og forklare tekstbasert programkode i Python»7, 10
Naturfag etter 4. trinn«utforske observerbare størrelser som fart og temperatur og knytte dem til energi»3
Naturfag etter 7. trinn«stille spørsmål og lage hypoteser om naturfaglige fenomener, identifisere variabler og samle data for å finne svar»3, 7
Naturfag etter 7. trinn«utforske, lage og programmere teknologiske systemer som består av deler som virker sammen»6, 10
Naturfag etter 10. trinn«utforske, forstå og lage teknologiske systemer som består av en sender og en mottaker»8, 9
Kunst og håndverk etter 7. trinn«bruke programmering til å skape interaktivitet og visuelle uttrykk»1, 5

Læreplanen i kunst og håndverk sier også at for elever på 1.-4. trinn skal bruken av digitale enheter være særskilt varsom og ikke dominere undervisningen. For de yngste passer korte økter med kortet i hånden bedre enn lange økter foran skjermen.

Nivå 1: oppgave 1 til 3, bare kortet

Nivå 1: nybegynner. Tid: én skoletime per oppgave. Du trenger ett micro:bit 2 GO per par: kort, USB-kabel, batteriholder og to AAA-batterier. Ingen ledninger.

1. Navneskilt og humørikon

Elevene lar navnet sitt rulle over skjermen ved start og bruker knappene til å vise humøret: knapp A et glad ansikt, knapp B et trist. Etterpå tegner de egne ikoner med blokken show leds, der hver av de 25 LED-ene slås av eller på med et klikk. Det er en enkel algoritme med tre hendelser, og ikonene gir rom for et eget visuelt uttrykk.

input.onButtonPressed(Button.A, function () {
    basic.showIcon(IconNames.Happy)
})
input.onButtonPressed(Button.B, function () {
    basic.showIcon(IconNames.Sad)
})
basic.showString("Ida")

2. Elektronisk terning

Når kortet ristes, viser det et tilfeldig tall fra 1 til 6. Elevene kaster terningen 60 ganger, fører strekliste og sammenligner andelen seksere med brøken 1/6. Eldre elever trykker A, og kortet kaster 1000 ganger på et øyeblikk og teller seksere med en løkke og et vilkår.

MakeCode-blokker: on shake viser pick random 1 to 6, og knapp A gjentar 1000 kast og teller hvor mange som ble 6.
Terningen viser et tilfeldig tall fra 1 til 6 når kortet ristes. Knapp A kaster 1000 ganger med repeat og if, og viser antall seksere. I blokkene blir for-løkken fra JavaScript til repeat 1000 times, fordi telleren index ikke brukes inni. Forenklet tegning av MakeCode-blokkene.
let seksere = 0
input.onGesture(Gesture.Shake, function () {
    basic.showNumber(randint(1, 6))
})
input.onButtonPressed(Button.A, function () {
    seksere = 0
    for (let index = 0; index < 1000; index++) {
        if (randint(1, 6) == 6) {
            seksere += 1
        }
    }
    basic.showNumber(seksere)
})

seksere = 0 inne i knappeblokken er set seksere to 0, så telleren starter på null hver gang du trykker A. randint(1, 6) er blokken pick random 1 to 6. for-løkken er blokken repeat 1000 times, og if teller bare kastene som ble 6. Resultatet bør ligge i nærheten av 1000 / 6 ≈ 167, men varierer fra gang til gang, og nettopp det er et godt utgangspunkt for en samtale om sannsynlighet.

3. Termometer og lysmåler

Knapp A viser temperaturen og knapp B lysnivået fra 0 til 255. Første trykk på B viser 0, fordi lyssensoren slås på første gang den brukes; trykk en gang til før dere skriver ned målingen. Skal dere måle flere steder, setter dere i batteriene. Elevene lager en hypotese, måler i vinduet, i skyggen og ved en lampe, og fører målingene i en tabell. Snakk om hvorfor det er varmere i sola enn i skyggen. Temperaturen måles inne i prosessoren og ligger vanligvis nær romtemperaturen, men kan bli litt høyere når kortet jobber. Sammenlign derfor med et vanlig termometer, og la elevene diskutere feilkilden. Programmet står i guiden om å komme i gang, under nivå 2.

Nivå 2: oppgave 4 til 7, variabler, sensorer og kretser

Nivå 2: viderekommen. Tid: én til to skoletimer per oppgave. Du trenger kortet med batterier, til oppgave 6 et Discovery Kit fra Kitronik og til oppgave 7 et micro:bit V2. Koblingsbrett og koblingsledninger følger med Discovery Kit; flere finner dere blant koblingsbrettene og koblingsledningene.

4. Skritteller

En variabel teller hver gang kortet ristes, og knapp A nullstiller. Elevene går 20 skritt med kortet i lomma, sammenligner med tallet på skjermen og fører resultatene for hele klassen inn i en tabell. Hvorfor teller noen kort for mye? Spørsmålet gir ideer til hvordan programmet kan forbedres. Med smartklokkesettet blir kortet en klokke på håndleddet, og Smart Health Kit har en egen skritteller blant de tolv prosjektene.

Knappceller: Smartklokkesettet bruker to CR2025-knappceller, som ikke følger med. Oppbevar dem utilgjengelig for små barn. Et svelget knappcellebatteri kan gi alvorlige skader, så kontakt lege straks.

5. Nattlys som reagerer på mørke

Kortet viser et hjerte når lysnivået faller under en grense, og slukker skjermen når det blir lyst. Elevene finner grensen ved å måle først, som i oppgave 3, og bygger så en lampe eller lykt rundt kortet i papir eller papp. Programmet bruker et vilkår med to utfall, og formgivingen er en del av oppgaven.

basic.forever(function () {
    if (input.lightLevel() < 50) {
        basic.showIcon(IconNames.Heart)
    } else {
        basic.clearScreen()
    }
})

Tallet 50 er bare et utgangspunkt; det riktige tallet avhenger av rommet. Med eksperimentsettet fra ElecFreaks kan elevene gå videre til LED-ringen med åtte LED-er på settets kretskort.

6. Trafikklys med tre LED-er

Tre LED-er lyser som i et norsk lyskryss: rød på P0, gul på P1 og grønn på P2. Rekkefølgen er rødt, rødt og gult sammen, grønt, gult alene og så rødt igjen. Discovery Kit har koblingsbrett, en adapter for micro:bit, røde, gule og grønne LED-er, 330 Ω-motstander og koblingsledninger, og et trafikklys er et av prosjektene i settets veiledning. Hver LED kobles fra sin egen pinne gjennom en motstand til GND. Følg merkingen på adapteren og veiledningen i settet når du plasserer ledningene.

Koblingsskjema: P0, P1 og P2 går hver gjennom en motstand på 330 ohm til en rød, en gul og en grønn LED, med felles GND.
Hver LED har sin egen pinne og sin egen 330 Ω-motstand, og alle går til felles GND. Anoden (trekanten) vender mot motstanden og katoden (streken) mot GND. Tegningen viser koblingen, ikke plasseringen: på Discovery Kit går ledningene via adapteren, så følg merkingen der. Fargene på P0, P1 og P2 er guidens valg.

Med 330 Ω blir strømmen under grensen på 5 mA per pinne selv for en LED som bare trenger 1,8 V: (3,3 V − 1,8 V) / 330 Ω ≈ 4,5 mA. Bruk aldri en LED uten motstand.

MakeCode-blokker: forever med rødt på P0, rødt og gult, grønt på P2, gult på P1 alene og tilbake til rødt.
Rekkefølgen som i et norsk lyskryss: rødt i 3 sekunder, rødt og gult sammen i 1 sekund, grønt i 3 sekunder og gult alene i 1 sekund før rødt igjen. Etter siste blokk starter forever på nytt fra toppen. Rød LED sitter på P0, gul på P1 og grønn på P2. Forenklet tegning av MakeCode-blokkene.
basic.forever(function () {
    pins.digitalWritePin(DigitalPin.P0, 1)
    basic.pause(3000)
    pins.digitalWritePin(DigitalPin.P1, 1)
    basic.pause(1000)
    pins.digitalWritePin(DigitalPin.P0, 0)
    pins.digitalWritePin(DigitalPin.P1, 0)
    pins.digitalWritePin(DigitalPin.P2, 1)
    basic.pause(3000)
    pins.digitalWritePin(DigitalPin.P2, 0)
    pins.digitalWritePin(DigitalPin.P1, 1)
    basic.pause(1000)
    pins.digitalWritePin(DigitalPin.P1, 0)
})

Elevene observerer et ekte lyskryss ved skolen, skriver ned rekkefølgen og tidene, og endrer tidene i programmet til de stemmer. Rødt og gult lyser samtidig i ett sekund; to LED-er på hver sin pinne er ingen sak for kortet. Diskuter hvilken del av systemet som er sensor, styring og utgang, og hva som mangler for at et ekte lyskryss skal være trygt.

7. Datalogger for klasserommet

micro:bit V2 kan lagre målinger fra de innebygde sensorene, og dataene blir liggende på kortet også når strømmen kobles fra. Når dere laster ned et nytt program, slettes loggen, så kopier eller last ned dataene først. Legg til utvidelsen datalogger under Extensions i MakeCode. Programmet under lagrer temperatur og lysnivå én gang i minuttet.

MakeCode-blokker: set columns temperatur og lys i on start, og every 60000 ms med log data for temperature og light level.
Kortet lagrer temperatur og lysnivå hvert 60000 ms, altså én gang i minuttet, i filen MY_DATA. Utvidelsen datalogger virker bare på micro:bit V2, og med (+) legger du til flere kolonner. Forenklet tegning av MakeCode-blokkene.
datalogger.setColumnTitles("temperatur", "lys")
loops.everyInterval(60000, function () {
    datalogger.log(
        datalogger.createCV("temperatur", input.temperature()),
        datalogger.createCV("lys", input.lightLevel())
    )
})

Når kortet kobles til en PC, finner elevene filen MY_DATA på stasjonen MICROBIT. Filen åpnes i nettleseren som en tabell, med graf når PC-en er på nett, og elevene kan kopiere dataene eller laste dem ned som CSV-fil til et regneark. Tidsstempelet starter på null hver gang kortet starter på nytt, så noter når loggingen begynte. I ungdomsskolen kan elevene lese og forklare den samme loggeren i Python:

from microbit import *
import log

log.set_labels('temperatur', 'lys', timestamp=log.MINUTES)

@run_every(min=1)
def logg():
    log.add(temperatur=temperature(),
            lys=display.read_light_level())

while True:
    sleep(1000)

@run_every(min=1) kjører funksjonen under én gang i minuttet, og log.add skriver én rad i loggen. Løkken nederst holder programmet i gang. Når loggen er full, gir log.add en feil, og funksjonen slutter å kjøre.

Nivå 3: oppgave 8 til 10, radio og egne systemer

Nivå 3: avansert. Tid: to skoletimer eller mer. Du trenger to micro:bit-kort per gruppe, for eksempel micro:bit 2 GO med batteriholder, og til oppgave 10 et sensorsett.

8. Hemmelig melding med radio

To kort i samme radiogruppe sender tekst til hverandre: Knapp A sender et kodeord, og mottakeren viser det. Programmet med forklaring linje for linje står under nivå 3 i guiden om å komme i gang. Skriv gruppenummeret til hvert par på tavla; gruppen er et tall fra 0 til 255, og uten valgt gruppe bruker alle kort gruppe 0 og hører hverandre. La elevene finne ut hvem andre som kan lese meldingen, og hvordan de kan gjøre den hemmelig, for eksempel ved å bytte ut bokstaver etter en avtalt regel.

9. Bevegelsesalarm med radio

Det ene kortet ligger i en eske og sender ALARM når det beveges. Det andre kortet viser et kryss og piper. Når kortet ligger stille, er den samlede akselerasjonen rundt 1023 mg, altså tyngdekraften. Grensen på 1500 mg er et utgangspunkt elevene skal teste og forbedre: En for lav grense gir falske alarmer, en for høy gjør at alarmen ikke går.

// Kort 1: vakten i esken
radio.setGroup(41)
basic.forever(function () {
    if (input.acceleration(Dimension.Strength) > 1500) {
        radio.sendString("ALARM")
        basic.pause(2000)
    }
})
// Kort 2: mottakeren
radio.setGroup(41)
radio.onReceivedString(function (receivedString) {
    basic.showIcon(IconNames.No)
    music.play(music.tonePlayable(440, music.beat(BeatFraction.Whole)),
        music.PlaybackMode.UntilDone)
})

Pausen på 2000 ms hindrer at ett støt sender en hel serie meldinger. Lyden er blokken play tone for 1 beat until done fra Music: tonen 440 Hz i ett slag, som er 500 ms med standardtempoet 120 slag i minuttet. På micro:bit V2 spiller den innebygde høyttaleren den samme lyden som sendes til lydpinnen. Har dere V1, eller vil dere ha høyere lyd, kobler dere en aktiv høyttaler med 3,5 mm-inngang til P0 og GND med lydkabelen med krokodilleklemmer: rød klemme på P0, svart på GND.

10. Eget system med sensorsett

Til slutt løser gruppene et problem de selv har valgt: Hva trenger brukeren, hvilke sensorer og utganger trengs, og hvordan skal løsningen testes? De lager en enkel kravspesifikasjon, bygger, tester og forbedrer. Eldre elever skriver én del av programmet om til MicroPython og forklarer koden for klassen.

  • Plantevakt: IoT-startsettet har jordfuktighetssensor, vanntett temperaturføler, bevegelsessensor, relé, høyttaler, lydsensor, servo og en WiFi-modul. Ifølge produktsiden følger et micro:bit V2 med.
  • Parkeringssensor: Oppfinnersettet med Grove-moduler har ultralydsensor og et firesifret display. Ultralydsensoren må få strøm gjennom microUSB-porten på Grove-kortet.
  • Sunn hverdag: Smart Health Kit har prosjekter som sittepåminner, drikkevannspåminner og støydetektor.
  • Eget spill: Retro-spillkonsollen har fargeskjerm, fire retningsknapper og knappene A og B, og krever micro:bit V2.
Relé og 230 V: Reléet i IoT-startsettet er merket for høye spenninger, men i skolen skal det bare styre lavspenning, for eksempel en liten pumpe eller vifte som går på batteri. Koble aldri reléet til 230 V i skolen.

Praktiske råd for klasserommet

Par og roller

Ett kort per par fungerer godt: Den ene bygger programmet, den andre leser oppgaven, tester på kortet og foreslår neste steg. Bytt roller med jevne mellomrom. Til radiooppgavene slår to par seg sammen, eller hvert par får to kort.

Strøm og batterier

  • Bruk USB-kabelen mens elevene programmerer, og batteriholderen med to AAA-batterier når kortet skal bæres eller ligge i en eske.
  • micro:bit-stiftelsen anbefaler å bruke batteriholderen og USB-kabelen som følger med kortet, og fraråder powerbanker: Noen gir feil spenning ved lav belastning, og andre slår seg av når strømtrekket er lite.
  • Ta ut batteriene etter timen. På V2 kan du også holde inne reset-knappen på baksiden til strømlampen slukker; da går kortet i hvilemodus.
  • Hold kortet i kantene og ikke i komponentene. Et deksel beskytter kortet og gjør det lettere å rengjøre.

Lagring av elevprosjekter

MakeCode lagrer prosjekter i nettleserens midlertidige lagring. På delte maskiner, eller når nettleserdata slettes, kan de forsvinne. Be elevene gi prosjektet et navn og lagre det som fil med diskettikonet nederst i editoren, i en egen mappe eller på skylagring, og åpne det igjen med Import. Med Share får prosjektet en lenke, som også kan deles i Google Classroom eller Microsoft Teams; en anonym lenke er et øyeblikksbilde, så etter endringer må prosjektet deles på nytt.

micro:bit classroom lar læreren kjøre en felles økt med MakeCode eller Python Editor uten kontoer. Læreren kan sende startkode til elevene, se og rette koden deres underveis, lagre en rapport som Word-dokument og lagre hele økten som fil for å fortsette neste time. Merk at kode læreren sender, overskriver koden eleven har.

Chromebook, PC og iPad

MakeCode og Python Editor virker på Windows, Mac og Chromebook. I Chrome og Edge sendes programmet rett til kortet med WebUSB etter en paring første gang; i andre nettlesere lastes det ned som en .hex-fil som elevene drar over til stasjonen MICROBIT. Fra iPad overføres MakeCode-programmer med micro:bit-appen over Bluetooth, så kortet må ha batterier. Fra Python Editor går det ikke an å overføre til kortet på iPad. Vises ikke kortet ved paring, er kabelen ofte en ren ladekabel; prøv en annen.

Hvilket micro:bit-sett passer til hvilke oppgaver?

De fleste settene leveres uten selve kortet. Det kjøper du som micro:bit 2 GO, med USB-kabel, batteriholder og to AAA-batterier.

SettInnhold i korte trekkmicro:bit med?Oppgaver
micro:bit 2 GOmicro:bit V2, USB-kabel, batteriholder, to AAA-batterierJaAlle
Discovery Kit (Kitronik)Koblingsbrett, adapter, seks LED-er, ti 330 Ω-motstander, buzzer, koblingsledninger, fem prosjekterNei6
Eksperimentsett (ElecFreaks)LED-er, knapper, potensiometer, fotoresistor, temperatursensor, buzzer, servo, vifte, LED-ringNei5, 10
Oppfinnersett med Grove-modulerGrove-kort, ultralyd-, gest-, lys- og vinkelsensor, display, høyttaler, LED-stripe, tolv prosjekterNei10
Smart coding kit (smartklokke)Buzzer, RGB-LED, lyssensor, temperatursensor, sanntidsklokke, håndleddsremNei, og heller ikke batteriene4
Smart Health Kitsensor:bit-kort og tolv sensorer og moduler, tolv helseprosjekterNei4, 10
IoT-startsett (DFRobot)Micro:Mate-kort, WiFi-modul, jordfuktighet, temperaturføler, bevegelsessensor, relé, høyttaler, lydsensor, servoJa, et V2 ifølge produktsiden10

Vanlige spørsmål

Hvor mange micro:bit-kort trenger en klasse?

Ett kort per par holder til oppgave 1 til 7. Radiooppgavene trenger to kort per gruppe, så to par kan jobbe sammen.

Trenger elevene en konto?

Nei. MakeCode, Python Editor og micro:bit classroom kan brukes uten innlogging. En konto i MakeCode er bare nødvendig hvis prosjektene skal lagres der i stedet for som fil.

Skal elevene starte med blokker eller Python?

Start med blokker i MakeCode, der elevene også kan se den samme koden som JavaScript. Python passer godt i ungdomsskolen, der læreplanen i matematikk har et kompetansemål om å lese og forklare tekstbasert programkode i Python.

Hvorfor får kortene radiomeldinger fra andre par?

Alle kort uten valgt gruppe bruker gruppe 0. Gi hvert par sitt eget nummer mellom 0 og 255, og la begge kortene i paret bruke det samme.

Virker oppgavene på eldre micro:bit V1?

Oppgave 1 til 6 og 8 virker på V1, og oppgave 9 med en ekstern høyttaler på P0. Dataloggeren i oppgave 7 krever V2, og det gjør også retro-spillkonsollen. V1 må ha fastvare 0249 eller nyere for WebUSB.

Videre

Den tekniske innføringen med tilkobling, WebUSB, kantkontakten og alle eksemplene som blokker, JavaScript og MicroPython finner du i guiden om å komme i gang med micro:bit. Vil elevene programmere noe som kjører, er robotbilen i guiden om Cutebot et naturlig neste prosjekt, og guiden om å lære programmering med elektronikk viser hvilke plattformer som passer når elevene vokser fra micro:bit.

Kilder: kompetansemålene er sitert fra læreplanene på udir.no. Blokker og kode er kontrollert mot MakeCode-referansen og dokumentasjonen for micro:bit MicroPython, og råd om lagring, datalogging og sikkerhet mot micro:bit-stiftelsens brukerveiledning.

Alle guider

Produkter omtalt i denne guiden

Produktene som brukes og sammenlignes i guiden, med pris og lagerstatus.