Arduino-plattformen, oppbygning og grunnleggende bruk.
Mikrokontrollarar og Arduino
Hittil har vi jobba med passive og aktive elektroniske komponentar, men vi har styrt krinsane manuelt – med brytarar, potensiometer og faste koplingar. No skal vi ta det store steget: å bruke ein mikrokontrollar til å styre elektronikken med programkode.
Ein mikrokontrollar er ein liten datamaskin på éin einaste brikke. Han kan lese signal frå sensorar, ta avgjerder basert på programmet vi skriv, og styre aktuatorar som lys, motorar og høgtalarar. Den mest populære plattforma for læring og prototyping er Arduino.
I dette kapittelet lærer du kva ein mikrokontrollar er, korleis Arduino-plattforma er bygd opp, og korleis du skriv og lastar opp ditt første program.
Ein mikrokontrollar (forkorta MCU – Microcontroller Unit) er ein liten, integrert datamaskin på éin einaste brikke. Han inneheld:
- Prosessor (CPU): Utfører instruksjonar frå programmet
- Flash-minne: Lagrar programmet (blir teke vare på når straumen er av)
- RAM: Mellombels arbeidsminne for data under køyring
- I/O-pinnar: Digitale og analoge inn- og utgangar for kommunikasjon med omverda
- Klokke: Styrer farten på prosessoren (typisk 8–16 MHz for Arduino)
Til skilnad frå ein vanleg datamaskin er ein mikrokontrollar designa for å køyre eitt einaste program i ei uendeleg løkkje, og han har svært avgrensa minne og prosessorkraft – men han er billig, liten og energieffektiv.
Mikrokontrollarar i kvardagen
Du er omgitt av mikrokontrollarar utan å tenkje over det. Dei finst i:
- Kvitevarer: Vaskemaskin, oppvaskmaskin, mikrobølgjeomn
- Transport: Motorstyringa i bilen, ABS-bremsar, airbag
- Underhaldning: Fjernkontrollar, spelkontrollarar, LED-strips
- Helse: Digitale termometer, blodtrykksmålarar, insulinpumper
- Heimeautomatisering: Smarte lyspærer, termostat, dørlåsar
Ein moderne bil kan innehalde over 100 mikrokontrollarar som samarbeider!
1. Maskinvare: Eit utviklingskort med ein mikrokontrollar (vanlegvis ATmega328P), USB-tilkopling, spenningsregulator og tilgjengelege pinnar.
2. Programvare (IDE): Eit gratis utviklingsmiljø der du skriv kode, kompilerer og lastar opp til kortet via USB.
3. Programmeringsspråk: Basert på C/C++ med forenkla funksjonar for å styre maskinvara.
Det mest brukte kortet for nybyrjarar er Arduino Uno, som har:
- 14 digitale I/O-pinnar (av desse støttar 6 PWM)
- 6 analoge inngangar (A0–A5)
- 5 V driftsspenning
- USB-tilkopling for programmering og straumforsyning
- 32 KB flash-minne for programmet
Skildre dei viktigaste delane på eit Arduino Uno-kort og kva dei blir brukte til.
Eit Arduino Uno-kort har følgjande hovuddelar:
Straum og tilkopling:
- USB-port: Blir kopla til PC for programmering og kan gi 5 V straum
- Ekstern strauminngang (barrel jack): 7–12 V DC for frittståande drift
- 5 V og 3.3 V utgangar: Gir regulert spenning til eksterne komponentar
- GND-pinnar: Jordtilkopling (referansepunkt for spenning)
Digitale pinnar (0–13):
- Kan setjast som INPUT (lese) eller OUTPUT (skrive)
- Opererer med to nivå: HIGH (5 V) og LOW (0 V)
- Pinne 0 og 1 blir òg brukte til seriell kommunikasjon (TX/RX)
- Pinnar merkte med ~ (3, 5, 6, 9, 10, 11) støttar PWM-utgang
Analoge pinnar (A0–A5):
- Les analoge spenningar frå 0 til 5 V
- Konverterer til digitalverdi mellom 0 og 1023 (10-bits oppløysing)
- Kan òg brukast som digitale pinnar ved behov
Mikrokontrollaren (ATmega328P):
- Sjølve «hjernen» – køyrer programmet ditt
- 16 MHz klokkefrekvens, 32 KB flash, 2 KB RAM
Kva inneheld IKKJE ein mikrokontrollar?
- HIGH = 5 V (logisk 1)
- LOW = 0 V (logisk 0)
Pinnane kan konfigurerast som:
- OUTPUT: Arduino sender eit signal ut (t.d. tenne ein LED)
- INPUT: Arduino les eit signal inn (t.d. lese ein knapp)
- INPUTPULLUP: Som INPUT, men med ein innebygd pull-up-motstand som held pinnen HIGH når ingenting er tilkopla
Funksjonar for digitale pinnar:
- pinMode(pin, mode) – Set pinnen som INPUT, OUTPUT eller INPUTPULLUP
- digitalWrite(pin, value) – Skriv HIGH eller LOW til ein utgangs-pinne
- digitalRead(pin) – Les tilstanden (HIGH eller LOW) frå ein inngangs-pinne
ADC-en har 10-bits oppløysing, som tyder:
- 0 V → verdien 0
- 5 V → verdien 1023
- Oppløysing: per steg
Funksjon:
- analogRead(pin) – Returnerer ein heiltalsverdi frå 0 til 1023
Eksempel: Dersom ein sensor gir 2,5 V, les Arduino:
Merk: Arduino Uno har ikkje ein ekte analog utgang. Funksjonen analogWrite() bruker i staden PWM (pulsbreiddemodulasjon) på dei digitale pinnane merkte med ~.
Skriv eit program som blinkar den innebygde LED-en (pinne 13) på Arduino-kortet: 1 sekund på, 1 sekund av.
Her er det klassiske «Blink»-programmet som alle Arduino-nybyrjarar startar med:
// Blink – Ditt første Arduino-program
// Blinkar den innebygde LED-en på pinne 13
void setup() {
// setup() blir køyrd éin gong ved oppstart
pinMode(13, OUTPUT); // Sett pinne 13 som utgang
}
void loop() {
// loop() blir køyrd om og om igjen, i det uendelege
digitalWrite(13, HIGH); // Tenn LED-en (5 V)
delay(1000); // Vent 1000 ms = 1 sekund
digitalWrite(13, LOW); // Sløkk LED-en (0 V)
delay(1000); // Vent 1 sekund
}Forklaring av programstrukturen:
- setup(): Blir køyrd éin gong ved oppstart. Her initialiserer vi pinnar og innstillingar.
- loop(): Blir køyrd i ei uendeleg løkkje etter setup(). Her legg vi hovuddelen av programmet.
- pinMode(13, OUTPUT): Konfigurerer pinne 13 som utgang.
- digitalWrite(13, HIGH): Set pinne 13 til 5 V (LED lyser).
- delay(1000): Pausar programmet i 1000 millisekund (1 sekund).
Resultatet: LED-en blinkar med 0,5 Hz – éin gong per 2 sekund.
I eit Arduino-program blir setup()-funksjonen køyrd:
Skriv eit program som les ein trykknapp kopla til pinne 2 (med innebygd pull-up-motstand) og tenner LED-en på pinne 13 når knappen er trykt ned.
// Knapp-styrt LED
// Knapp på pinne 2 (INPUT_PULLUP), LED på pinne 13
void setup() {
pinMode(13, OUTPUT); // LED som utgang
pinMode(2, INPUT_PULLUP); // Knapp med innebygd pull-up
}
void loop() {
int knappStatus = digitalRead(2); // Les knappen
if (knappStatus == LOW) {
// LOW tyder at knappen er trykt (pull-up inverterer logikken)
digitalWrite(13, HIGH); // Tenn LED
} else {
digitalWrite(13, LOW); // Sløkk LED
}
}Viktige detaljar:
- Med INPUT_PULLUP er pinnen HIGH (5 V) når knappen ikkje er trykt.
- Når knappen blir trykt, blir pinnen kopla til GND, og han blir LOW (0 V).
- Difor er logikken invertert: LOW = knappen er trykt.
Kopling:
- Knapp: Éi side til pinne 2, andre side til GND
- Ingen ekstern motstand nødvendig (den innebygde pull-up-motstanden tek seg av det)
Arduino Uno har 6 analoge inngangar med 10-bits oppløysing. Kor mange ulike verdiar kan analogRead() returnere?
Seriell kommunikasjon – sjå kva Arduino-en «tenkjer»
Ein viktig funksjon for feilsøking og datalogging er seriell kommunikasjon. Arduino kan sende tekst og tal til PC-en via USB-kabelen, som du kan lese i Serial Monitor i Arduino IDE.
void setup() {
Serial.begin(9600); // Start seriell kommunikasjon med 9600 baud
Serial.println("Arduino klar!");
}
void loop() {
int sensorVerdi = analogRead(A0); // Les analog sensor
Serial.print("Sensorverdi: ");
Serial.println(sensorVerdi); // Skriv verdien til PC
delay(500); // Vent 0,5 sekund
}- Serial.begin(9600): Startar kommunikasjonen med ein fart på 9600 baud (bits per sekund).
- Serial.print(): Skriv tekst utan linjeskift etter.
- Serial.println(): Skriv tekst med linjeskift etter.
Serial Monitor er uvurderleg for å forstå kva programmet gjer, og for å lese sensordata i sanntid.
1. Bruk alltid forresistans med LED-ar – koplar du ein LED direkte til 5 V utan motstand, kan du øydeleggje LED-en og Arduino-pinnen.
2. Ikkje trekk meir enn 20 mA frå éin pinne – total maks for alle pinnar er 200 mA.
3. Kopl aldri spenning over 5 V til ein pinne – dette kan øydeleggje mikrokontrollaren.
4. Kopl frå straum før du endrar koplingar – spesielt med motorar og relé.
5. Bruk breadboard – det gjer det enkelt å eksperimentere utan å lodde.
6. Sjekk koplingane nøye – ei kortslutning kan øydeleggje kortet permanent.
Oppsummering – Mikrokontrollarar og Arduino
Mikrokontrollar:
- Liten datamaskin på éin brikke (CPU, minne, I/O)
- Køyrer eitt program i ei uendeleg løkkje
- Finst overalt i moderne teknologi
Arduino-plattforma:
- Open kjeldekode maskinvare og programvare
- Arduino Uno: 14 digitale pinnar, 6 analoge inngangar, 5 V, USB
- Blir programmert i C/C++ via Arduino IDE
Programstruktur:
- setup() blir køyrd éin gong ved start
- loop() blir køyrd i uendeleg løkkje
- pinMode(), digitalWrite(), digitalRead(), analogRead()
Digitale pinnar: HIGH (5 V) eller LOW (0 V) – to tilstandar
Analoge inngangar: 0–1023 (10-bits ADC) – måler spenning 0–5 V
Seriell kommunikasjon: Send data til PC for feilsøking og datalogging
I neste kapittel skal vi kople sensorar til Arduino-en og byrje å måle den verkelege verda!
Du vil lage eit «trafikklys» med tre LED-ar (raud på pinne 8, gul på pinne 9, grøn på pinne 10). Skriv eit Arduino-program som gjennomfører ein trafikklys-syklus: grønt i 5 sekund → gult i 2 sekund → raudt i 5 sekund → raudt og gult saman i 1 sekund → grønt igjen (og så vidare i loop).
Forklar med eigne ord skilnaden mellom digitale og analoge pinnar på Arduino. Gi eit eksempel på ein komponent du ville kopla til kvar type pinne, og forklar kvifor.
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.