💻 Programmering og digital skapning

Fra kode til virkelige objekter

Ti prosjekter – fra Scratch og Python til micro:bit, Arduino og 3D-printing. Ingen fast rekkefølge – velg det som passer ditt trinn og dine elever.

Python
Scratch
micro:bit
Arduino
3D-printing
HTML
4.–10. trinn
🔍
Prosjekt Kategori Trinn Tid Antall deler Hva elevene lager
🎨 Tegn med kode Python 6.–9. trinn 5 × 45 min 5 oppgaver Animert scene med pygame – figurer, løkker, tastatur og kreativt prosjekt
🗡️ Tekstbasert eventyrspill Python 6.–9. trinn 5 × 40 min 5 oppgaver Terminalspill med valg, inventar, kamp og funksjoner
🪙 Myntkast og sannsynlighet Python 6.–8. trinn 3 × 30 min 3 oppgaver Simulering koblet til matematikk – store talls lov
🎲 Terningkast og statistikk Python 7.–9. trinn 3 × 40 min 3 oppgaver Sumfordeling, analyse og terningspill med Yatzy-logikk
🧮 Mattetrener med while-løkke Python 7.–10. trinn 3 × 40 min 3 oppgaver Feilsøking og bygging av egen treningsapp med while-løkke
🌐 Lag din første nettside HTML 5.–10. trinn 6 × 25 min 6 oppgaver Et komplett nettsted med to sider, bilder, lister og lenker
🐱 Lag spill med Scratch Scratch 4.–8. trinn 6 × 30 min 6 oppgaver Et komplett spill med bevegelse, poeng, kloner og game over
🔴 Programmering med micro:bit micro:bit 5.–10. trinn 6 × 35 min 6 oppgaver LED, akselerometer, radio, servomotor og elektrisk krets
🔵 Kom i gang med Arduino Arduino 8.–10. trinn 6 × 40 min 6 oppgaver Trafikklys, temperatursensor, ultralydsensor og servomotor
🟣 3D-printing med Tinkercad 3D-print 5.–10. trinn 4 × 60 min 6 oppgaver Eget 3D-designet objekt – fra idé til ferdig printet produkt

🎨 Tegn med kode
Elevene lager en animert scene med pygame. De lærer koordinatsystemet, farger, geometriske figurer og til slutt animasjon – uten å se fasitskoden.
📦 import
🎨 RGB-farger
📐 Koordinatsystem
🔵 Sirkler, rektangler, polygon
🎬 Animasjon (frame for frame)
⏱️ FPS og klokke
01
Sett opp vinduet

Importer pygame, start det og lag et farget vindu med en tittel. Hva skjer hvis du endrer tallene?

02
Lær farger

Farger i pygame er tre tall (rød, grønn, blå) fra 0–255. Lag egne fargevariabler og fyll bakgrunnen.

03
Tegn figurer

Bruk draw.circle, draw.rect, draw.polygon og draw.line til å plassere former på arket. Koordinatsystemet starter øverst til venstre.

04
Bygg en scene

Kombiner figurer til noe gjenkjennelig – en fotballbane, et ansikt, en by. Bruk kommentarer til å forklare hva hver del er.

05
Animer det

Tegn scenen på nytt med én endring mellom hver frame. Bruk display.update() og Clock.tick(FPS) for å styre hastigheten.

🪟
🌱 Intro pygame
Sett opp et pygame-vindu

Kom i gang med pygame: importer biblioteket, initialiser det og vis et farget vindu på skjermen.

🎯 6.–10. trinn ⏱ 20 min

💡 Konsepter

  • import pygame, sys – henter inn bibliotek
  • pygame.init() – starter opp systemet
  • pygame.display.set_mode((bredde, høyde)) – lager vinduet
  • pygame.display.set_caption("tittel") – setter vindustittel
  • ark.fill(farge) – fyller bakgrunnen med en farge
  • pygame.display.update() – viser det du har tegnet

🔢 Farger er tre tall

  • RGB = Rød, Grønn, Blå – hvert tall fra 0 til 255
  • (0, 0, 0) = sort    (255, 255, 255) = hvit
  • (255, 0, 0) = rød    (0, 0, 255) = blå
  • Lag egne variabler: rød = (255, 0, 0)

🎯 Oppgave

  • Lag et vindu som er 800×600 piksler
  • Gi det en tittel du velger selv
  • Fyll bakgrunnen med en farge du lager selv
  • Prøv å endre størrelsen – hva skjer?
📐
🌱 Intro pygame
Koordinatsystemet i pygame

I pygame starter (0,0) øverst til venstre. X går til høyre, Y går nedover. Forstå dette før du tegner figurer.

🎯 6.–10. trinn ⏱ 15 min

📌 Slik fungerer det

  • (0, 0) = øvre venstre hjørne av vinduet
  • X øker mot høyre – Y øker nedover (motsatt av matte!)
  • Et vindu på 800×600 har hjørner: (0,0), (800,0), (0,600), (800,600)
  • Midten av et 800×600-vindu er ca. (400, 300)

🎯 Prøv det

  • Tegn en sirkel midt på skjermen
  • Flytt sirkelen til hvert hjørne – hvilke koordinater bruker du?
  • Hva skjer med Y-verdien når du vil at noe skal være høyt oppe?
🔵
🌱 Intro pygame
Tegn sirkler, rektangler og linjer

Lær de viktigste tegnefunksjonene i pygame og forstå hva hvert argument betyr.

🎯 6.–10. trinn ⏱ 30 min

🔧 Funksjoner

# Sirkel: (vindu, farge, sentrum, radius, tykkelse) pygame.draw.circle(ark, rød, (400, 300), 50, 0) # tykkelse=0 = fylt, >0 = bare kanten # Rektangel: (vindu, farge, (x, y, bredde, høyde)) pygame.draw.rect(ark, blå, (100, 100, 200, 80)) # Linje: (vindu, farge, start, slutt, tykkelse) pygame.draw.line(ark, hvit, (0, 0), (400, 300), 3) # Polygon: (vindu, farge, liste med punkter) pygame.draw.polygon(ark, grønn, [(100,0),(200,100),(0,100)])

🎯 Oppgave

  • Tegn en enkel figur – et ansikt, en bil, et hus
  • Bruk minst tre ulike draw-funksjoner
  • Gi alle farger selvvalgte variabelnavn
  • Skriv kommentarer som forklarer hva hver linje tegner
🎬
🚀 Utvidelse pygame
Animer – lag bevegelse med kode

En animasjon er bare mange bilder etter hverandre. Lær å tegne scenen på nytt med en liten endring mellom hver frame.

🎯 8.–10. trinn ⏱ 45 min

💡 Slik fungerer animasjon

  • Du tegner alt på nytt for hvert bilde (frame)
  • ark.fill(farge) på nytt = sletter forrige bilde
  • display.update() = vis det nye bildet
  • Clock.tick(FPS) = vent litt (kontrollerer hastighet)

🔢 FPS og hastighet

  • FPS = Frames Per Second – bilder per sekund
  • FPS = 1 betyr ett bilde i sekundet (veldig sakte)
  • FPS = 30 er vanlig for jevn animasjon
  • Endre FPS underveis: FPS = 3 gjør det raskere

🎯 Oppgave

  • Tegn scenen din fra forrige oppgave
  • Endre én ting mellom hvert bilde (f.eks. en ball som faller)
  • Begynn med FPS = 1 – prøv å endre det
  • Hva er det minste du kan endre mellom to bilder for å få bevegelse?
🎨 Kreativt prosjekt pygame
Lag din egen animerte scene

Nå vet du nok til å planlegge og bygge en hel animert scene fra bunnen. Hva vil du vise?

🎯 6.–10. trinn ⏱ 60–120 min 🏠 Prosjektarbeid

📋 Minimumskrav

  • Minst 5 forskjellige figurer (bruk alle draw-typene)
  • Minst 6 selvlagde fargevariabler
  • Minst én animert del (noe beveger seg)
  • Kommentarer som forklarer hva du har bygget

💡 Ideer

  • En fotballkamp med ball som beveger seg og scoretavle
  • Et solsystem der planetene kretser rundt sola
  • En storm med regn som faller
  • En enkel animert karakter som går
  • Din egen idé – avklar med lærer!

🏆 Utfordring

  • Kan du endre FPS underveis i animasjonen?
  • Kan noe vokse (radius øker frame for frame)?
  • Kan noe endre farge når det beveger seg?
👩‍🏫

For læreren – Tegn med kode (pygame)

Installasjon, differensiering og tekniske tips for Python/pygame i klasserommet

① Installasjon

  1. Last ned Mu Editor fra codewith.mu – inkluderer pygame
  2. Alternativt: installer Python fra python.org, kjør pip install pygame
  3. Test med: import pygame; pygame.init() – ingen feil = ok
  4. På Chromebook: bruk Trinket.io (begrenset pygame-støtte)

② Differensiering

  • Lavt nivå: gi ferdig vindu-oppsett, be om å legge til figurer
  • Middels: eleven bruker kode-eksemplene og tilpasser fritt
  • Høyt nivå: lag en variabel som endres mellom frames → animasjon
  • Alle 5 deler kan tas uavhengig – ikke obligatorisk rekkefølge

③ Vanlige feil

  • Svart vindu: pygame.display.flip() mangler
  • Vinduet fryser: mangler hendelsesløkke (event.get())
  • ModuleNotFoundError: pygame ikke installert
  • Feil koordinater: minn om at Y øker nedover

