micro:bit-programmering starter i nettleseren: Du setter sammen blokker i Microsoft MakeCode, ser det samme programmet som JavaScript og kan senere skrive MicroPython i micro:bit Python Editor. Programmet sendes til kortet med en USB-kabel, med ett klikk via WebUSB i Chrome eller Edge, eller som en .hex-fil du kopierer til stasjonen MICROBIT. Eksemplene under går fra et hjerte på skjermen til radio mellom to kort, og hvert eksempel vises som MakeCode-blokker, JavaScript og MicroPython.
Dette trenger du
Selve kortet får du i micro:bit 2 GO: et micro:bit V2 med USB-kabel (USB-A til microUSB), batteriholder for to AAA-batterier og to batterier. Mange micro:bit-sett, som eksperimentsettet fra ElecFreaks og oppfinnersettet med Grove-moduler, har ikke kortet med; det må du kjøpe separat. Alle eksemplene i guiden bruker bare det kortet har innebygd, bortsett fra LED-kretsen på P0.
Kabelen må overføre data: En ren ladekabel gir strøm, men kortet dukker ikke opp som stasjonen MICROBIT. Har PC-en bare USB-C, bruker du en adapter eller en kabel fra USB-C til microUSB, for eksempel 4-i-1-kabelen med USB-C og microUSB, som også overfører data. Et gjennomsiktig deksel beskytter kortet når det skal brukes mye eller festes i et prosjekt.
| Verktøy | Språk | Overføring | Passer når |
|---|---|---|---|
| Microsoft MakeCode (makecode.microbit.org) | Blokker og JavaScript, i tillegg MakeCodes egen Python-visning | WebUSB eller .hex-fil; fra iPad med micro:bit-appen over Bluetooth | Første program, skole og rask testing i simulatoren |
| micro:bit Python Editor (python.microbit.org) | MicroPython | WebUSB med Send to micro:bit, eller .hex-fil | Du vil skrive Python som tekst |
Koble til og send programmet til kortet
- Koble til kortet med USB-kabelen. På micro:bit V2 lyser den røde strømlampen og den gule systemlampen på baksiden.
- Åpne MakeCode på makecode.microbit.org i Chrome eller Edge, og velg New Project.
- Trykk Download nederst til venstre. Første gang ber MakeCode deg koble til kortet: trykk Next og deretter Pair.
- Velg kortet i listen. Det heter BBC micro:bit CMSIS-DAP eller DAPLink CMSIS-DAP. Marker det og trykk Connect.
- Last ned. Når vinduet Connected to micro:bit vises, trykker du Download i vinduet. Programmet går da rett til kortet. Den gule lampen på baksiden kan blinke under overføringen, og programmet starter av seg selv.
Neste gang holder det med ett klikk på Download. Uten WebUSB, for eksempel i Safari eller Firefox, lagres programmet som en .hex-fil i nedlastingsmappen. Dra filen over til stasjonen MICROBIT. Stasjonen forsvinner og kommer tilbake mens kortet starter på nytt, og .hex-filen vises ikke der etterpå. Det er normalt.
I micro:bit Python Editor heter knappen Send to micro:bit, og paringen er den samme. Med Save lagrer du programmet som fil, og du kan åpne både .hex- og .py-filer i editoren igjen.
Hvis overføringen ikke virker
- Vises ikke stasjonen MICROBIT, er kabelen trolig en ren ladekabel. Prøv en annen.
- Står det Failed to connect, trykker du Try Again, eller du laster ned .hex-filen og drar den over selv.
- Vil du fjerne paringen, klikker du på ikonet helt til venstre i adressefeltet (hengelås eller innstillingsikon), fjerner haken ved micro:bit-enheten og laster inn MakeCode på nytt.
micro:bit-programmering med blokker, JavaScript og MicroPython
I MakeCode drar du blokker fra kategoriene Basic, Input, Radio og de andre inn i arbeidsområdet, og øverst bytter du mellom Blocks og JavaScript. Blokken on start finnes bare i blokkvisningen: I JavaScript kjøres koden ovenfra og ned, og MakeCode legger hendelser som knappetrykk før koden fra on start. I simulatoren kan du trykke på knappene og teste uten å laste ned.
MakeCode har også en Python-visning, men den er ikke MicroPython. Det er MakeCodes egen Python-variant med de samme funksjonene som blokkene, for eksempel basic.show_icon(IconNames.HAPPY). MicroPython skriver du i micro:bit Python Editor, og der starter programmet med from microbit import *. Kode fra den ene virker ikke i den andre. MicroPython-eksemplene i guiden er skrevet for Python Editor, som markerer feil ved linjenummeret og også har en simulator.
Norske blokknavn
Norske blokker får du ved å velge Language i innstillingsmenyen i MakeCode og deretter norsk bokmål eller nynorsk. Oversettelsene lages av frivillige, så enkelte nyere blokker kan stå på engelsk. Guiden bruker de engelske navnene fra den offisielle dokumentasjonen; tabellen viser de godkjente bokmålsnavnene.
| Engelsk blokk | Norsk bokmål | Kategori på norsk |
|---|---|---|
| on start / forever | ved start / gjenta for alltid | Basis |
| show icon / show number / show string | vis ikon / vis tall / vis tekst | Basis |
| on button A pressed / on shake | når knapp A trykkes / når ristes | Inndata |
| temperature (°C) / light level | temperatur (°C) / lysnivå | Inndata |
| set skritt to 0 / change skritt by 1 | sett skritt til 0 / endre skritt med 1 | Variabler |
| radio set group / radio send string / radio send number / on radio received | radio sett gruppe / radio send tekst / radio send tall / når radio mottar | Radio |
| digital write pin P0 to 1 | skriv digital til P0 verdi 1 | Tilkobling |
Nivå 1: hjerte og knappene A og B
Kortet viser et hjerte ved start. Knapp A viser det store hjertet og knapp B det lille, så hjertet «slår» når du trykker A og B annenhver gang.
- Åpne Basic og dra show icon inn i on start. Klikk på bildet i blokken og velg hjertet.
- Åpne Input og dra ut on button A pressed. Hent en ny show icon fra Basic, legg den inni og velg hjertet.
- Dra ut en on button A pressed til og bytt A til B i nedtrekkslisten. Legg en show icon fra Basic inni og velg det lille hjertet.
- Trykk A og B i simulatoren. Virker det, trykker du Download.
input.onButtonPressed(Button.A, function () {
basic.showIcon(IconNames.Heart)
})
input.onButtonPressed(Button.B, function () {
basic.showIcon(IconNames.SmallHeart)
})
basic.showIcon(IconNames.Heart)
Den siste linjen er innholdet i on start. Hendelsene står øverst, men koden i dem kjører bare når knappen trykkes. Samme program i MicroPython:
from microbit import *
display.show(Image.HEART)
while True:
if button_a.was_pressed():
display.show(Image.HEART)
if button_b.was_pressed():
display.show(Image.HEART_SMALL)
sleep(20)
from microbit import *gir deg skjermendisplay, bildene iImage, knappene ogsleep.- I MicroPython finnes ingen hendelsesblokker, så du skriver løkken selv.
while True:gjentar innholdet så lenge kortet har strøm. was_pressed()er sann én gang for hvert trykk siden forrige gang du sjekket.is_pressed()er sann så lenge knappen holdes inne.sleep(20)venter 20 millisekunder før neste runde.
Prøv selv: legg til on button A+B pressed med show string «Hei», eller bytt ut hjertene med Image.HAPPY og Image.SAD i Python. Skjer det ingenting på kortet, laster du ned på nytt og trykker på reset-knappen på baksiden, så starter programmet fra begynnelsen.
Nivå 2: temperatur, lys og skritteller
Temperatur og lysnivå på knappetrykk
Blokken temperature (°C) leser en temperatursensor inne i prosessoren. Den viser vanligvis omtrent romtemperaturen, men verdien kan bli litt høyere når kortet jobber hardt. Lysnivået måles med LED-ene på skjermen og går fra 0 (mørkt) til 255 (sterkt lys). Første gang du trykker B, viser kortet 0, fordi lyssensoren må slås på først. Trykk en gang til, så får du den faktiske verdien.
input.onButtonPressed(Button.A, function () {
basic.showNumber(input.temperature())
})
input.onButtonPressed(Button.B, function () {
basic.showNumber(input.lightLevel())
})
from microbit import *
while True:
if button_a.was_pressed():
display.scroll(temperature())
if button_b.was_pressed():
display.scroll(display.read_light_level())
sleep(20)
Prøv selv: legg kortet ved siden av et vanlig termometer og finn ut hvor mange grader det viser for mye. Trekk fra forskjellen i programmet, så får du et mer nøyaktig termometer.
Skritteller med variabel og akselerometer
Akselerometeret merker bevegelse, og on shake kjører hver gang kortet ristes. MakeCodes eget skrittellerprosjekt teller hver risting som et skritt. Det er en forenkling, så telleren kan vise for mange eller for få skritt.
- Åpne Variables, trykk Make a Variable og kall variabelen
skritt. - Legg set skritt to 0 i on start.
- Dra ut on shake fra Input. Legg inn change skritt by 1 og en show number med variabelen skritt.
- Lag on button A pressed som setter skritt til 0 og viser tallet, slik at knapp A nullstiller telleren.
- Test med SHAKE-knappen i simulatoren, last ned, sett i batteriene og ta kortet i lomma.
let skritt = 0
input.onGesture(Gesture.Shake, function () {
skritt += 1
basic.showNumber(skritt)
})
input.onButtonPressed(Button.A, function () {
skritt = 0
basic.showNumber(skritt)
})
from microbit import *
skritt = 0
while True:
if accelerometer.was_gesture('shake'):
skritt += 1
display.scroll(skritt, wait=False)
if button_a.was_pressed():
skritt = 0
display.scroll(skritt, wait=False)
sleep(10)
let skritt = 0er set skritt to 0 i on start, ogskritt += 1er change skritt by 1.accelerometer.was_gesture('shake')er sann hvis kortet er ristet siden forrige gang du sjekket. I MicroPython oppdateres bevegelsene bare når programmet spør, så løkken må gå ofte, med en kortsleep.wait=Falselar tallet rulle over skjermen i bakgrunnen, så løkken fortsetter å telle mens teksten vises.
Prøv selv: MakeCode-prosjektet viser en bedre variant der forever viser tallet, mens on shake bare teller og stopper animasjonen med blokken stop animation fra Led. Da henger telleren bedre med når du går fort.
Kantkontakten: P0, P1, P2, 3V og GND
Den gullfargede kanten nederst på kortet har 25 tilkoblinger, kalt pinner. Fem av dem er store ringer med hull, beregnet for krokodilleklemmer og 4 mm-bananplugger. Sett forfra, med skjermen mot deg og kanten nederst, står de fra venstre: 0, 1, 2, 3V og GND. De 20 smale stripene ved siden av og mellom ringene sitter med 1,27 mm avstand og krever en egen kantkontakt eller et tilkoblingskort. Flere av dem deles med skjermen og knappene, så det er lurt å begynne med de store ringene.
| Ring | Funksjon | Typisk bruk |
|---|---|---|
| 0 (P0) | Digital inn og ut, analog inngang, berøring, PWM | LED, knapp, lyd |
| 1 (P1) | Samme som P0 | Sensor, knapp |
| 2 (P2) | Samme som P0 | Sensor, knapp |
| 3V | Strøm ut når kortet får strøm fra USB eller batteri | Strøm til små kretser og sensorer |
| GND | Jord, 0 V | Returledning for alle kretser |
En ekstern LED på P0, fra A til Å
micro:bit Educational Foundation beskriver nettopp denne kretsen: P0 til en motstand, motstanden til LED-ens lange bein, og det korte beinet til GND. Motstanden begrenser strømmen, og verdien regner du ut med Ohms lov: strøm = (spenning på pinnen − spenning over LED-en) / motstand.
- Pinnen gir rundt 3,3 V når kortet går på USB, og litt mindre på batterier. En rød LED fra settet trenger 2,0 til 2,3 V.
- Med grensen på 5 mA per pinne blir den minste motstanden (3,3 V − 2,0 V) / 0,005 A = 260 Ω. En vanlig verdi med litt margin er 330 Ω, som gir rundt 3,9 mA.
- Stiftelsen bruker 1 kΩ i eksempelet sitt og kaller det et godt utgangspunkt. Det gir (3,3 V − 2,0 V) / 1000 Ω ≈ 1,3 mA, og LED-en lyser svakere enn med 330 Ω. Motstandene i LED-settet er nettopp på 1 kΩ.
- Den blå LED-en i settet trenger rundt 3,2 V, så på 3,3 V blir det nesten ingen spenning igjen over motstanden. Bruk rød, gul eller grønn.
Mer om beregningen finner du i guiden om hva en resistor er, og fargekoden på motstanden leser du med fargekodekalkulatoren.
- Trekk ut USB-kabelen og batteriene. Koble aldri om mens kortet har strøm.
- Fest den røde krokodillekabelen i ring 0 og i det ene beinet på motstanden.
- Fest den gule kabelen i det andre beinet på motstanden og i LED-ens lange bein (anoden, +).
- Fest den svarte kabelen i LED-ens korte bein (katoden, −, ved den flate kanten på LED-en) og i ringen GND.
- Kontroller at ingen klemme berører en nabopinne, og at beina ikke berører hverandre. Koble så til USB.
| Fra | Til | Hvorfor |
|---|---|---|
| Ring 0 (P0), rød kabel | Motstand 1 kΩ, bein 1 | Styresignalet fra programmet |
| Motstand, bein 2, gul kabel | LED, langt bein (+) | Strømmen går gjennom motstanden først |
| LED, kort bein (−), svart kabel | Ring GND | Strømmen tilbake til kortet |
Programmet slår LED-en på med knapp A og av med knapp B. Blokken digital write pin ligger i kategorien Pins, som du finner under Advanced i blokklisten.
input.onButtonPressed(Button.A, function () {
pins.digitalWritePin(DigitalPin.P0, 1)
})
input.onButtonPressed(Button.B, function () {
pins.digitalWritePin(DigitalPin.P0, 0)
})
from microbit import *
while True:
if button_a.was_pressed():
pin0.write_digital(1)
if button_b.was_pressed():
pin0.write_digital(0)
sleep(20)
digitalWritePin(DigitalPin.P0, 1) og pin0.write_digital(1) setter P0 høy, slik at strømmen går fra P0 gjennom motstanden og LED-en til GND. Verdien 0 gir 0 V på pinnen, og LED-en slukker. Lyser den ikke, snur du LED-en, sjekker hver klemme og kontrollerer at motstanden er 1 kΩ og ikke 1 MΩ.
Nivå 3: radio mellom to micro:bit-kort
Begge kortene får samme program. Trykker du A på det ene, viser det andre «hei». Trykker du B, sender kortet temperaturen sin som tall, og mottakeren viser tallet.
Radioen sender til alle kort i nærheten som lytter på samme gruppe. Gruppen er et tall fra 0 til 255 og fungerer som en kanal: Et kort sender og mottar bare i én gruppe om gangen. Velger du ingen gruppe, bruker kortet gruppe 0. I et rom med mange kort bør derfor hvert par velge sitt eget tall.
- Åpne Radio og legg radio set group i on start. Skriv 23 eller et annet tall dere har avtalt.
- Lag on button A pressed med radio send string og teksten «hei».
- Lag on button B pressed med radio send number, og sett inn temperature (°C) fra Input.
- Dra ut on radio received receivedString. Legg inn show string, og dra variabelen receivedString fra hendelsesblokken inn i den.
- Gjør det samme med on radio received receivedNumber og show number.
- Last ned programmet til begge kortene, koble det ene fra PC-en og sett i batterier.
input.onButtonPressed(Button.A, function () {
radio.sendString("hei")
})
input.onButtonPressed(Button.B, function () {
radio.sendNumber(input.temperature())
})
radio.onReceivedString(function (receivedString) {
basic.showString(receivedString)
})
radio.onReceivedNumber(function (receivedNumber) {
basic.showNumber(receivedNumber)
})
radio.setGroup(23)
from microbit import *
import radio
radio.config(group=23)
radio.on()
while True:
if button_a.was_pressed():
radio.send('hei')
if button_b.was_pressed():
radio.send(str(temperature()))
try:
melding = radio.receive()
except ValueError:
melding = None
if melding:
display.scroll(melding)
sleep(20)
radio.setGroup(23)ogradio.config(group=23)velger gruppe. Begge kortene må ha samme tall, ellers hører de ikke hverandre.radio.sendStringsender tekst på opptil 19 tegn. Lengre meldinger må deles opp.- MakeCode ser om en melding er tekst eller tall og kjører mottaksblokken for riktig type. Hver mottaksblokk kan bare brukes én gang i programmet, og
receivedStringellerreceivedNumberer meldingen som kom inn. radio.on()slår på radioen. Nyere MicroPython-versjoner gjør det allerede vedimport radio, men linjen gjør programmet tydeligere.radio.send()sender bare tekst, såstr(temperature())gjør tallet om til tekst først.radio.receive()girNonenår ingen melding venter. I MicroPython holder kortet som standard tre meldinger i kø; kommer det flere før du leser dem, forsvinner de nye.tryogexcept ValueErrorfanger opp en melding som ikke kan gjøres om til tekst. Uten dem stopper programmet med en feilmelding hvis det skjer.
Med høyeste sendestyrke kan rekkevidden bli opptil rundt 70 meter i et åpent område uten mange andre datamaskiner i nærheten. Standard sendestyrke er 6 på en skala fra 0 til 7. Test radioen på to ekte kort, fordi blant annet gruppevalget bare virker på selve kortet.
Prøv selv: MakeCode-dokumentasjonen har et eksempel som bruker signalstyrken til mottatte meldinger (received packet med signal strength) som en avstandsmåler. Prøv å finne et kort som er gjemt i rommet.
Vanlige spørsmål
Hva er forskjellen på micro:bit V1 og V2?
V2 har innebygd høyttaler, mikrofon, en berøringsfølsom logo og en reset-knapp som også kan sette kortet i hvilemodus. Du kjenner igjen V2 på hakkene i kantkontakten; på V1 er kanten rett. micro:bit 2 GO er et V2. Enkelte blokker, for eksempel for høyttaleren og dataloggeren, krever V2.
Må jeg installere noe på PC-en?
Nei. MakeCode og Python Editor kjører i nettleseren. Python Editor kan også installeres som app, slik at den virker uten internett.
Kan jeg programmere micro:bit fra iPad?
Ja, med MakeCode i micro:bit-appen. Programmet sendes over Bluetooth, så kortet må ha batterier, og appen krever iOS 13 eller nyere. micro:bit-stiftelsen beskriver bare overføring over Bluetooth for iPad og iPhone, og fra Python Editor går det foreløpig ikke an å overføre til kortet på disse enhetene.
Hvor lagres prosjektene mine?
MakeCode lagrer prosjektene i nettleserens midlertidige lagring, og de kan forsvinne når nettleserdata slettes. Lagre derfor en kopi som fil, eller logg inn i MakeCode. En lagret .hex-fil åpner du igjen med Import i MakeCode.
Veien videre
Når de tre nivåene og LED-kretsen sitter, er neste steg flere komponenter utenfor kortet. Eksperimentsettet samler LED-er, knapper, lyssensor, buzzer, servo og vifte på ett kretskort, og med Discovery Kit fra Kitronik bygger du LED-kretser på koblingsbrett. Lærere finner oppgaver koblet til fagene i guiden micro:bit i skolen, og en robotbil programmerer du i guiden om Cutebot. Lurer du på om micro:bit er riktig plattform, finner du en sammenligning med Arduino, Pico og ESP32 i guiden om å lære programmering med elektronikk.
Kilder
Blokknavn, JavaScript og eksemplene er kontrollert mot MakeCode-referansen for micro:bit, og de norske navnene mot MakeCodes godkjente oversettelser. Avsnittene om overføring, WebUSB og lagring følger micro:bit-stiftelsens brukerveiledning. MicroPython-koden bruker funksjonene i dokumentasjonen for micro:bit MicroPython. Pinner og strømgrenser er hentet fra beskrivelsen av kantkontakten og stiftelsens artikkel om å koble en LED til micro:bit.




