Elev eller forelder? Elev: få hint på akkurat denne oppgaven, ikke fasit. Forelder: oversikt over lekser og prøver, og et barn som lærer selv. Prøv gratis i 14 dager
Vg3 dataelektronikarfaget · Installering og drift

Programmering av mikrokontrollbaserte system

Mikrokontrollarar er små datamaskiner innebygd i elektroniske produkt, frå industriautomatikk til kvardagselektronikk. Som dataelektronikar må du kunne skrive program som styrer desse systema, finne og rette feil i koden, og sikre at programmet er strukturert og vedlikehaldbart. Dette kompetansemålet er kjernen i praktisk yrkesutøving på faget.

Kort svar

Å programmere mikrokontrollbaserte system inneber å skrive kode som styrer elektronisk maskinvare, teste at programmet fungerer slik det skal, tilpasse det til situasjonen og rette feil. Strukturert programmering betyr at koden er ryddig, logisk bygd opp og lett å forstå og vedlikeholde.

Kva betyr målet, og kvifor er det viktig?

Ein mikrokontrollar er ein liten prosessor med innebygd minne og inn- og utgangar, som kan styrast av eit program du skriv sjølv. Eksempel på mikrokontrollarar du møter i opplæringa er Arduino, STM32 og PIC. Programmet du skriv avgjer korleis maskinvara oppfører seg, til dømes kor lenge ein motor skal gå, kva signal som skal sendast, eller korleis ein sensor skal lesast av.

Å kunne programmere, teste, tilpasse og feilrette er kjernedugleikar i yrket. I praksis vil du sjeldan skrive eit program som fungerer perfekt første gongen. Difor er evna til å finne feil og rette dei minst like viktig som sjølve kodeskrivinga. Strukturert programmering handlar om å organisere koden slik at ho er oversiktleg, gjenbrukbar og enkel å vidareutvikle, noko som er avgjerande i profesjonelt arbeid.

Korleis programmere og feilrette steg for steg

Steg 1: Planlegg programmet. Bruk eit flytdiagram eller pseudokode til å teikne opp logikken før du byrjar å kode. Del problemet inn i deloppgåver, til dømes initialisering, hovudløkke og handtering av hendingar.

Steg 2: Skriv koden i delar. Bruk funksjonar og prosedyrar for kvart deloppgåve. Unngå å leggje all logikk i ein stor hovudløkke. I C-kode for ein Arduino kan du til dømes ha eiga funksjon for å lese ein sensor, ei for å rekne ut ein verdi og ei for å styre ein utgang.

Steg 3: Test undervegs. Last opp koden til mikrokontrollaren og test kvar del for seg. Bruk seriell monitor, oscilloskop eller LED-indikatorar til å kontrollere at programmet gjer det du forventar.

Steg 4: Feilrett systematisk. Når noko ikkje stemmer, isoler problemet. Sjekk om feilen ligg i hardware eller software ved å teste einskilddelar. Les feilmeldingar nøye og bruk ein debuggar dersom utviklingsmiljøet støttar det.

Steg 5: Tilpass og optimaliser. Justér tidskonstantar, grenseverdiar og parameterane etter testing i reelt miljø. Dokumentér endringar i kodekommentarar.

Prinsipp for strukturert programmering

Strukturert programmering byggjer på tre grunnleggjande kontrollstrukturar: sekvens (instruksjonar som vert utførte i rekkjefølgje), val (if/else og switch som utfører ulike greiner avhengig av ein tilstand) og repetisjon (løkker som for, while og do-while som gjentek instruksjonar).

I tillegg til kontrollstrukturane gjeld desse prinsippa i strukturert programmering: del koden inn i funksjonar med eitt klart ansvarsområde kvar, bruk tydelege variabelnamn som fortel kva variabelen inneheld, unngå hopp i koden (goto-setningar) sidan dei gjer flyten vanskeleg å følgje, og skriv kommentarar som forklarar kvifor noko vert gjort, ikkje berre kva som vert gjort.

Vanleg feil er å skrive ein lang main-funksjon som gjer alt, utan å dele opp i delfunksjonar. Dette gjer koden vanskeleg å teste og vedlikehalde. Ein strukturert kode er lettare å feilrette fordi du kan teste kvar funksjon for seg.

Vanlige feil og korleis du øver best

Ei svært vanleg feil er å hoppe rett til koding utan å planleggje. Dette fører gjerne til at programmet vert uoversiktleg og vanskeleg å feilrette. Bruk alltid litt tid på flytdiagram eller pseudokode først.

Andre hyppige feil er: feil datatypar som gjer at variablar kan miste informasjon, gløymd initialisering av variablar, manglande handtering av kanttilfelle (kva skjer om ein sensor gir ein uventad verdi?), og feil i tidsstyring når du brukar delay-funksjonar som blokkerer prosessoren.