④ Vurderingstips

  • Be elevene forklare koden muntlig – hva gjør hver linje?
  • Sjekk at de bruker kommentarer i koden
  • Del 5 (kreativt prosjekt) egner seg godt til vurdering
  • Skjermbilde + kode som innlevering fungerer fint
⏱️
Tidsoversikt

Del 1–4: 40–45 min per del. Del 5 (kreativt prosjekt): 60–90 min. Totalt ca. 4–5 skoletimer om man tar alle delene.

💡
Tips

La elevene vise hverandres animasjoner på slutten av timen – det motiverer og gir gode ideer. Mu Editor anbefales fremfor IDLE for nybegynnere.


🗡️ Lag et tekstbasert spill
Elevene bygger sitt eget eventyrspill med valg, inventory, penger og liv – trinn for trinn. Programmet kjøres i terminalen, ikke i pygame.
📦 import random
📝 print og input
🔀 if / elif / else
📋 Lister
🔢 Variabler og aritmetikk
🎲 random.randint
✂️ .strip() og .lower()
01
Variabler og status

Definer liv, penger og inventory som variabler. Print dem ut slik at spilleren alltid ser statusen sin.

02
Valg med input

Bruk input() til å stille spørsmål og if/elif/else til å reagere på svaret. Husk .strip() og .lower()!

03
Inventory med liste

En liste er en samling av ting: inventory = ["kniv"]. Bruk .append() for å legge til og .remove() for å ta bort.

04
Sjekk inventory

Bruk if "kniv" in inventory: for å sjekke hva spilleren har. Ulike gjenstander gir ulike utfall.

05
Tilfeldig med random

Importer random og bruk random.randint(1, 10) for å lage tilfeldige tall. Perfekt til kampscener og utfordringer.

📊
🌱 Intro Tekstspill
Variabler og status

Lag de grunnleggende spillvariablene: liv, penger og inventory. Det er spillets "hjerne" – alt bygger på dette.

🎯 6.–10. trinn ⏱ 20 min

💡 Konsepter

  • En variabel lagrer en verdi: liv = 100
  • Du kan endre den: liv = liv - 20 eller liv -= 20
  • En liste lagrer flere ting: inventory = ["kniv", "skjold"]
  • print() viser tekst og verdier til spilleren

🎯 Oppgave

  • Lag variablene liv, penger og inventory
  • Print dem ut med en forklaring (f.eks. "Liv: 100")
  • Test: hva skjer hvis du endrer verdiene og printer igjen?
  • Velg en setting for spillet ditt – kloakk? Skog? Skolegård?
🔀
🌱 Intro Tekstspill
Valg med if og input

Spillere tar valg. Lær å stille spørsmål med input() og reagere ulikt basert på svaret med if/elif/else.

🎯 6.–10. trinn ⏱ 30 min

🔧 Slik fungerer det

# input() stiller et spørsmål og lagrer svaret svar = input("Hva gjør du? ").strip().lower() if svar == "gå frem": print("Du gikk frem og fant en skatt!") elif svar == "gå tilbake": print("Du snudde og gikk tilbake.") else: print("Ugyldig valg. Prøv igjen.")

⚠️ Husk!

  • .strip() fjerner mellomrom foran og bak
  • .lower() gjør alt til små bokstaver
  • Uten disse to vil "Ja " og "ja" gi ulike svar

🎯 Oppgave

  • Lag en åpningsscene der spilleren møter en karakter
  • La spilleren ta minst to valg med ulike konsekvenser
  • Bruk alltid .strip().lower() på input
🎒
🌱 Intro Tekstspill
Inventory med lister

En inventory er bare en liste i Python. Lær å legge til ting, ta bort ting og sjekke hva som er der.

🎯 6.–10. trinn ⏱ 25 min

🔧 Liste-operasjoner

inventory = ["brød", "kart"] # Legg til inventory.append("sverd") # Fjern (må finnes i listen!) inventory.remove("brød") # Sjekk om noe er der if "sverd" in inventory: print("Du har sverdet!") # Vis hele inventory print("Inventory:", inventory)

🎯 Oppgave

  • Lag et sted i spillet der du kan kjøpe noe
  • Trekk fra penger og legg til gjenstanden i inventory
  • Lag et annet sted der inventory avgjør hva som skjer
🎲
🚀 Utvidelse Tekstspill
Tilfeldig – bruk random

Importer random og bruk randint til å generere tilfeldige tall. Perfekt til kampscener, spørsmål og overraskelser.

🎯 8.–10. trinn ⏱ 35 min

🔧 random i praksis

import random # Tilfeldig tall mellom 1 og 6 terning = random.randint(1, 6) print("Du kastet:", terning) # Ta et tilfeldig element fra en liste inventory = ["kniv", "skjold", "brød"] mistet = random.choice(inventory) inventory.remove(mistet) print("Du mistet:", mistet)

💡 Ideer til bruk

  • En boss som stiller tilfeldige regnestykker
  • En fiende som gjør tilfeldig skade mellom 5 og 25
  • En sjansen der du vinner eller taper avhengig av et tilfeldig tall
  • En fiende som stjeler en tilfeldig gjenstand fra inventory

🎯 Oppgave

  • Legg til en kampscene med tilfeldige tall
  • Bruk random.choice til å la fienden stjele en tilfeldig ting
  • Test: kjør programmet 5 ganger – er utfallet alltid ulikt?
🗺️
🎨 Kreativt prosjekt Tekstspill
Bygg ditt eget eventyrspill

Nå vet du nok til å planlegge og bygge et helt eget spill. Lag et kart på papir først – så koder du det.

🎯 6.–10. trinn ⏱ 90–180 min ✏️ Planlegg på papir

📋 Minimumskrav

  • Minst 3 variabler (f.eks. liv, penger, poeng)
  • En inventory med minst 2 gjenstander du kan samle
  • Minst 5 valg med if/elif/else
  • En tilfeldig hendelse med random
  • Minst to mulige utfall: vinn og tap

🗺️ Planlegg på papir

  • Tegn et kart over spillverdenen
  • Marker: startpunkt, valg-punkter, slutt-punkter
  • Bestem: hvilke gjenstander finnes og hva gjør de?
  • Begynn alltid å kode etter du har planlagt

🏆 Ekstra utfordring

  • Lag en boss som stiller matteoppgaver med tilfeldige tall
  • La inventory påvirke hvem som vinner finalkampen
  • Legg til en butikk der spilleren kan bruke penger
👩‍🏫

For læreren – Tekstbasert eventyrspill

Pedagogiske tips, differensiering og vanlige utfordringer

① Planlegging først

  • Be elevene tegne spillkart på papir med rom, valg og konsekvenser
  • Godkjenn kartet før de begynner å kode – forhindrer at de sitter fast
  • Tips: la elevene bytte kart med en medelev og kode den andres spill
  • Sjekk at kartet har minst én vinnerbetingelse og én «game over»

② Differensiering

  • Lavt nivå: del 1–2 – enkle valg og én helsevariabel
  • Middels: del 1–4 – fullt inventarsystem og kampsystem
  • Høyt nivå: del 5 – fullstendig spill med 4+ rom og logikk
  • Fungerer godt som tverrfaglig prosjekt med norsk (historiefortelling)

③ Vanlige feil

  • IndentationError: feil innrykk – Python er strengt
  • if x = y: én = er tilordning, == er sammenligning
  • input() gir tekst: husk int() for å sammenligne med tall
  • Uendelig løkke: while True uten break stopper aldri

④ Vurderingstips

  • Innlevering: .py-fil + spillkart-skisse (foto av papir er fint)
  • La eleven presentere spillet for klassen – andre elever spiller det
  • Vurder: fungerer spillet, er koden ryddig, er det kommentarer?
  • Del 5 egner seg godt til vurdering – fullstendig produkt
⏱️
Tidsoversikt

Del 1–4: 35–45 min per del. Del 5 (fullstendig spill): 60–90 min. Totalt ca. 4–5 timer for hele prosjektet.

🔧
Ingen installasjon?

Tekstspillet kjører i vanlig terminal/IDLE – trenger ikke pygame. Trinket.io fungerer utmerket for del 1–3 om maskiner ikke har Python installert.


🪙 Myntkast og sannsynlighet
Elevene leser, endrer og utvider et ferdig program som simulerer myntkast. De utforsker hva som skjer med fordelingen når antall kast øker – og kobler det til sannsynlighet i matematikk.
🔄 for-løkke
🎲 random.randint
🔢 Teller-variabler
📊 Prosent-utregning
⌨️ int(input())
01
Les og forstå

Gå gjennom programmet linje for linje. Hva gjør range()? Hva teller variablene?

02
Endre antall kast

Hva skjer med fordelingen ved 10 kast vs 10 000 kast? Test og beskriv hva du ser.

03
Legg til prosent

Beregn og print hvor mange prosent som ble krone og mynt. La brukeren velge antall kast.

04
Lag egen simulering

Bruk for-løkken og random til å simulere noe helt eget – regndager, lotteri eller basket.

🔍
🌱 Intro Myntkast
Forstå programmet

Les og analyser et ferdig myntkast-program. Hva gjør hver linje? Hva skjer hvis du endrer antall kast?

🎯 6.–8. trinn ⏱ 20 min

