Spring til indhold
8-15 år Øvet ⏱ 45-60 minutter

Byg en slikalarm med micro:bit – spøgelset fniser, når låget åbnes

Læg en micro:bit i din slikæske. Når nogen åbner låget, kommer der lys ind, og et spøgelse dukker op og fniser. Bagefter kan du se, hvor mange gange æsken er blevet åbnet.

🏅 Lav et diplom
Illustration af en micro:bit med et lysende hjerte

Har du fået slik til Halloween? Så byg en alarm, der holder øje med det. micro:bittens LED-skærm kan nemlig også måle lys. Inde i en lukket æske er der mørkt. Når nogen åbner låget, kommer der lys ind – og så viser micro:bitten et spøgelse og fniser. Med knap A kan du se, hvor mange gange æsken er blevet åbnet, mens du ikke kiggede.

Før du starter

Du skal bruge en micro:bit V2, fordi lyden kommer fra den indbyggede højttaler. V2 har en lille højttaler på bagsiden. Har du en micro:bit V1, kan du stadig lave alarmen: fjern bare blokken med lyden, så viser spøgelset sig uden at fnise.

MakeCode viser blokkene på dansk, hvis din browser er sat til dansk. Her står det engelske navn først og det danske i parentes.

Sådan gør du

  1. Åbn MakeCode, og lav et nyt projekt, der hedder Slikalarm.
  2. Klik på Variables (Variabler), og lav fire variabler: taerskel, aaben, antal og lys. Skriv dem uden æ, ø og å, ligesom i koden.
  3. Sæt “set taerskel to 30” (“sæt taerskel til 30”) ind i “on start” (“når programmet starter”). taerskel er grænsen mellem mørkt og lyst. Du finder det rigtige tal i trin 7.
  4. Byg resten, så det ligner oversigten “Blokkene” herunder. Du skal bruge “forever” (“for altid”), “light level” (“lysniveau”), “show icon” (“vis ikon”) med spøgelset, “play … until done” med lyden “giggle” (“fnis”), “pause (ms)”, “clear screen” (“ryd skærmen”), “on button A pressed” (“når der trykkes på knappen A”) og “show number” (“vis nummer”). Brug søgefeltet over kategorierne, hvis du ikke kan finde en blok.
  5. Fra Logic (Logik) skal du bruge “if … then … else” (“hvis … så … ellers”), “and” (“og”), “not” (“ikke”), “true” og “false” (“sand” og “falsk”) og sammenligningerne < og >. Tryk på ⊕ nederst på hvis-blokken, indtil den har en række med “else if” (“ellers hvis”). En tom “else” gør ikke noget.
  6. Klik på Download (Hent), og læg koden over på micro:bitten. Sæt batteripakken til.
  7. Find det rigtige tal til taerskel: hold micro:bitten op i rummet, og tryk på B. Skærmen viser, hvor lyst der er. Læg så hånden helt over LED-skærmen, og tryk på B igen. micro:bitten måler, i det øjeblik du trykker, så du kan godt fjerne hånden for at se tallet. Vælg et tal midt imellem de to målinger, skriv det i “set taerskel to”, og download igen. Fniser spøgelset, mens du måler, er det helt i orden.
  8. Byg slikæsken: find en æske med låg, fx en skotøjsæske, og pynt den som et græskar eller et spøgelseshus. Læg micro:bitten og batteripakken i bunden med LED-skærmen opad, og læg slikket ved siden af.
  9. Luk låget, vent et øjeblik, og åbn det igen. Fniser spøgelset? Tryk på A for at se, hvor mange gange æsken er blevet åbnet. Tallet starter forfra, hvis micro:bitten bliver slukket.

Blokkene

on start
    set taerskel to 30

forever
    set lys to (light level)
    if <not aaben> and <lys > taerskel> then
        set aaben to true
        change antal by 1
        show icon (ghost)
        play (giggle) until done
        pause (ms) 1000
        clear screen
    else if <aaben> and <lys < taerskel> then
        set aaben to false
    pause (ms) 100

on button A pressed
    show number (antal)

on button B pressed
    show number (light level)

Samme program i MakeCode Python

Skift fra Blocks (Blokke) til Python øverst i MakeCode for at se koden. Du kan også gøre det omvendt: skriv Python-koden, og skift til Blocks – så bygger MakeCode blokkene for dig.

# SLIKALARMEN: micro:bitten ligger i æsken med LED-skærmen opad
taerskel = 30        # skift tallet, når du har målt lyset med knap B
aaben = False        # er låget åbent lige nu?
antal = 0            # hvor mange gange er æsken blevet åbnet?

def on_button_pressed_a():
    basic.show_number(antal)
input.on_button_pressed(Button.A, on_button_pressed_a)

def on_button_pressed_b():
    basic.show_number(input.light_level())
input.on_button_pressed(Button.B, on_button_pressed_b)

