Tilbake
4.5
Mikrokontrollere og Arduino

4.5 Mikrokontrollere og Arduino

Arduino-plattformen, oppbygning og grunnleggende bruk.

35 min
5 oppgaver
ArduinoMikrokontrollerDigitale pinnerAnaloge pinner
Du leser den lesevennlige versjonen
Din fremgang i kapitlet
0 / 5 oppgaver

Fra brytere til kode

Hittil har du styrt kretser for hånd -- med brytere, motstander og faste koblinger. Men hva om kretsen kunne ta beslutninger selv? Hva om den kunne lese en sensor, vurdere verdien, og slå på et lys bare når det ble mørkt? Da trenger du en mikrokontroller.

En mikrokontroller er en hel liten datamaskin på én eneste brikke. Den kan lese signaler fra sensorer, kjøre programmet du har skrevet, og styre lys, motorer og lyd. Den mest populære plattformen for å lære dette er Arduino. I dette kapittelet ser vi på hva en mikrokontroller er, hvordan Arduino er bygd opp, og hvordan du skriver og laster opp ditt første program.

Hjernen på en brikke

En mikrokontroller, forkortet MCU, er en liten datamaskin samlet på én brikke. Den inneholder en prosessor som utfører instruksjonene, flash-minne som lagrer programmet selv når strømmen er av, RAM som er arbeidsminne under kjøring, I/O-pinner for å kommunisere med omverdenen, og en klokke som styrer hastigheten -- typisk 8 til 16 MHz på en Arduino. Til forskjell fra en vanlig datamaskin kjører en mikrokontroller bare ett program i en uendelig løkke, og har svært lite minne og regnekraft -- men den er til gjengjeld billig, liten og energieffektiv. Du er faktisk omgitt av dem: i vaskemaskinen, mikrobølgeovnen, fjernkontrollen og bilen. En moderne bil kan inneholde over 100 mikrokontrollere som samarbeider.

Arduino er en åpen plattform bygd rundt en slik mikrokontroller. Den består av tre deler: et utviklingskort med mikrokontroller, USB og spenningsregulator; et gratis utviklingsmiljø der du skriver, kompilerer og laster opp kode; og et programmeringsspråk basert på C/C++. Det vanligste kortet for nybegynnere er Arduino Uno, med 14 digitale I/O-pinner (seks av dem støtter PWM), 6 analoge innganger kalt A0 til A5, 5 V driftsspenning, USB-tilkobling og 32 KB flash-minne. På kortet finner du USB-porten for programmering og strøm, GND-pinner som er jordreferanse, 5 V-utgang for komponenter, og selve mikrokontrolleren ATmega328P som er hjernen i det hele.

📝Oppgave Quiz 1

Setup, loop og ditt første program

Et Arduino-program har alltid samme grunnstruktur: to funksjoner som heter setup() og loop(). setup() kjøres bare én gang, ved oppstart, og brukes til å sette opp pinner og innstillinger. loop() kjøres deretter om og om igjen, i en uendelig løkke, og her ligger hoveddelen av programmet. Dette speiler nettopp at en mikrokontroller kjører ett program i en evig syklus.

Det klassiske første programmet kalles «Blink» og får en LED til å blinke. I setup() skriver vi pinMode(13, OUTPUT) for å sette pinne 13 som utgang. I loop() skriver vi digitalWrite(13, HIGH) for å tenne LED-en med 5 V, så delay(1000) for å vente ett sekund, deretter digitalWrite(13, LOW) for å slukke, og delay(1000) igjen. Resultatet er en LED som blinker -- ett sekund på, ett sekund av.

For å styre digitale pinner bruker vi tre nøkkelfunksjoner. pinMode(pin, mode) setter en pinne som INPUT, OUTPUT eller INPUTPULLUP. digitalWrite(pin, value) skriver HIGH eller LOW til en utgang. Og digitalRead(pin) leser tilstanden på en inngang. En digital pinne har bare to tilstander: HIGH, som er 5 V og logisk 1, eller LOW, som er 0 V og logisk 0. Vil du lese en knapp, er INPUTPULLUP nyttig: den innebygde motstanden holder pinnen HIGH når ingenting er trykket, slik at logikken blir invertert -- LOW betyr at knappen er trykket. Da slipper du en ekstern motstand.

📝Oppgave Quiz 2

Analoge verdier, feilsøking og sikkerhet

Digitale pinner kjenner bare to verdier, men virkeligheten er sjelden så svart-hvitt. Derfor har Arduino seks analoge innganger, A0 til A5, som kan lese spenninger mellom 0 og 5 V. De bruker en analog-til-digital-omformer med 10-bits oppløsning, som betyr at 0 V blir verdien 0 og 5 V blir 1023 -- altså 1024 mulige verdier. Funksjonen analogRead(pin) gir deg dette tallet. Gir en sensor 2,5 V, leser Arduino 2,55,0×1023512\displaystyle \frac{2{,}5}{5{,}0} \times 1023 \approx 512. Hvert steg tilsvarer rundt 4,9 mV. Merk at Arduino Uno ikke har en ekte analog utgang; analogWrite() bruker i stedet PWM på de digitale pinnene merket med en tilde.

Når du skriver programmer, er seriell kommunikasjon uvurderlig for å forstå hva som skjer. Med Serial.begin(9600) i setup starter du kommunikasjonen, og deretter kan du sende tekst og tall til PC-en med Serial.print() og Serial.println() og lese dem i Serial Monitor. Vil du for eksempel se en sensorverdi i sanntid, skriver du den ut hvert halve sekund -- perfekt for feilsøking og datalogging.

Til slutt et ord om sikkerhet, så du ikke ødelegger noe. Bruk alltid forresistans med LED-er, ellers kan du brenne både LED-en og pinnen. Ikke trekk mer enn 20 mA fra én enkelt pinne, og maks 200 mA totalt. Koble aldri mer enn 5 V til en pinne -- det kan ødelegge mikrokontrolleren. Koble fra strømmen før du endrer koblinger, særlig med motorer. Og bruk gjerne et breadboard, så du kan eksperimentere uten å lodde. Sjekk koblingene nøye, for en kortslutning kan skade kortet permanent.

📝Oppgave Quiz 3

Oppsummering

Vi har sett at en mikrokontroller er en hel liten datamaskin på én brikke, som kjører ett program i en uendelig løkke, og at den finnes overalt rundt oss. Arduino er en åpen plattform bygd rundt en slik brikke, med Arduino Uno som det vanligste kortet.

Et program har alltid setup(), som kjøres én gang, og loop(), som gjentas, og styres med funksjoner som pinMode(), digitalWrite(), digitalRead() og analogRead(). Digitale pinner kjenner to tilstander, HIGH og LOW, mens analoge innganger leser 0 til 1023 via en 10-bits ADC. Seriell kommunikasjon hjelper deg å feilsøke, og noen enkle sikkerhetsregler -- forresistans, strømgrenser og forsiktige koblinger -- holder både deg og kortet trygt.

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.