💡 Konsepter

  • for i in range(n) – gjenta noe n ganger
  • random.randint(1, 2) – tilfeldig 1 eller 2
  • Teller-variabel: Krone = Krone + 1
  • Jo flere kast, jo jevnere fordeling

🎯 Oppgaver

  • Kjør programmet – er fordelingen ca. 50/50?
  • Test med kast = 10 og kast = 1 000 000
  • Forklar hva range(kast) gjør med egne ord
  • Hva er sannsynligheten for krone matematisk?
🔧
🌱 Intro Myntkast
Endre og utvide

Legg til prosent-utregning og la brukeren velge antall kast. Sammenlign resultater ved ulike antall kast.

🎯 6.–8. trinn ⏱ 25 min

🔧 Slik regner du prosent

prosent = round(Krone / kast * 100)

🎯 Oppgaver

  • Print prosent for krone og mynt
  • La brukeren skrive inn antall kast
  • Kjør 5 ganger med 100 kast – skriv ned resultatene
  • Kjør 5 ganger med 10 000 kast – er det jevnere?
🚀
🎨 Kreativt prosjekt Myntkast
Lag din egen simulering

Bruk for-løkken og random til å simulere noe eget – regndager, lotteri, basketball eller noe du finner på selv.

🎯 6.–10. trinn ⏱ 40 min 🏠 Prosjektarbeid

💡 Ideer

  • Regndager: 50 % sjanse per dag i 365 dager
  • Lotteri: 1 av 10 sjanse, telle antall forsøk
  • Basketball: 70 % scoring – hvor mange av 100?
  • Din helt egen idé!

📋 Minimumskrav

  • For-løkke med minst 100 repetisjoner
  • Bruk random.randint()
  • Minst én teller-variabel
  • Print resultat med prosent
👩‍🏫

For læreren – Myntkast og sannsynlighet

Tverrfaglig prosjekt som kobler programmering og matematikk

① Kobling til matematikk

  • Passer til LK20-mål om sannsynlighet på 6.–8. trinn
  • La elevene notere en hypotese om fordelingen før de kjører koden
  • Diskuter: hvorfor er ikke resultatet nøyaktig 50/50?
  • Store talls lov blir konkret og synlig – mye sterkere enn teori alene

② Gjennomføring

  • Del 1: les og forstå – egnet som introduksjon uten forkunnskaper
  • Del 2: endre og utvide – passer for elever som vil utforske mer
  • Del 3: store talls lov – kan brukes direkte i mattetimen
  • Kan gjøres som gruppearbeid: ulike grupper tester ulike kastantall

③ Differensiering

  • Lavt nivå: kjør del 1, endre antall_kast og beskriv mønsteret
  • Middels: del 2 – streak-analyse og tekstgraf
  • Høyt nivå: del 3 – Lotto-simulering og store talls lov

④ Vurdering

  • Be elevene skrive en kort rapport: hva observerte de, hva ble bekreftet?
  • Koble til matematikkbegreper: sannsynlighet, frekvens, store talls lov
  • Muntlig: kan eleven forklare hva random.randint(0,1) gjør?
📐
Tverrfaglig med matematikk

Prosjektet dekker kompetansemål i sannsynlighet. La matematikklæreren delta – simulering er et kraftig verktøy for å visualisere statistiske begreper.

⏱️
Tidsoversikt

Del 1: 30 min. Del 2: 30 min. Del 3: 35 min. Hele prosjektet kan gjøres på én dobbelttime.


🎲 Terningkast og statistikk
Et mer komplekst simuleringsprogram med to terninger og 11 mulige utfall. Elevene analyserer fordelingen, finner det mest sannsynlige utfallet og utforsker matematikken bak.
🔄 for-løkke
🎲 To uavhengige terninger
🔀 Mange elif-grener
📊 Fordeling og prosent
📖 Dictionary (utvidelse)
01
Les og forstå

Programmet har 11 variabler og en lang elif-kjede. Hva teller de? Hva er mulig sum med to terninger?

02
Analyser fordelingen

Hvilken sum kommer oftest? Hva sier matematikken? Sammenlign 1 000 kast med 100 000 kast.

03
Forbedre koden

Finn vanligste sum, legg til tre terninger, eller lær om dictionary som en mer elegant løsning.

04
Eget prosjekt

Simuler et terningspill du kjenner – Ludo, Yatzy eller Poker. Koble til teoretisk sannsynlighet.

🔍
🌱 Intro Terningkast
Forstå programmet

Analyser et program som kaster to terninger tusenvis av ganger og teller alle mulige summer fra 2 til 12.

🎯 7.–9. trinn ⏱ 20 min

💡 Konsepter

  • To randint(1,6)-kall = to uavhengige terninger
  • c = a + b – summen av begge
  • Én variabel per mulig sum (2–12) = 11 variabler
  • elif-kjede sjekker alle mulige utfall

🎯 Oppgaver

  • Kjør med 100 kast – hvilken sum er vanligst?
  • Kjør med 100 000 – er fordelingen jevnere?
  • Hvilken sum er matematisk mest sannsynlig?
  • Finn alle kombinasjoner som gir sum = 7
🔧
⚡ Utvidelse Terningkast
Endre og forbedre

Finn vanligste sum automatisk, prøv tre terninger, og lær om dictionary som en kraftigere datastruktur.

🎯 7.–9. trinn ⏱ 30 min

🔧 Dictionary – mer elegant løsning

res = {} res[c] = res.get(c, 0) + 1 max(res, key=res.get)

🎯 Oppgaver

  • Print hvilken sum som kom oftest
  • Prøv tre terninger i stedet for to
  • Legg til sjekk for sum som ikke forekom
  • Sammenlign 1 000 og 100 000 kast
🏆
🎨 Kreativt prosjekt Terningkast
Analyser et terningspill

Simuler et virkelig terningspill – Ludo, Yatzy eller Poker – og sammenlign simuleringen med teoretisk sannsynlighet.

🎯 7.–10. trinn ⏱ 50 min 🏠 Prosjektarbeid

💡 Ideer

  • Ludo: kast til du får 6 – snitt antall kast?
  • Yatzy: kast 5 terninger – hvor ofte Yatzy?
  • Poker terning: par, tre like, full hus
  • Beregn teoretisk sannsynlighet og sammenlign

📋 Minimumskrav

  • Minst to terninger (to randint-kall)
  • Minst 1000 repetisjoner
  • Tell to ulike utfall med prosent
  • Sammenlign med matematisk forventet verdi
👩‍🏫

For læreren – Terningkast og statistikk

Kombinerer programmering med statistikk og matematisk analyse

① Pedagogisk tilnærming

  • Vis tekst-histogrammet på storskjerm – diskuter i klassen
  • Spørsmål: Hvorfor har sum 7 høyest frekvens? – tell kombinasjoner på tavlen
  • Beregn 6/36 ≈ 16,7 % og sammenlign med simuleringsresultatet
  • Kjør med 100 vs. 100 000 kast – se hvor mye avviket reduseres

② Kobling til læreplanen

  • Statistikk og sannsynlighet – 7.–9. trinn LK20
  • Kombinatorikk: telle mulige utfall med to terninger (6×6 = 36)
  • Frekvenstabell og histogram som datarepresentasjon
  • Gjennomsnitt, modus og fordeling i praksis

③ Differensiering

  • Lavt nivå: del 1 – les og kjør, beskriv hva du ser
  • Middels: del 2 – sammenlign simulert med teoretisk
  • Høyt nivå: del 3 – Yatzy-logikk med Counter-klassen
  • Gruppearbeid: par A kjører 1 000 kast, par B 100 000 – sammenlign avvik

④ Vurdering

  • Be eleven forklare sumfordelingen med egne ord
  • Del 2: avviksberegning er god matematisk forståelse
  • Del 3 (Yatzy): fungerer koden korrekt for alle kombinasjoner?
📊
Histogram på storskjerm

Kjør programmet med 36 000 kast på tavle-PC og vis histogrammet live. Diskuter formen – er den symmetrisk? Hva kaller matematikere denne typen fordeling?

⏱️
Tidsoversikt

Del 1: 35 min. Del 2: 40 min. Del 3: 45 min. Alle tre delene passer over én dobbeltime og én enkelttime.


🧮 Mattetrener med while-løkke
Det mest avanserte prosjektet. Elevene leser et program med while-løkke, nested if-setninger og input. De finner og fikser feil, og bygger til slutt sin egen digitale treningsapp.
🔁 while True
🔀 Nested if
⌨️ float / int input
🔢 Telle riktig/feil
🛑 break og continue
📊 Sluttstatistikk
01
Les strukturen

Forstå while True, nested if og hvordan valg og score fungerer. Finn de skjulte skrivefeilene!

02
Debug og fiks

Rett skrivefeilene, legg til avslutt-mulighet og beregn sluttresultat med prosent.

03
Utvid programmet

La brukeren velge regneart for hver oppgave. Legg til vanskelighetsgrad og sluttstatistikk.

04
Lag din fagtrener

Lag en treningsapp for et fag du velger – geografi, historie, engelsk eller noe annet.

🔍
⚡ Utvidelse Mattetrener
Forstå programmet

Les et program med while-løkke og nested if. Forstå strukturen, finn skrivefeilene og forklar hva hvert konsept gjør.

🎯 7.–10. trinn ⏱ 25 min