def on_forever():
    global aaben, antal
    lys = input.light_level()
    if not aaben and lys > taerskel:
        aaben = True                  # låget er lige blevet åbnet
        antal += 1
        basic.show_icon(IconNames.GHOST)
        music.play(music.builtin_playable_sound_effect(soundExpression.giggle), music.PlaybackMode.UNTIL_DONE)
        basic.pause(1000)
        basic.clear_screen()
    elif aaben and lys < taerskel:
        aaben = False                 # låget er lukket igen
    basic.pause(100)
basic.forever(on_forever)

Sådan virker det

  • “light level” giver et tal fra 0 (helt mørkt) til 255 (meget lyst). Den første måling efter start er 0, fordi lyssensoren lige skal tænde. Det gør ikke noget her, for 0 betyder bare “lukket”.
  • Variablen aaben husker, om låget allerede er åbent. Uden den ville spøgelset fnise igen og igen, så længe låget står åbent. Nu fniser det kun én gang, hver gang låget bliver åbnet.
  • Når lyset kommer under taerskel igen, er låget lukket, og aaben bliver falsk. Så er alarmen klar igen.
  • antal tæller op, hver gang låget bliver åbnet, og knap A viser tallet.

💡 Har du ikke din micro:bit ved hånden? Prøv koden i simulatoren til venstre i MakeCode. Når koden bruger “light level”, kommer der en gul og sort cirkel øverst på simulatoren. Træk i den for at gøre der mørkt eller lyst.

💡 Til forældre: Læg gerne micro:bitten i en lille, gennemsigtig pose, så den ikke bliver klistret – lyset kan stadig komme igennem. Har I ingen micro:bit, så spørg på skolen eller biblioteket, om I kan låne en.

Vil du lave mere med micro:bittens sensorer? Byg en lampe, der reagerer på lyd, eller tag forløbet micro:bit – fra første blink til robot.

🧠 Udfordring – prøv selv

Lav en hemmelig kode: når du trykker på A og B på samme tid ("on button A+B pressed"), skal alarmen slå fra én gang, så du selv kan tage et stykke slik. Tip: lav en variabel, der hedder "hemmelig", og tjek den, før spøgelset fniser.

Se dit kodepas →

Fluebenet gemmes kun i din browser og samler stempler i dit kodepas.

👩‍🏫 Til læreren – brug projektet i undervisningen
Fag
Natur/teknologi, Matematik, Fysik/kemi
Klassetrin
4.–7. klasse
Tid
2 lektioner à 45 min
Teknologiforståelse
Teknologisk handleevne, Computationel tankegang, Digital myndiggørelse

Læringsmål

  • Eleverne kan bruge micro:bittens LED-skærm som lyssensor og vælge en grænseværdi (tærskel) ud fra deres egne målinger.
  • Eleverne kan bruge en variabel, der husker, om låget er åbent, så alarmen kun reagerer én gang, hver gang låget åbnes.
  • Eleverne kan tælle hændelser med en variabel og vise resultatet.
  • Eleverne kan teste alarmen i æsken og forklare, hvorfor den kan reagere forkert.

Forberedelse og materialer

  • Pr. makkerpar: micro:bit V2, batteripakke med 2 AAA-batterier og USB-kabel. Lyden kræver V2. På en V1 fjernes lydblokken, så virker resten.
  • En æske med låg pr. gruppe, fx en skotøjsæske, og papir, farver og tape til at pynte den.
  • Test MakeCode og download på skolens computere. Uden micro:bits kan eleverne bruge simulatoren, hvor man trækker i lysniveauet.
  • Har skolen regler om slik, så læg noget andet i æsken, fx viskelædere eller klistermærker.

Forslag til forløb

  • Intro (10 min): Hvordan kan en micro:bit "se", at et låg bliver åbnet? Vis lysniveauet med knap B, og hold hånden over skærmen.
  • Byg programmet (30 min): Eleverne laver de fire variabler og bygger blokkene eller Python-koden.
  • Find tærsklen (15 min): Eleverne måler lyst og mørkt med knap B, vælger et tal midt imellem og downloader igen.
  • Byg og test æsken (25 min): Grupperne pynter æsken, lægger micro:bitten i og tester: fniser spøgelset én gang pr. åbning, og tæller knap A rigtigt?
  • Opsamling (10 min): Hvorfor er variablen aaben nødvendig? Hvad skete der, når lyset i lokalet ændrede sig?

Differentiering

  • Hvis det går hurtigt: Eleverne laver en hemmelig kode med A+B, der slår alarmen fra én gang (projektets udfordring).
  • Hvis det driller: Start uden variablen aaben, så spøgelset vises, når lyset er over tærsklen. Lad eleverne opdage, at det bliver ved med at fnise, og tilføj variablen sammen med dem.

Spørgsmål til samtale

  • Alarmen holder øje med æsken, også når I ikke er der. Hvornår er det i orden at overvåge noget, og hvornår er det ikke?
  • Rigtige alarmer kan også give falsk alarm. Hvad kan få jeres slikalarm til at tage fejl, og hvad betyder det, når en rigtig alarm gør det?
  • Hvor i hverdagen sidder der sensorer, der reagerer på lys, fx i lamper, telefoner eller døre?

Lærerarket er vejledende og skrevet af CodingKids. Se også EMU's materialer om teknologiforståelse.