For å øve best: start med enkle prosjekt og bygg gradvis opp kompleksiteten. Bruk ein Arduino med brødbrett og enkle komponentar som LED, knapp og temperatursensor. Reparer med vilje kode som nokon andre har skrive med innebygde feil, dette er ein av dei mest effektive metodane for å lære feilretting. Les koden til andre og spør deg sjølv kva kvar funksjon gjer og om ho kan forbetrast.

Prøv selv

Skriv eit enkelt Arduino-program som blinkar ein LED kvart sekund og les av ein knapp. Når knappen er trykt, skal LED-en lyse heile tida utan å blinke.

Fasit: Programmet brukar to funksjonar, les knapptilstanden og kontrollerer LED-en ut frå tilstanden. Uten knappetrykk blinkar LED-en med 500 ms på og 500 ms av. Med knappetrykk lyser LED-en konstant.

Steg 1: Deklarer konstantar for pinnummer og ein variabel for knapptilstand. Steg 2: I setup()-funksjonen, set LED-pinnen som OUTPUT og knapp-pinnen som INPUT_PULLUP. Steg 3: Skriv ein funksjon lesKnapp() som returnerer true dersom knappen er trykt. Steg 4: Skriv ein funksjon styrLED(bool konstant) som anten set LED til HIGH, eller vekslar mellom HIGH og LOW med delay(500). Steg 5: I loop()-funksjonen, kall lesKnapp() og send resultatet vidare til styrLED(). Test med seriell monitor at knapptilstanden vert lese riktig, og juster delay-verdiane om blinkeraten ikkje stemmer.

Les hele forklaringen

Prøv Lekselos gratis i 14 dager for å lese hele forklaringen, se eksemplet steg for steg og øve på vg3 dataelektronikarfaget tilpasset deg.

Prøv gratis i 14 dager Logg inn
Til deg som er forelder

Hint i stedet for fasit, og full oversikt over lekser og prøver.

Lekselos loser barnet gjennom oppgaven ett steg om gangen, så det lærer i stedet for å kopiere. Du får ukeplan, prøver og gloser samlet, og ser hva som er gjort. Forankret i LK20, laget i Norge. 14 dager gratis, uten kort.

Ofte stilte spørsmål

Kva er forskjellen på programmering av mikrokontrollar og vanleg dataprogrammering?

Mikrokontrollprogrammering styrer direkte maskinvare som pinnar, motorar og sensorar, og du må ta omsyn til avgrensa minne og prosessorkraft. Vanleg dataprogrammering køyrer på eit operativsystem med mykje meir ressursar og ikkje direkte hardware-kontroll.

Kva programmeringsspråk brukar ein til mikrokontrollarar?

C og C++ er dei vanlegaste språka, særleg for Arduino og STM32. Nokre mikrokontrollarar støttar også MicroPython. I fagopplæringa er C og C++ mest brukte fordi dei gir god kontroll over hardware og er industristandard.

Korleis finn eg feil i eit mikrokontrollerprogram?

Bruk seriell monitor til å skrive ut variabelverdiar undervegs i programmet. Del opp koden i små delar og test ein del om gongen. Oscilloskop og logikkanalysator kan avsløre timing-problem og signal som ikkje er som forventa.

Kva meiner ein med strukturert programmering?

Strukturert programmering vil seie at koden er organisert med sekvens, val og løkker, delt inn i funksjonar med klare oppgåver, og skriven med tydelege namn og kommentarar. Det gjer koden lettare å lese, teste og feilrette.

Kva er ein god måte å øve på mikrokontrollprogrammering heime?

Kjøp eit Arduino startkit med brødbrett og enkle komponentar. Prøv deg fram med konkrete miniprosjekt, til dømes ein temperaturmålar eller ei lysregulering. Prøv òg å lese og forstå programmet til andre, og forsøk bevisst å lage og rette feil for å forstå feilrettingsprosessen.

Forankring i læreplanen: Kompetansemål (LK20): Fag: Læreplan i vg3 dataelektronikarfaget Trinn: Installering og drift Kompetansemål: Eleven skal kunne programmere mikrokontrollbaserte system og teste, tilpasse og feilrette programma og beskrive prinsippa for strukturert programmering. Nynorsk: Eleven skal kunne programmere mikrokontrollbaserte system og teste, tilpasse og feilrette programma og beskrive prinsippa for strukturert programmering. Kjerneelement: Yrkesutøving, Konfigurering og programmering (Kilde: Utdanningsdirektoratet)

Dette fagstoffet er laget med kunstig intelligens og forankret i den norske læreplanen (LK20). Vi jobber for at det skal være riktig, men feil kan forekomme. Fant du noe som ikke stemmer? Meld fra her, så retter vi det. Sist oppdatert 27. juni 2026.

Relaterte emner i Vg3 dataelektronikarfaget

Øv på vg3 dataelektronikarfaget med Lekselos

Lekselos loser deg gjennom oppgaver med hint, ikke fasit, og lager øving tilpasset deg. Prøv gratis.

Prøv gratis i 14 dager Øv på dette målet