💡 Konsepter

  • while True – kjører for alltid til du avbryter
  • Nested if – en if-setning inne i en annen
  • float(input()) – tar imot desimaltall
  • valg in ('1','2','3','4') – sjekk mot flere verdier

🎯 Oppgaver

  • Kjør programmet – svar på 5 oppgaver
  • Test ugyldig valg (f.eks. '5') – hva skjer?
  • Hva betyr while True? Hvordan avslutter du?
  • Finn alle skrivefeilene i koden!
🐛
⚡ Utvidelse Mattetrener
Fiks og forbedre

Debug koden, legg til avslutt-mulighet med break og beregn sluttresultat. La brukeren velge regneart for hver oppgave.

🎯 7.–10. trinn ⏱ 35 min

🔧 break og continue

if svar == "0": print("Slutter...") break # avslutter løkken if valg not in gyldige: continue # hopp til neste runde

🎯 Oppgaver

  • Rett alle skrivefeil ('rikitge')
  • Legg til 0 = avslutt med break
  • Print sluttresultat med prosent
  • La brukeren velge regneart for hver oppgave
🌟
🎨 Kreativt prosjekt Mattetrener
Lag din egen fagtrener

Bygg en treningsapp for et fag du velger – matte, geografi, engelsk eller noe annet. Bruk while-løkken og input til å lage et fullstendig program.

🎯 7.–10. trinn ⏱ 60–90 min 🏠 Prosjektarbeid

💡 Ideer

  • Geografi: vis en by – gjett landet
  • Engelsk: vis norsk ord – gjett engelsk
  • Historie: vis årstall – gjett hendelsen
  • Naturfag: vis formel – forklar hva den betyr

📋 Minimumskrav

  • while-løkke med avslutt-mulighet
  • Minst 3 ulike spørsmål
  • Tell riktige og feil – print prosent
  • Bruk .strip().lower() på input
👩‍🏫

For læreren – Mattetrener med while-løkke

Feilsøking som pedagogisk metode og differensiering i matematikk

① Feilsøking som metode

  • Del 2 er bevisst fylt med 5 vanlige Python-feil
  • La elevene jobbe i par – diskuter hva som kan gå galt FØR dere kjører
  • Feilsøking er det utviklere bruker mest tid på – en undervurdert ferdighet
  • Be elevene liste opp alle feilene på papir, sammenlign med medelever

② Kobling til matematikk

  • Prosjektet er naturlig integrert med matematikkopplæringen
  • La mattelæreren bruke del 3 som en del av regningstimen
  • Elever med ekstra behov for regntrening kan bruke appen på egenhånd
  • Tilpass tall-området (1–10, 1–100) etter matematikknivå

③ Differensiering

  • Lavt nivå: del 1 – kjør og forstå while True-løkken
  • Middels: del 2 – finn og rett de 5 feilene
  • Høyt nivå: del 3 – bygg en komplett app med valg av operasjon
  • Utfordring: legg til tidsbegrensning per oppgave med time-modulen

④ Vurdering

  • Del 2: be eleven dokumentere hver feil og hva de rettet
  • Del 3: fungerer alle operasjoner? Krasjer den ved ugyldig input?
  • Muntlig: hva skjer om man skriver «abc» i stedet for et tall?
  • Sjekk at de bruker try/except for robust feilhåndtering
🐛
Debug-kultur

Normaliser det å gjøre feil – alle utviklere gjør det. Del 2 er designet for å gi elevene trygghet: kode kan ha feil, og det er alltid en løsbar situasjon.

⏱️
Tidsoversikt

Del 1: 35 min. Del 2: 35 min. Del 3: 50 min. Hele prosjektet passer i én dobbelttime + én enkelttime.


🌐 Lag din første nettside
Elevene lærer HTML fra bunnen av – steg for steg. Fra å opprette en tom fil til å bygge en hel nettside med tekst, bilder og lenker. Ingen installasjon nødvendig – bare en teksteditor og en nettleser.
📄 HTML-filstruktur
✍️ Overskrifter og avsnitt
📋 Lister
🖼️ Bilder
🔗 Lenker
💻 Notepad / TextEdit
01
Grunnstrukturen

Lag filen index.html og skriv inn DOCTYPE, html, head og body. Åpne i nettleseren og se resultatet.

02
Tekst og overskrifter

Legg til h1, h2, p-avsnitt og formater tekst med strong og em. Forstå hva mellomrom gjør i HTML.

03
Lister

Lag punktlister med ul og numrerte lister med ol. Når bruker man hvilken? Prøv lister inne i lister.

04
Bilder

Bruk img-taggen med src og alt. Hent bilder fra nettet eller bruk egne filer. Kontroller størrelsen.

05
Lenker

Lag lenker til andre nettsider, mellom egne sider og til steder på samme side med anchor-lenker.

06
Eget nettsted

Planlegg og bygg et fullstendig nettsted om et tema du velger selv, med alle elementene du har lært.

📄
🌱 Intro HTML
Grunnstrukturen

Opprett din første HTML-fil og forstå byggesteinene alle nettsider er laget av: DOCTYPE, html, head og body.

🎯 5.–10. trinn ⏱ 25 min

💡 Grunnstrukturen

<!DOCTYPE html> <html lang="no"> <head> <meta charset="UTF-8" /> <title>Min side</title> </head> <body> <!-- Innhold her --> </body> </html>

🎯 Oppgaver

  • Opprett index.html i Notepad/TextEdit
  • Skriv inn grunnstrukturen og lagre
  • Dobbelklikk filen – åpnes den i nettleseren?
  • Endre title og se hva som skjer i fanen
✍️
🌱 Intro HTML
Tekst og overskrifter

Legg til overskrifter i ulike størrelser, avsnitt og tekstformatering. Forstå hva mellomrom og linjeskift gjør i HTML.

🎯 5.–10. trinn ⏱ 30 min

🔧 Taggene

<h1>Størst overskrift</h1> <h2>Nest størst</h2> <p>Avsnitt med tekst.</p> <strong>Fet</strong> <em>Kursiv</em>

🎯 Oppgaver

  • Legg til h1 med sidetittel og h2 med "Om meg"
  • Skriv et avsnitt om deg selv
  • Gjør noe tekst fet med strong
  • Test: hva gjør ekstra mellomrom i koden?
📋
🌱 Intro HTML
Lister

Lag punktlister og numrerte lister. Lær når du bruker ul og ol, og prøv å lage lister inne i lister.

🎯 5.–10. trinn ⏱ 20 min

🔧 ul og ol

<!-- Punktliste --> <ul> <li>Element</li> </ul> <!-- Numrert liste --> <ol> <li>Steg 1</li> </ol>

🎯 Oppgaver

  • Lag en punktliste med 4 favorittting
  • Lag en numrert liste med en oppskrift
  • Prøv en liste inne i en liste
  • Når bruker du ul vs. ol?
🖼️
⚡ Utvidelse HTML
Bilder

Legg til bilder fra internett og fra egne filer. Lær hva src og alt betyr, og kontroller størrelsen med width.

🎯 5.–10. trinn ⏱ 30 min

🔧 img-taggen

<img src="bilde.jpg" alt="Beskrivelse" width="300" />

🎯 Oppgaver

  • Legg til et bilde fra internett med src og alt
  • Endre width – hva skjer?
  • Hva skjer hvis src er feil?
  • Lagre et bilde lokalt og vis det
🔗
⚡ Utvidelse HTML
Lenker

Koble sider sammen med a-taggen. Lag lenker til andre nettsider, mellom egne filer og til seksjoner på samme side.

🎯 5.–10. trinn ⏱ 25 min

🔧 a-taggen

<!-- Ekstern lenke --> <a href="https://vg.no" target="_blank">VG</a> <!-- Intern lenke --> <a href="ommeg.html">Om meg</a> <!-- Anchor --> <a href="#toppen">Til toppen</a>

🎯 Oppgaver

  • Lag lenke til en favorittside med target="_blank"
  • Opprett ommeg.html og lenk dit
  • Legg til id="toppen" og lag en anchor-lenke
  • Gjør et bilde klikkbart
🚀
🎨 Kreativt prosjekt HTML
Lag ditt eget nettsted

Planlegg og bygg et fullstendig nettsted om et tema du velger – med flere sider, bilder, lister og lenker.

🎯 5.–10. trinn ⏱ 60–120 min 🏠 Prosjektarbeid

💡 Ideer til tema

  • Fanside for en artist, film eller spill
  • En nettside om et dyr eller naturfenomen
  • En personlig presentasjonsside
  • Oppskriftsside med favorittmat

📋 Minimumskrav

  • Minst 2 HTML-sider som lenker til hverandre
  • h1, h2, avsnitt og minst én liste
  • Minst ett bilde med alt-tekst
  • Én intern og én ekstern lenke
👩‍🏫

For læreren – Lag din første nettside (HTML)

Ingen installasjon nødvendig – alt kjører i nettleseren

① Ingen installasjon

  • Windows: Notisblokk (Notepad) + nettleser er nok
  • Mac: TextEdit → Format → Gjør om til ren tekst → lagre som .html
  • Chromebook: bruk CodePen (codepen.io) – live-forhåndsvisning i nettleseren
  • Anbefalt: Notepad++ (Windows) – gratis, fargekoder HTML-syntaks
  • F5 i nettleseren oppdaterer siden etter endringer

