Dette micro:bit-juleprosjektet gir deg et juletre som blinker, en gave på knapp A, «Jingle Bells» på knapp B og snø som faller når du rister kortet. Etterpå klipper du et tre av papp som kortet kan bo i. Alt er gjort på en ettermiddag, uten lodding, og hver del ender med noe du kan vise fram.
- Passer for
- Barn fra 8 år, yngre barn sammen med en voksen, foreldre og skoleklasser
- Tid
- En ettermiddag, eller to skoletimer
- Lodding
- Nei
- Du lærer
- Løkker, hendelser, variabler og radio
Dette trenger du til juleprosjektet
BBC micro:bit 2 GO1 stk per gruppe. Kortet, microUSB-kabel, batteriholder og to AAA-batterier ligger i esken.
Krokodillekabler3 stk, bare til stjernen på papptreet.
LED-sett med motstander1 rød LED og 1 motstand på 1 kΩ til stjernen.- Fra skuffen hjemmePapp eller kartong, saks, blyant, teip og litt bakepapir.
Skal kortet gå på batteri i papptreet, er batteriholderen med bryter praktisk: da slipper du å trekke ut kontakten hver gang. Går kortene på omgang i en klasse, tåler de mer i et gjennomsiktig deksel.
| Etappe | Tid | Dette har du etterpå |
|---|---|---|
| Nivå 1: blinkende tre | 20 minutter | Et kort som blinker uten datamaskin |
| Tegn egen figur | 10 minutter | Din egen figur på skjermen |
| Nivå 2: gave, melodi og snø | 30 minutter | Et kort som svarer på knapper og risting |
| Papptre og stjerne | 45 minutter | Julepynt som står på bordet |
| Nivå 3: klassens juletre | 45 minutter, minst to kort | Mange kort som følger samme kommando |
Slik finner du blokkene i MakeCode
Gå til makecode.microbit.org og velg «Nytt prosjekt». Du trenger ingen konto eller installasjon. Til venstre ser du et simulert kort som kjører programmet mens du bygger, så du kan teste alt før du kobler til kortet.
Editoren finnes på norsk. Velg Språk i tannhjulmenyen, og deretter norsk bokmål. Oversettelsen er laget av frivillige og er ikke helt ferdig: melodiblokken står fortsatt på engelsk. Tabellen viser begge navnene, slik at du finner blokkene uansett språk.
| På norsk | På engelsk | Kategori | V1 | V2 |
|---|---|---|---|---|
| gjenta for alltid | forever | Basis | Ja | Ja |
| vis skjerm | show leds | Basis | Ja | Ja |
| pause (ms) | pause (ms) | Basis | Ja | Ja |
| når knapp A trykkes | on button A pressed | Inndata | Ja | Ja |
| når ristes | on shake | Inndata | Ja | Ja |
| play, melody og tempo (ikke oversatt) | play (melody … at tempo … (bpm)) until done | Musikk | Nei, se nivå 2 | Ja |
| skriv digital | digital write | Avansert, Tilkobling | Ja | Ja |
| radio sett gruppe, radio send tall, når radio mottar | radio set group, radio send number, on radio received | Radio | Ja | Ja |
Nivå 1: få juletreet til å blinke
En animasjon er bare bilder som kommer etter hverandre, akkurat som i en tegnefilm. Her trenger du to: ett tre med alle lys på og ett der noen lys er slukket.
- Åpne kategorien Basis og dra gjenta for alltid ut på arbeidsflaten.
- Legg vis skjerm inni, og klikk rutene til de danner det første treet.
- Legg pause (ms) under, og skriv 400.
- Legg til en ny vis skjerm med det andre treet og enda en pause på 400.
- Se på simulatoren. Blinker treet? Velg Last ned og kopier filen over til stasjonen MICROBIT, eller følg veiviseren hvis nettleseren tilbyr å koble direkte til kortet.
Foretrekker du kode, velg JavaScript øverst i editoren og lim inn dette. Velger du Blokker igjen, ser du samme program som blokker.
// Nivå 1: juletreet blinker med to bilder.
basic.forever(function () {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
basic.pause(400)
basic.showLeds(`
. . # . .
. # . # .
# . # . #
. . # . .
. . # . .
`)
basic.pause(400)
})
Test deg selv: pausen er 400 ms, men bildet står i 800 ms. Hvorfor?
Blokken vis skjerm venter selv 400 ms etter at bildet er tegnet. Sammen med pausen blir det 800 ms. Fjerner du begge pausene, blinker treet derfor fortsatt, bare dobbelt så fort.
Tegn din egen figur
Nå er det din tur. Trykk på lysdiodene under og tegn en stjerne, en nisselue eller forbokstaven din. Koden oppdateres mens du tegner. Kopier den og lim den inn i JavaScript-visningen i stedet for ett av trærne.
Nivå 2: gave på A, melodi på B og snø når du rister
Hittil har programmet bare gått rundt og rundt. Nå skal det også reagere på deg. Slike blokker heter hendelser: de ligger og venter til noe skjer. Programmet trenger tre variabler, som du kan tenke på som små lapper der kortet skriver ned hva det skal huske.
visGavehusker om gaven skal vises.snoBilderteller hvor mange snøbilder som gjenstår.bildeteller bildene, slik at kortet vet hvilket tre som er neste.
Knapp A og B
Med tempo 200 varer hvert felt 0,3 sekunder, så hele refrenget tar under 5 sekunder. Klikk på melodifeltet i blokken, så åpner du rutenettet. Der kan du også lage din egen melodi: tomme kolonner er pauser.
Snø som faller
Snøfnuggene ser ut til å falle fordi hvert bilde er det forrige flyttet én rad ned. Mønsteret gjentar seg hver tredje rad, så tre bilder holder.
Hovedløkken bestemmer hva som vises
Den raskeste veien er å lime inn hele programmet i JavaScript-visningen og deretter velge Blokker. Vil du bygge selv, lager du variablene med Lag en variabel... under Variabler og følger tegningene.
// Nivå 2: tre, gave, melodi og snø.
// Knapp A = gave av og på, knapp B = melodi, rist kortet = snø.
let visGave = false
let snoBilder = 0
let bilde = 0
input.onButtonPressed(Button.A, function () {
visGave = !visGave
})
input.onButtonPressed(Button.B, function () {
music.play(music.stringPlayable("E E E - E E E - ", 200), music.PlaybackMode.UntilDone)
music.play(music.stringPlayable("E G C D E - - - ", 200), music.PlaybackMode.UntilDone)
})
input.onGesture(Gesture.Shake, function () {
snoBilder = 9
})
basic.forever(function () {
if (snoBilder > 0) {
// Snøen faller: tre bilder etter hverandre.
if (bilde % 3 == 0) {
basic.showLeds(`
# . . # .
. . # . .
. # . . #
# . . # .
. . # . .
`)
} else if (bilde % 3 == 1) {
basic.showLeds(`
. # . . #
# . . # .
. . # . .
. # . . #
# . . # .
`)
} else {
basic.showLeds(`
. . # . .
. # . . #
# . . # .
. . # . .
. # . . #
`)
}
snoBilder += -1
} else if (visGave) {
basic.showLeds(`
# . # . #
. # # # .
# # # # #
# . # . #
# # # # #
`)
} else if (bilde % 2 == 0) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
} else {
basic.showLeds(`
. . # . .
. # . # .
# . # . #
. . # . .
. . # . .
`)
}
bilde += 1
basic.pause(100)
})
Last ned programmet som main.ts. Filen har nøyaktig samme kode som over.
Test deg selv: hva skjer hvis du trykker A mens det snør?
Variabelen visGave endres med en gang, men snøen ligger først i løkken. Gaven dukker opp når snøtelleren er nede på 0.
Test deg selv: hvordan får du snø i dobbelt så lang tid?
Sett snoBilder til 18 i blokken når ristes. Da snør det i 9 sekunder.
Jeg har et V1-kort: slik får du melodien uten music.play
MakeCodes dokumentasjon sier at blokken music.play krever V2, og at et V1-kort viser feilkode 927. V1 har heller ingen høyttaler. Bytt ut hele blokken for knapp B med koden under. Den bruker music.playTone, som ikke er merket som V2-funksjon. Programmet er kompilert for begge kortene, men ikke prøvd på et V1-kort.
input.onButtonPressed(Button.B, function () {
music.setTempo(200)
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.rest(music.beat(BeatFraction.Whole))
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.rest(music.beat(BeatFraction.Whole))
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.playTone(Note.G, music.beat(BeatFraction.Whole))
music.playTone(Note.C, music.beat(BeatFraction.Whole))
music.playTone(Note.D, music.beat(BeatFraction.Whole))
music.playTone(Note.E, music.beat(BeatFraction.Whole))
music.rest(music.beat(BeatFraction.Whole))
music.rest(music.beat(BeatFraction.Whole))
music.rest(music.beat(BeatFraction.Whole))
})Lyden kommer ut på P0. Koble en aktiv høyttaler med lydkabelen med krokodilleklemmer: rød klemme på P0 og svart på GND. Gave, tre og snø virker uten endringer på V1.
Klipp et juletre av papp til kortet
Nå får koden et hjem. Treet står på bordet som et bilde med støtte, skjermen lyser gjennom et vindu, og knappene når du gjennom hvert sitt hull.
- Tegn et tre på papp, minst 15 cm bredt og 20 cm høyt, og klipp det ut. Kortet måler omtrent 5 × 4 cm, så det blir god plass.
- Hold micro:bit-kortet mot pappen der det skal sitte, og merk av hjørnene på LED-feltet og knappene A og B med blyant.
- La en voksen hjelpe med vinduet og hullene: stikk hull med en blyant mot et underlag, og klipp videre derfra.
- Teip et stykke bakepapir over vinduet på baksiden. Da blir de små lysdiodene til mykere lysprikker.
- Klipp en pappstrimmel på rundt 2 cm som belte over midten av kortet. Teip endene fast i treet, aldri i kortet. Ringene og batterikontakten skal være fri.
- Brett en pappstrimmel på rundt 5 × 20 cm, 5 cm fra den ene enden. Teip den korte delen høyt oppe på baksiden av treet. Den lange delen blir støtten.
- Sett treet på bordet og legg batteriholderen fritt bak det. Sjekk at kabelen ikke er stram.
Stjerne på toppen med en ekte LED
Her bruker du ring 1 (P1). P0 er ringen som MakeCode sender lyd til, og en LED der kunne flimre i takt med melodien og komme i veien for lyden. Med P1 kan stjernen brukes sammen med programmet fra nivå 2.
- Trekk ut USB-kabelen og batteriet før du kobler.
- Gul klemme: P1 til motstand. Rekkefølgen på motstandens bein spiller ingen rolle.
- Rød klemme: motstand til langt bein på den røde lysdioden.
- Svart klemme: kort bein til GND.
- Stikk lysdioden gjennom hullet på toppen av treet, overfør programmet under til kortet og koble til strøm.
// Papirtreet: stjernen på P1 blinker i takt med treet på skjermen.
basic.forever(function () {
pins.digitalWritePin(DigitalPin.P1, 1)
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
basic.pause(100)
pins.digitalWritePin(DigitalPin.P1, 0)
basic.showLeds(`
. . # . .
. # . # .
# . # . #
. . # . .
. . # . .
`)
basic.pause(100)
})
Vil du ha stjernen sammen med nivå 2, legger du linjen med verdien 1 foran det første treet og linjen med verdien 0 foran det andre, i hovedløkken. Blokken heter skriv digital og ligger under Avansert og Tilkobling.
Nivå 3: klassens juletre over radio
Se for deg seks kort festet på et stort papptre på veggen. Noen rister ett av dem, og det begynner å snø på alle samtidig. Det er dette programmet gjør. Alle kortene får samme kode, og alle kan være dirigent.
- Avtal et gruppenummer mellom 0 og 255 for klassen, og bytt ut 42 hvis naboklassen bruker det samme.
- Lim inn programmet under. Hver gruppe tegner sitt eget motiv der kommentaren står.
- Test gjerne først i simulatoren. Den kan vise et ekstra kort som tar imot meldingene, men radioen er ikke prøvd der, så den endelige testen gjør du på to ekte kort.
- Last programmet over til alle kortene, og sett dem opp som et tre: rader på 1, 2 og 3 kort gir seks kort, og rader på 1, 2, 3 og 4 gir ti.
// Nivå 3: klassens juletre. Samme program på alle kortene.
// Knapp A = tre, knapp B = motivet til gruppen, rist kortet = snø.
let motiv = 1
let bilde = 0
radio.setGroup(42)
input.onButtonPressed(Button.A, function () {
motiv = 1
bilde = 0
radio.sendNumber(1)
})
input.onButtonPressed(Button.B, function () {
motiv = 2
bilde = 0
radio.sendNumber(2)
})
input.onGesture(Gesture.Shake, function () {
motiv = 3
bilde = 0
radio.sendNumber(3)
})
radio.onReceivedNumber(function (receivedNumber) {
motiv = receivedNumber
bilde = 0
})
basic.forever(function () {
if (motiv == 3) {
if (bilde % 3 == 0) {
basic.showLeds(`
# . . # .
. . # . .
. # . . #
# . . # .
. . # . .
`)
} else if (bilde % 3 == 1) {
basic.showLeds(`
. # . . #
# . . # .
. . # . .
. # . . #
# . . # .
`)
} else {
basic.showLeds(`
. . # . .
. # . . #
# . . # .
. . # . .
. # . . #
`)
}
} else if (motiv == 2) {
// Tegn motivet til gruppen her.
basic.showLeds(`
# . # . #
. # # # .
# # # # #
# . # . #
# # # # #
`)
} else if (bilde % 2 == 0) {
basic.showLeds(`
. . # . .
. # # # .
# # # # #
. . # . .
. . # . .
`)
} else {
basic.showLeds(`
. . # . .
. # . # .
# . # . #
. . # . .
. . # . .
`)
}
bilde += 1
basic.pause(100)
})
Hver gruppe tegner altså sitt eget motiv i blokken for tallet 2. Når noen trykker B, viser alle kortene hvert sitt motiv samtidig: en liten utstilling i lys. A henter alle tilbake til treet, og risting gir snø.
Test deg selv: hvorfor setter programmet motiv også på kortet som sender?
Radioen sender til de andre kortene i gruppen, ikke tilbake til avsenderen (MakeCode skriver at radio send number sender «til andre micro:bit-kort»). Derfor må senderen selv huske hva den valgte.
Test deg selv: hvorfor nullstilles bilde hver gang en melding kommer?
Da starter alle kortene animasjonen på bilde 0 samtidig og blinker omtrent i takt. Hvert kort har sin egen klokke, så etter en stund glir de litt fra hverandre. Trykk A igjen, så går de i takt på nytt.
Julekalender i programmering: fire uker med micro:bit
Del prosjektet på de fire ukene før jul, så får barna én ny ting hver uke og et ferdig juletre på slutten. Alt under ligger allerede i denne guiden.
| Uke | Oppgave | Hva barna lærer |
|---|---|---|
| 1 | Blinkende tre og egen figur (nivå 1) | Rekkefølge, løkke og piksler |
| 2 | Gave, melodi og snø (nivå 2) | Hendelser, variabler og valg |
| 3 | Papptre og stjerne med ekte LED | Formgiving og en enkel krets |
| 4 | Klassens juletre over radio (nivå 3) | Kommunikasjon og samarbeid |
Til læreren: tid, mål og tilpasning
Opplegget passer fra mellomtrinnet og oppover, og yngre barn klarer nivå 1 med en voksen ved siden av. Arbeid to og to: én bygger, den andre sjekker mønsteret og tester. Bytt roller for hver etappe. Sjekk kompetansemålene for trinnet ditt på udir.no: programmering og algoritmisk tenkning går igjen i flere fag.
| Økt | Mål | Enklere | Mer utfordrende |
|---|---|---|---|
| 45 min: nivå 1 og egen figur | Sekvens, løkke og piksler | Bare ett tre og tegneverktøyet | Tre bilder i stedet for to |
| 45 min: nivå 2 | Hendelser, variabler og valg | Lim inn koden, endre bilder og melodi | Bygg alt med blokker, og slå lyd av og på med A+B |
| 45 min: papptre | Formgiving og enkel krets | Bare papptreet | To lysdioder, den andre på P2 med egen motstand |
| 45 min: nivå 3 | Kommunikasjon og samarbeid | Felles motiv og ferdig kode | Lysbølge med plassnummer |
Vil du ha flere opplegg, finner du dem i guiden om micro:bit i skolen.
Hvis det ikke virker
| Dette ser du | Sjekk dette |
|---|---|
| Stasjonen MICROBIT dukker ikke opp | Prøv kabelen fra esken og en annen USB-port. En ren ladekabel overfører ikke data. |
| Treet står stille | Begge vis skjerm-blokkene må ligge inni gjenta for alltid. |
| Ingen lyd | Sjekk at kortet er V2, og at programmet er det nyeste. Prøv B i simulatoren først. |
| Trist ansikt og tallet 927 | Du bruker en V2-funksjon på et V1-kort. Bruk V1-varianten under nivå 2. |
| Snøen starter ikke | Rist raskt og tydelig, ikke slå kortet mot bordet. I simulatoren bruker du risteknappen. |
| Koden blir ikke til blokker | Lim inn hele programmet på nytt, med alle parenteser og tegnet ` rundt bildene. |
| Stjernen lyser ikke | Snu lysdioden. Sjekk at klemmene sitter på ring 1 og GND, og at du valgte rød, gul eller grønn. |
| Bare ett kort reagerer på radio | Alle må ha samme programversjon og samme tall i radio sett gruppe. |
Vanlige spørsmål
Må barna kunne JavaScript?
Nei. Alt kan bygges med blokker. JavaScript-teksten her er bare en snarvei, og den kan gjøres om til blokker som barna kan endre videre.
Virker prosjektet med micro:bit V1?
Ja, med ett unntak. Tre, gave, snø, stjerne og radio bruker blokker som også finnes på V1. Melodien på nivå 2 krever V2-varianten eller V1-koden i ruten under nivå 2, og på V1 trenger du en ekstern høyttaler.
Er det farlig å ha batteriene inni pynten?
Holderen skal ligge fritt, ikke inni pappen, og kabelen skal ikke stramme. Følg rådene i varselruten. Vær ekstra nøye med levende lys i nærheten av papp. Ikke bruk powerbank: micro:bit-stiftelsen advarer mot det.
Hvor langt rekker radioen?
Dokumentasjonen til blokkene oppgir ingen fast rekkevidde. I et klasserom er det nok å teste med kortene der de skal stå. Blir det ustabilt, flytter du dem nærmere hverandre.
Hva gjør vi etter jul?
Du kan gå videre med innføringen i micro:bit-programmering, bygge en robotbil med Cutebot, eller bruke startsettet med moduler og 12 prosjekter, som har flere sensorer og en LED-stripe.
Kan vi lage LED-julepynt med micro:bit?
Ja. Kortet har 25 lysdioder som kan vise treet alene, og stjernen på papptreet gir dere en ekte LED på toppen. Begge går på små batterier, så pynten trenger ingen stikkontakt.
Hvilket byggesett passer for barn som vil lære elektronikk?
Begynn med det barnet har lyst til å lage. Robotbyggesettet 5-i-1 bruker mekanisk koding og krever ingen datamaskin, men produktsiden anbefaler det fra 14 år. Arcade-konsollen passer for dem som vil lage egne spill, og krever micro:bit V2, som ikke følger med.
Flere sett ligger under micro:bit og elektronikk og komponenter. Er dere usikre på plattform, sammenligner guiden om programmering med elektronikk alternativene.
Slik er guiden kontrollert
Alle fem programmene er kompilert med MakeCodes eget byggeverktøy for både V1 og V2. Det betyr at koden er gyldig, ikke at den er prøvd på et fysisk kort, og papptreet er en skisse. Blokknavnene kommer fra MakeCodes offisielle norske oversettelse. Oppførselen til blokkene er kontrollert i referansen for vis skjerm, music.play og radiogrupper, og feilkoden i oversikten over feilkoder. Batteri- og sikkerhetsrådene følger micro:bit-stiftelsens veiledning, med ett unntak: Rådet om at batteriholderen skal ligge fritt og ikke tapes fast eller pakkes inn, er vårt eget forsiktighetsråd, og veiledningen sier ingenting om det.