② Prosjektstruktur

  • Del 1–3: grunnleggende struktur, tekst og lister
  • Del 4–5: bilder og lenker
  • Del 6: fullstendig nettsted med to HTML-sider
  • Alle filer må ligge i samme mappe for at lenker skal fungere
  • Bilder til siden må også ligge i samme mappe

③ Differensiering

  • Lavt nivå: del 1–2 – grunnstruktur og tekstformatering
  • Middels: del 1–5 – komplett side med bilde og lenker
  • Høyt nivå: del 6 – flersides nettsted, kan legge til enkel CSS
  • Tverrfaglig: nettside om tema fra norsk, samfunnsfag eller naturfag

④ Vurdering

  • Lever HTML-fil(er) på læringsplattform eller e-post
  • Vurder: fungerer lenker, er bilder gitt riktig alt-tekst, er koden ryddig?
  • Del 6 egner seg godt til vurdering – fullstendig produkt
  • La elevene presentere nettsiden sin for klassen
🌐
Publisering (valgfritt)

Elever kan publisere siden gratis via GitHub Pages eller Netlify Drop (dra-og-slipp). Ikke obligatorisk, men veldig motiverende for interesserte elever.

⏱️
Tidsoversikt

Del 1–5: 20–30 min per del. Del 6 (eget nettsted): 60–120 min. Hele prosjektet passer over 2–3 dobbelttimer.


🐱 Lag spill med Scratch
Scratch er det perfekte startpunktet for programmering – ingen kode å skrive, bare blokker å sette sammen. Elevene lærer spillogikk steg for steg og bygger til slutt et eget spill helt fra bunnen.
🧩 Blokk-programmering
🎮 Bevegelse og piltaster
💥 Berøringsdeteksjon
Variabler og poeng
🎲 Tilfeldighet og kloner
🌐 scratch.mit.edu
01
Bevegelse

Bli kjent med grensesnittet og styr en figur med piltastene ved å koble hendelse-blokker til bevegelse-blokker.

02
Utseende

Legg til bakgrunner, bytt kostymer for animasjon og spill lyder. Gi spillet et eget uttrykk.

03
Berøring

Bruk hvis-blokker i en evig-løkke til å oppdage berøring mellom figurer og lage game over.

04
Variabler

Lag variabler for poeng og liv, og bruk tidtakeren til å lage et tidsbegrenset spill.

05
Kloner

Bruk kloner til å lage mange kopier av en figur automatisk – perfekt for fallende gjenstander.

06
Eget spill

Planlegg og bygg et fullstendig spill med start, mål og game over – helt etter eget valg.

🎮
🌱 Intro Scratch
Bevegelse og piltaster

Bli kjent med Scratch-grensesnittet og lag ditt første program: en figur som styres med piltastene.

🎯 4.–8. trinn ⏱ 25 min

🧩 Blokkene du trenger

når pil høyre trykkes 10 steg
når 🚩 klikkes gå til x: 0 y: 0

🎯 Oppgaver

  • Gå til scratch.mit.edu og klikk «Lag»
  • Koble «når pil høyre trykkes» → «gå 10 steg»
  • Gjør det samme for alle fire retninger
  • Endre 10 til 20 – hva skjer med hastigheten?
🎨
🌱 Intro Scratch
Bakgrunner og kostymer

Gi spillet et visuelt uttrykk med egne bakgrunner, kostymeskift for animasjon og lydeffekter.

🎯 4.–8. trinn ⏱ 30 min

🧩 Blokkene du trenger

når mellomrom trykkes neste kostyme
når 🚩 klikkes spill lyden Meow bytt bakgrunn til Natur

🎯 Oppgaver

  • Legg til en bakgrunn fra biblioteket
  • Legg til en ny figur og utforsk kostymene
  • Koble «neste kostyme» til mellomromstasten
  • Koble en lyd til grønt flagg
💥
⚡ Utvidelse Scratch
Berøring og game over

Bruk hvis-blokker i en evig-løkke til å oppdage berøring mellom figurer. Bygg et enkelt unnvikningsspill.

🎯 4.–8. trinn ⏱ 35 min

🧩 Blokkene du trenger

for alltid hvis berører Hinder? si Game Over! stopp alle
hvis ved kanten, sprette

🎯 Oppgaver

  • Lag et hinder som beveger seg automatisk
  • Sjekk berøring inne i en evig-løkke
  • Vis «Game Over!» og stopp alle
  • La spillet starte fra samme sted (gå til x/y ved grønt flagg)
⚡ Utvidelse Scratch
Variabler – poeng og liv

Legg til variabler for å holde styr på poeng og liv, og bruk tidtakeren til å lage et tidsbegrenset spill.

🎯 5.–9. trinn ⏱ 35 min

🧩 Blokkene du trenger

når 🚩 klikkes sett poeng til 0 sett liv til 3 nullstill tidtaker
endre poeng med 1

🎯 Oppgaver

  • Lag variablene «poeng» og «liv»
  • Sett startverdier ved grønt flagg
  • Endre poeng ved berøring av noe positivt
  • Game over når liv = 0 eller tidtaker > 30
🎲
⚡ Utvidelse Scratch
Kloner og tilfeldighet

Bruk kloner til å lage mange kopier av en figur automatisk, og tilfeldige tall for uforutsigbar bevegelse.

🎯 5.–9. trinn ⏱ 40 min

🧩 Blokkene du trenger

for alltid vent 1.5 sekunder lag klon av meg selv
når jeg starter som klon gå til x: tilfeldig tall fra -220 til 220 y: 180 vent til y-posisjon < -170 slett denne klonen

🎯 Oppgaver

  • Lag kloner hvert 1.5 sekund i en evig-løkke
  • Gi klonene tilfeldig x-posisjon øverst på skjermen
  • Klonene faller ned og slettes ved bunnen
  • Poeng når spilleren berører en klon
🏆
🎨 Kreativt prosjekt Scratch
Bygg ditt eget spill

Planlegg og bygg et fullstendig Scratch-spill med start, mål og game over. Del det med klassen etterpå!

🎯 4.–10. trinn ⏱ 60–120 min 🏠 Prosjektarbeid

💡 Spillideer

  • Unnvikningsspill – styr unna hindre
  • Samlespill – ta stjerner som dukker opp
  • Labyrint – finn veien til målet
  • Klikk-spill – klikk på figurer for poeng

📋 Minimumskrav

✅ Minst 2 figurer med skript
✅ Spillerstyring (tastatur eller mus)
✅ Minst én variabel (poeng, liv eller tid)
✅ Tydelig start og game over
👩‍🏫

For læreren – Lag spill med Scratch

Kontooppsett, klasseromsfunksjon og pedagogiske tips

① Kontoer og lagring

  • Scratch fungerer uten konto, men innlogging gir skylagring
  • Opprett klasseromskonto på scratch.mit.edu/educators
  • Elever under 13: læreren oppretter kontoer, ingen e-post nødvendig
  • Scratch lagrer automatisk til skyen hvert 30. sekund
  • Uten konto: Fil → Lagre til datamaskinen etter hver økt

② Dele og innlevere

  • Elever kan dele prosjektet og sende læreren en lenke
  • Klasseromskonto: du ser alle elevprosjekter i dashbordet ditt
  • Alternativ innlevering: eksporter som .sb3-fil og lever på læringsplattform
  • Spillmesse: alle spill vises og spilles av resten av klassen

③ Differensiering

  • 4.–5. trinn: del 1–3 – bevegelse, utseende og berøring
  • 6.–7. trinn: del 1–5 – fullt spill med kloner og variabler
  • 8. trinn+: del 6 – eget spill fra bunnen av
  • Scratch er godt egnet for elever med lese/skrivevansker

④ Vurdering

  • Be eleven forklare koden muntlig – «hva skjer når du klikker her?»
  • Sjekk at spillet har tydelig start, mål og game over
  • Del 6 egner seg til vurdering: fullstendig spill etter kravliste
  • Klassegalleri: alle spill vises og spilles av medelever
🔧
Scratch Desktop

Installer Scratch Desktop (scratch.mit.edu/download) for bruk uten internett. Prosjekter lagres lokalt – minn elevene på å ta backup til OneDrive/USB.

⏱️
Tidsoversikt

Del 1–5: 25–40 min per del. Del 6 (eget spill): 60–120 min. Hele prosjektet passer over 3–4 dobbelttimer.


🔴 Programmering med micro:bit
micro:bit er en liten datamaskin med innebygde sensorer, LED-display og radio. Elevene programmerer den i MakeCode og kobler den til virkelige komponenter – fra blinkende LED-er til servomotorer og trådløs kommunikasjon.
💡 LED-display
📐 Akselerometer
📡 Radio
⚙️ Servomotor
Elektrisk krets
🌐 makecode.microbit.org
01
Display og knapper

Vis tekst, ikoner og animasjoner på LED-displayet. Reagér på knapp A, B og A+B med ulike hendelser.

02
Akselerometer

Bruk den innebygde bevegelsessensoren til å registrere risting, helning og retning.

03
Radio

Send meldinger og tall trådløst mellom to micro:bit-er. Bygg et ping-pong-system eller quiz.

04
Servomotor

Koble en servo til Pin 0 og styr vinkelen med knapper eller akselerometeret.

05
Elektrisk krets

Bygg en krets med ekstern LED, motstand, trykknapp og summer på breadboard.

06
Eget prosjekt

Kombiner sensorer, radio og kretselementer til et eget kreativt micro:bit-produkt.

💡
🌱 Intro micro:bit
LED-display og knapper

Lær å vise tekst, tall og ikoner på det 5×5 LED-displayet, og programér knapp A og B til ulike hendelser.

🎯 5.–9. trinn ⏱ 30 min 🔌 Bare micro:bit + USB

💡 Kode i MakeCode Python

def on_button_pressed_a(): basic.show_icon(IconNames.HAPPY) input.on_button_pressed(Button.A, on_button_pressed_a) def on_forever(): basic.show_string("Hei!") basic.pause(1000) basic.forever(on_forever)

🎯 Oppgaver

  • Vis ditt navn ved oppstart
  • Knapp A → glad smiley, Knapp B → trist
  • Lag en nedtelling: 3, 2, 1, GO!
  • A+B samtidig → tilfeldig tall 1–6
📐
🌱 Intro micro:bit
Akselerometer og bevegelse

Bruk den innebygde bevegelsessensoren til å registrere risting, helning og orientering. Lag en digital terning!

🎯 5.–9. trinn ⏱ 30 min 🔌 Bare micro:bit + USB

💡 Gestures

  • SHAKE – risting
  • TILT_LEFT / TILT_RIGHT – helning
  • FACE_UP / FACE_DOWN – snudd
  • X/Y/Z-aksel: verdier –1000 til +1000

🎯 Oppgaver

  • Rist → vis tilfeldig tall 1–6
  • Heln venstre/høyre → vis pil
  • Les X-aksel og vis verdien
  • FACE_DOWN → vis skull-ikon
📡
⚡ Utvidelse micro:bit
Radio – trådløs kommunikasjon

Send meldinger og tall trådløst mellom to micro:bit-er på samme radiokanal. Bygg ping-pong eller quiz.

🎯 5.–10. trinn ⏱ 40 min 🔌 2× micro:bit

💡 Radio-regler

  • Begge micro:bit-er MÅ ha samme gruppe
  • Grupper: 0–255 (bruk klasseromsnummer!)
  • Send tekst: radio.send_string()
  • Send tall: radio.send_number()

🎯 Oppgaver

  • Sender: A → «Hei!», mottaker viser det
  • Rist sender → mottaker reagerer
  • Bygg ping-pong mellom to micro:bit-er
  • Bruk ulike grupper per elevpar
⚙️
⚡ Utvidelse micro:bit
Servomotor

Koble en servomotor til Pin 0 og styr vinkelen (0–180°) med knapper eller akselerometeret. Bygg en mekanisk bom!

🎯 6.–10. trinn ⏱ 45 min 🔌 micro:bit + servo + batteri

🔌 Koble servo til micro:bit

  • Signal (hvit/gul) → Pin 0
  • VCC (rød) → 3V
  • GND (svart/brun) → GND
  • Bruk alltid batteripakke – ikke bare USB!

🎯 Oppgaver

  • A → 0°, B → 180°, A+B → 90°
  • Sveip sakte fra 0 til 180 og tilbake
  • Styr vinkelen med akselerometeret
  • Bygg en papir-bom som åpner og lukker
⚡ Utvidelse micro:bit
Elektrisk krets

Bygg en ekstern krets med LED, 470Ω motstand, trykknapp og summer på breadboard. Forstå hvorfor motstanden er nødvendig.

🎯 6.–10. trinn ⏱ 50 min 🔌 micro:bit + breadboard + komponenter

🔌 Koblingsskjema

  • Pin 0 → 470Ω → LED+ → LED- → GND
  • Pin 1 → Summer+ → Summer- → GND
  • Pin 2 → Knapp → GND (aktiv lav)
  • Aldri LED uten motstand!

🎯 Oppgaver

  • Koble og test: A → LED på, B → av
  • Koble summer, spill tone når LED lyser
  • Ekstern knapp → LED + lyd
  • Blink 5 ganger, deretter pause
🚀
🎨 Kreativt prosjekt micro:bit
Lag ditt eget prosjekt

Kombiner sensorer, radio, servomotor og elektrisk krets til et eget kreativt produkt. Planlegg på papir – bygg i virkeligheten.

🎯 5.–10. trinn ⏱ 60–120 min 🏠 Prosjektarbeid

💡 Prosjektideer

  • Trådløs terning: rist → mottaker viser tall
  • Temperaturvakt: LED + lyd ved for varmt
  • Automatisk bom: servo åpner på knappetrykk
  • Morsekodesender via radio

📋 Minimumskrav

  • Minst 2 konsepter kombinert
  • Minst én sensor/inngang
  • Minst én utgang (display, LED, servo, lyd)
  • Koden har kommentarer
👩‍🏫

For læreren – Programmering med micro:bit

Utstyrsliste, MakeCode-oppsett og sikkerhetstips for krets-delen

① Kom i gang med MakeCode

  • MakeCode kjører i nettleseren – ingen installasjon (makecode.microbit.org)
  • Koble micro:bit til PC med USB-kabel
  • Klikk «Last ned» → .hex-filen → dra den til micro:bit i filutforskeren
  • Alternativ: Mu Editor for Python-programmering direkte
  • Simulator i MakeCode lar elevene teste uten fysisk enhet

② Utstyrsliste

  • 1× micro:bit v2 per elev/par (ca. 250 kr)
  • USB-kabel (micro-USB)
  • Batteripakke (3V, 2× AAA) – nødvendig for servo og krets
  • Del 4–5: breadboard, 470Ω motstander, LED-er, trykknapp, summer
  • Del 4: servo SG90 (ca. 30–50 kr per stk.)
  • Krokodilleklemmer og ledninger

③ Sikkerhet og krets

  • Bruk alltid 470Ω motstand i serie med ekstern LED
  • Servo og krets: bruk batteripakke – USB alene gir ustabil drift
  • Del 5 (elektrisk krets): voksne bør hjelpe med koblinger første gang
  • Dobbeltsjekk polaritet på LED (langt bein = +) før strøm på
  • GND må alltid kobles felles mellom micro:bit og krets

④ Differensiering og progresjon

  • 5.–6. trinn: del 1–2 i blokk-modus (MakeCode)
  • 7.–8. trinn: del 1–4 – sensorer og servo
  • 9.–10. trinn: del 5–6 – krets og kreativt prosjekt i Python
  • Del 3 (radio) krever minst 2 micro:bit-er i klasserommet
⚠️
Servo og strøm

Koble alltid servo til ekstern batteripakke (3V), ikke bare USB. Servo trekker mer strøm enn micro:bit-pinnene leverer stabilt, og kan forårsake uventede restart.

📦
Innkjøpstips

Elektronikksett for skole (f.eks. Kitronik Inventor's Kit for micro:bit) inneholder det meste til del 4–5. Kjøpes billig fra Kjell & Company, Elfa eller Amazon.

⏱️
Tidsoversikt

Del 1–2: 30 min. Del 3 (radio): 40 min. Del 4–5 (servo/krets): 45–50 min. Del 6 (kreativt): 60–120 min.


🔵 Kom i gang med Arduino
Arduino er neste steg etter Scratch og micro:bit – her skriver elevene ren C/C++ og kobler virkelige komponenter selv. Ingen innebygde sensorer: alt bygges fra bunnen på breadboard. Passer fra 8.–10. trinn og oppover.
💻 C / C++ kode
💡 LED og knapper
🌡️ Temperatursensor
📡 Ultralydsensor
⚙️ Servomotor
🖥️ Arduino IDE
01
Blink og knapp

Forstå setup() og loop(). Blink en LED og styr den med en knapp – klassisk «Hello World» for hardware.

02
Trafikklys

Styr tre LED-er i sekvens med timing. Lær funksjoner, konstanter og tilstandsmaskiner.

03
Temperatursensor

Les temperatur fra TMP36, konverter til Celsius og vis på I2C LCD-skjerm.

04
Ultralydsensor

Mål avstand med HC-SR04 og bygg en parkeringsassistent med LED og summer.

05
Servo + potensiometer

Styr en servomotor med en dreieknapp. Lær map()-funksjonen og Servo-biblioteket.

06
Eget prosjekt

Kombiner sensorer og aktuatorer til et eget produkt. Planlegg på papir – bygg i kode.

💡
🌱 Intro Arduino
Blink og knapp

Ditt første Arduino-program i C/C++. Forstå setup() og loop(), blink en LED og styr den med en knapp.

🎯 8.–10. trinn ⏱ 35 min 🔌 Arduino Uno + LED + knapp

💡 Grunnstrukturen i Arduino

void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }

🎯 Oppgaver

  • Skriv blink-programmet og last opp
  • Endre delay-verdiene – hva skjer?
  • Koble knapp på pin 2 med INPUT_PULLUP
  • Knapp styrer LED av og på
🚦
🌱 Intro Arduino
Trafikklys

Styr tre LED-er (rød, gul, grønn) i korrekt trafikklys-sekvens. Lær funksjoner og konstanter i C++.

🎯 8.–10. trinn ⏱ 40 min 🔌 3× LED + 3× 220Ω

💡 Egne funksjoner

void slukk() { digitalWrite(ROD, LOW); digitalWrite(GUL, LOW); digitalWrite(GRONN, LOW); } // Kall funksjonen: slukk(); digitalWrite(ROD, HIGH);

🎯 Oppgaver

  • Koble 3 LED-er og last opp
  • Tilpass timingen til reelle trafikklys
  • Legg til fotgjengerknapp
  • Lag blink()-funksjon for gul LED
🌡️
⚡ Utvidelse Arduino
Temperatursensor + LCD

Les temperatur fra TMP36, konverter spenning til Celsius og vis på I2C LCD-skjerm. Legg til alarm-LED.

🎯 8.–10. trinn ⏱ 45 min 🔌 TMP36 + I2C LCD

💡 Konvertering

int raa = analogRead(A0); float volt = raa * (5.0 / 1023.0); float temp = (volt - 0.5) * 100.0;

🎯 Oppgaver

  • Installer LiquidCrystal_I2C-biblioteket
  • Koble TMP36 og LCD som vist
  • Vis temperatur med 1 desimal
  • Alarm-LED når temp > 30°C
📡
⚡ Utvidelse Arduino
Ultralydsensor – avstandsmåler

Mål avstand med HC-SR04 og bygg en parkeringsassistent – summer piper raskere jo nærmere noe er.

🎯 8.–10. trinn ⏱ 40 min 🔌 HC-SR04 + summer + LED-er

💡 Slik måles avstand

  • TRIG sender 10µs ultralydpuls
  • ECHO måler tid til ekko returnerer
  • Avstand (cm) = varighet / 58.2
  • Rekkevidde: 2–400 cm

🎯 Oppgaver

  • Koble HC-SR04 og test i seriell monitor
  • Alarm når avstand < 20 cm
  • Rød/gul/grønn LED etter avstand
  • Raskere pip jo nærmere = parkeringsassistent
⚙️
⚡ Utvidelse Arduino
Servo + potensiometer

Styr en servomotors vinkel (0–180°) med en dreieknapp. Lær map()-funksjonen og Servo-biblioteket.

🎯 8.–10. trinn ⏱ 40 min 🔌 Servo + potensiometer 10kΩ

💡 map()-funksjonen

// Skalerer fra ett omraade til et annet int vinkel = map( analogRead(A0), // verdi 0, 1023, // fra-omraade 0, 180 // til-omraade );

🎯 Oppgaver

  • Koble servo og potensiometer
  • Drei knappen – følger servoen med?
  • Begrens til 30–150 grader
  • Knapp tilbakestiller til 90 grader
🚀
🎨 Kreativt prosjekt Arduino
Lag ditt eget prosjekt

Kombiner sensorer, aktuatorer og logikk til et eget produkt. Fra reaksjonsspill til værstasjon – hva vil du bygge?

🎯 8.–10. trinn ⏱ 60–120 min 🏠 Prosjektarbeid

💡 Prosjektideer

  • Reaksjonsspill med LCD og millis()
  • Værstasjon: temp + lys på LCD
  • Automatisk gardin med LDR + servo
  • Pianoknapper med summer

📋 Minimumskrav

  • Minst 2 komponenter koblet til
  • Minst én egendefinert funksjon
  • Debuginfo i seriell monitor
  • Koden har forklarende kommentarer
👩‍🏫

For læreren – Kom i gang med Arduino

Utstyrsliste, installasjon, biblioteker og sikkerhetstips

① Utstyr

  • ELEGOO Super Starter Kit (ca. 300–400 kr) inneholder alt til alle 6 delene
  • Del 3 (LCD): I2C LCD 16×2 medfølger i de fleste starter-kit
  • Del 4: HC-SR04 ultralydsensor
  • Del 5: servo SG90 + potensiometer 10kΩ
  • USB-kabel type B (printer-USB) for tilkobling til PC

② Installasjon

  • Last ned Arduino IDE fra arduino.cc – gratis
  • Uten installasjon: Arduino Cloud Editor (krever konto)
  • Verktøy → Port → COMx (Windows) / /dev/ttyUSB0 (Linux)
  • Verktøy → Kort → Arduino Uno
  • Test: Fil → Eksempler → 01.Basics → Blink

③ Biblioteker

  • Del 3: installer LiquidCrystal_I2C av Frank de Brabander
  • Verktøy → Administrer biblioteker → søk «LiquidCrystal I2C»
  • Del 5 (servo): Servo-biblioteket er innebygd – ingen installasjon
  • LCD-adresse: som regel 0x27 eller 0x3F – kjør I2C-scanner om usikkert

④ Differensiering

  • 8. trinn: del 1–2 – blink, knapp og trafikklys
  • 9. trinn: del 1–4 – sensorer og LCD
  • 10. trinn: del 5–6 – servo og kreativt prosjekt
  • C/C++ er nytt for de fleste – bruk god tid på del 1
⚠️
Aldri uten motstand!

Koble alltid en 220Ω (eller høyere) motstand i serie med ekstern LED. Uten motstand vil for mye strøm flyte og LED-en ødelegges – og i verste fall Arduino-pinnen.

🔌
Tinkercad Circuits

La elevene simulere kretsen i Tinkercad Circuits (tinkercad.com/circuits) FØR de bygger den fysisk. Perfekt for å oppdage koblingsfeil uten risiko.

⏱️
Tidsoversikt

Del 1–2: 35–40 min. Del 3–4: 40–45 min. Del 5: 40 min. Del 6 (kreativt): 60–120 min. Totalt ca. 5–6 timer.


🟣 3D-printing med Tinkercad
Den komplette arbeidsflyten: design en 3D-modell i Tinkercad, eksporter som STL, kjør gjennom et slice-program og 3D-print det ferdige objektet. Ingen installasjon nødvendig for Tinkercad – det kjører i nettleseren.
🖱️ Tinkercad (nettlesar)
📁 STL-filformat
⚙️ Ultimaker Cura
🖨️ 3D-printer (FDM)
🔷 Primitiver og hull
📐 Fra idé til objekt
01
Tinkercad-grensesnittet

Naviger i 3D-rommet, plasser former på arbeidsplanet og lær de grunnleggende verktøyene.

02
Former og hull

Kombiner solide former og negative hull for å lage komplekse modeller. Lag et navneskilt.

03
Eksporter STL

Sjekk modellen og eksporter som STL-fil i millimeter. Forstå kva STL-formatet er.

04
Slice-programmet

Åpne STL i Cura, sett laghøyde, fyll og støtte – og eksporter G-kode til printeren.

05
3D-printing

Start printen, følg med på første lag, og etterbehandle det ferdige objektet.

06
Kreativt prosjekt

Fra egen idé og skisse til ferdig 3D-printet objekt – hele arbeidsflyten selvstendig.

🖱️
🌱 Intro 3D-print
Bli kjent med Tinkercad

Naviger i 3D-rommet, flytt og skaler former, og lær hvordan arbeidsplanet fungerer. Ingen installasjon – bare nettleser.

🎯 5.–10. trinn ⏱ 30 min 🌐 tinkercad.com

🖱️ Navigasjon i 3D

  • Roter: hald høgre museknapp + dra
  • Zoom: mushjulet
  • F-tasten: fyll vinduet med val
  • R-tasten: roter 45° steg

🎯 Oppgåver

  • Logg inn og lag nytt design
  • Dra ut en boks – endre mål til 30×20×10 mm
  • Legg til ei kule og naviger rundt begge
  • Vel begge (Ctrl+A) og trykk F
🔷
🌱 Intro 3D-print
Former og hull

Kombiner solide former og negative hull (Hole) for å skjære geometri ut av hverandre. Lag et navneskilt med 3D-tekst og hengehull.

🎯 5.–10. trinn ⏱ 45 min 🌐 tinkercad.com

🔷 Solid vs. Hull

  • Solid = fast materiale i modellen
  • Hole = negativ form – skjer ut material
  • Vel form → klikk "Hole" i høgre hjørne
  • Vel alt → Ctrl+G for å gruppere og skjere

🎯 Oppgåver

  • Boks + kule som hull → grupper
  • Lag navneskilt 80×30×4 mm med tekst
  • Legg til sylinder-hull for å henge det opp
  • Bruk Align til å sentrere teksten
📁
🌱 Intro 3D-print
Eksporter STL-fil

Sjekk at modellen er printbar, forstå STL-formatet og eksporter i rett enhet (millimeter). Lever filen til læreren.

🎯 5.–10. trinn ⏱ 20 min 🌐 tinkercad.com → .stl

📁 Sjekkliste før eksport

  • Alt er gruppert til ett objekt
  • Ingenting er tynnare enn 1.5 mm
  • Mål er kontrollert (ikke for stort!)
  • Enheten er millimeter, ikke inches

🎯 Oppgåver

  • Sjekk totalstorleiken (Ctrl+A)
  • Eksporter → .STL → millimeter
  • Åpne i Windows 3D-visning
  • Send filen til læreren
⚙️
⚡ Utvidelse 3D-print
Slice-programmet – Cura

Åpne STL i Ultimaker Cura, velg laghøyde, fyllprosent og støtte, og eksporter G-kode klar for printing.

🎯 5.–10. trinn ⏱ 30 min 💻 Ultimaker Cura (gratis)

⚙️ Anbefalte innstillingar

  • Laghøgde: 0.2 mm
  • Veggar: 3
  • Fyll (Infill): 15–20 %
  • Støtte: Av (eller Auto ved overheng)
  • Brim: 5 mm for god festing

🎯 Oppgåver

  • Dra STL inn i Cura
  • Still inn og klikk Slice
  • Les av tid og materialbruk
  • Sjekk Preview-modus lag for lag
🖨️
⚡ Utvidelse 3D-print
3D-printing

Start printen, følg med på første lag og etterbehandle det ferdige objektet. Forstå hvorfor første lag er det viktigste.

🎯 5.–10. trinn ⏱ 20 min + ventetid 🖨️ FDM 3D-printer

⚠️ Sikkerheit

  • Dyse og plate: 200°C+ – rør ALDRI
  • Alltid vaksen til stades
  • Bruk spatelen forsiktig for å løsne – ikke hendene
  • La modellen kjøle seg ned 10 min

🎯 Oppgåver

  • Gå gjennom sjekklista med læreren
  • Observer første 5 minuttar
  • Mål ferdig objekt – stemmer med Tinkercad?
  • Reflekter: kva ville du gjort annleis?
🏆
🎨 Kreativt prosjekt 3D-print
Design og print ditt eget objekt

Hele arbeidsflyten selvstendig: idé → skisse → Tinkercad → STL → Cura → ferdig 3D-printet objekt du kan ta med hjem.

🎯 5.–10. trinn ⏱ 2–4 skuletimar 🏠 Prosjektarbeid

💡 Ideer til objekt

  • Nøkkelring med namn eller monogram
  • Mobilstativ eller blyantstativ
  • Miniatyrbygg med vindaugehull
  • Brikke til et brettspill

📋 Minimumskrav

  • Skisse på papir godkjent av lærar
  • Minst 2 former kombinert
  • Minst ett hull (negativ form)
  • Maks 80 mm i største mål
👩‍🏫

For læreren – Tinkercad-konto og klasseoppsett

Alt du trenger å vite for å komme i gang med Tinkercad i klasserommet

① Opprett lærerkonto

  1. Gå til tinkercad.com og klikk «Registrer deg»
  2. Velg «Lag en skole- eller lærerkonto»
  3. Fyll ut skolens navn, land og din e-postadresse
  4. Bekreft e-posten og logg inn
  5. Du kommer til Undervisning-dashbordet

② Opprett klasse

  1. Gå til tinkercad.com/teach
  2. Klikk «Opprett ny klasse» og gi den et navn
  3. Velg aldersgruppe for elevene
  4. Klassen får en unik klassekode (4–6 tegn)
  5. Del koden med elevene – de bruker den til å melde seg inn

③ Elever under 13 år

  1. Gå til klassen → «Håndter elever»
  2. Klikk «Legg til elever» og skriv inn navnene
  3. Tinkercad genererer brukernavn og passord automatisk
  4. Skriv ut innloggingsark (knapp i Tinkercad)
  5. Elever trenger ikke egen e-post

④ Elever over 13 år

  1. Elever oppretter egen konto med skole-e-post
  2. De melder seg inn i klassen via klassekoden
  3. Du ser alle elevarbeider i klassevisningen din
  4. Du kan åpne og eksportere design på vegne av eleven
  5. Gi tilbakemelding direkte i designet
⚠️
GDPR og personvern

For elever under 13 år: bruk alltid lærer-administrerte kontoer. La IKKE barn under 13 opprette egne Autodesk-kontoer. Sjekk at skolens personvernerklæring dekker bruk av Tinkercad.

💡
Praktiske tips

Nettleser: Chrome eller Edge anbefalt. Krever WebGL – test på skolens maskiner på forhånd (get.webgl.org). Tinkercad er helt gratis og lagrer automatisk i skyen.

📄
Fullstendig veiledning

Last ned lærerveilednings-PDF for komplett tidplan, vurderingskriterier, feilsøkingstips for 3D-printeren og råd om filamentbehandling.

👩‍🏫 Last ned lærarveiledning (PDF)
🟣

Tips til læreren – utstyr og planlegging

En ELEGOO eller Creality Ender 3-type printer (ca. 2000–3000 kr) er mer enn nok til skolebruk. PLA-filament er trygt, lukter lite og er enkelt å bruke. Typisk elevmodell (navneskilt, nøkkelring) tar 20–60 minutter å printe – planlegg slik at print starter tidlig i dobbelttimen. Cura lastes ned gratis fra ultimaker.com. Ha alltid spatel, tang og sandpapir tilgjengelig ved printeren.


🛠️ Verktøy, program og nettsider
Alt du trenger for å kome i gang – sortert etter kva prosjekt dei høyrer til.
🐍 Python

🐍 Mu Editor

Enkel Python-editor laget for elever. Har innebygd støtte for pygame og micro:bit. Gratis, ingen konfigurasjon. Anbefalt for 6.–8. trinn.

↗ Last ned Mu Editor

⚙️ Python / IDLE

IDLE følger med Python. Enkel å bruke for tekstprogrammer uten pygame. Last ned Python.org og IDLE er inkludert.

↗ Last ned Python

💻 VS Code

Kraftig editor for mer erfarne elever. Støtter Python, HTML, JavaScript og mye mer. Krever manuell installasjon av utvidelser.

↗ Last ned VS Code

🌐 Trinket.io

Kjør Python direkte i nettlesaren – ingen installasjon nødvendig. Bra for tekstprogrammer. Perfekt på Chromebook eller lånte maskiner.

↗ Åpne Trinket.io

🎮 Repl.it

Nettbasert kodemiljø som støtter Python, HTML, JavaScript og meir. Gratis basis-konto. Kan dele prosjekt med lenke – fint til innlevering.

↗ Åpne Repl.it
🐱 Scratch

🐱 Scratch (nettleser)

Det offisielle Scratch-miljøet. Ingen installasjon – køyrer i alle nettlesarar. Elevar kan logge inn og lagre prosjekta sine i skyen.

↗ Åpne Scratch

💾 Scratch Desktop

Offisiell desktop-app for Scratch – fungerer utan internett. Bra på skular med ustabil nettilgang. Lagrar lokalt på maskinen.

↗ Last ned Scratch Desktop

👩‍🏫 ScratchEd

Ressurssider for lærere fra MIT. Undervisningsopplegg, læringsguider og fellesskap for Scratch-lærere. Gratis og åpen tilgang.

↗ Åpne ScratchEd
🔴 micro:bit

🔴 MakeCode (nettleser)

Det offisielle programmeringsmiljøet for micro:bit. Støtter blokk-programmering og Python. Ingen installasjon – bare koble micro:bit til USB.

↗ Åpne MakeCode

🐍 Mu Editor (micro:bit)

Mu Editor støtter direkte Python-programmering av micro:bit. Last ned, koble til og flash koden med ett klikk. Anbefalt for Python-elever.

↗ Last ned Mu Editor

📚 microbit.org

Offisiell side for micro:bit med prosjektideer, lærarressursar og dokumentasjon. Mange ferdiglagde oppgåver sortert etter alder og nivå.

↗ microbit.org/teach
🔵 Arduino

🔵 Arduino IDE

Det offisielle utviklingsmiljøet for Arduino. Gratis og tilgjengelig for Windows, Mac og Linux. Last ned og installer – inkluderer alle drivere.

↗ Last ned Arduino IDE

☁️ Arduino Cloud Editor

Nettbasert Arduino-editor – ingen installasjon nødvendig. Krever en (gratis) Arduino-konto. Bra på maskiner der man ikke kan installere programmer.

↗ Åpne Cloud Editor

📚 Arduino Reference

Fullstendig referansedokumentasjon for alle Arduino-funksjoner. Uunnværlig når elevene skal slå opp hvordan en funksjon brukes.

↗ Arduino Reference

🔌 Tinkercad Circuits

Simuler Arduino-kretser i nettleseren uten fysisk utstyr! Perfekt til å teste kode og kretser før man bygger dem i virkeligheten.

↗ Tinkercad Circuits
🟣 3D-printing

🟣 Tinkercad

Gratis nettbasert 3D-modelleringsprogram fra Autodesk. Ideelt for elever – enkelt grensesnitt, automatisk lagring i skyen. Krever WebGL-støtte.

↗ Åpne Tinkercad

⚙️ Ultimaker Cura

Det mest brukte slice-programmet for FDM-printing. Gratis, støtter de fleste printermodeller og har gode standardprofiler for PLA.

↗ Last ned Cura

🟧 PrusaSlicer

Kraftig og gratis slice-program fra Prusa. God støtte for mange printertyper, avanserte støttestrukturer og fin forhåndsvisning av lag.

↗ Last ned PrusaSlicer

📦 Printables.com

Gratis database med tusenvis av 3D-modellar å laste ned og printe. Bra for å inspisere andres modellar og finne inspirasjon til eigne prosjekt.

↗ Åpne Printables
🌐 HTML / Web

🌐 MDN Web Docs

Mozillas referanseside for HTML, CSS og JavaScript. Bransjestandardens dokumentasjon – forklarar alle HTML-taggar med eksempel. Gratis.

↗ Åpne MDN

🎓 W3Schools

Interaktive HTML-, CSS- og JavaScript-opplæringar med «Try it yourself»-editor. Enklare enn MDN – veldig bra for nybegynnere.

↗ Åpne W3Schools

🖊️ Notepad / Notepad++

HTML-prosjektet krever bare en teksteditor og en nettleser. Notepad++ er gratis og fargekoder HTML-syntaks – anbefalt fremfor vanlig Notepad.

↗ Last ned Notepad++

▶️ CodePen

Nettbasert editor for HTML, CSS og JavaScript – sjå resultatet live medan du skriv. Ingen konto nødvendig for å teste. Bra til demonstrasjonar.

↗ Åpne CodePen