Programmering og koding

Arduino-programmering for nybegynnere med Uno R4 WiFi

Arduino Uno R4 WiFi ved siden av en Arduino-skisse som får den innebygde LED-en til å blinke med digitalWrite og delay

Arduino-programmering betyr å skrive små programmer, kalt skisser, som leser og styrer pinnene på et Arduino-kort. Du skriver koden i Arduino IDE 2, trykker Upload, og kortet kjører programmet med en gang. Guiden passer for nybegynnere og har kodeeksempler på tre nivåer for Uno R4 WiFi: fra en blinkende lysdiode via knapp og potensiometer til den innebygde LED-matrisen og en liten nettside over WiFi.

Kort forklartInstaller Arduino IDE 2, legg til pakken «Arduino UNO R4 Boards» i Boards Manager, velg Arduino UNO R4 WiFi og porten, og last opp Blink. Hver skisse har setup(), som kjører én gang, og loop(), som gjentas så lenge kortet har strøm. Sett alltid en motstand foran en LED, og på Uno R4 bør den være minst 470 Ω, helst 1 kΩ, fordi hver pinne bare tåler 8 mA. Bytt ut delay() med millis() så snart programmet skal gjøre flere ting samtidig.

Arduino-programmering: slik er en skisse bygget opp

Arduino-språket består av funksjoner og strukturer bygget på C og C++, med tillegg for å styre maskinvaren. Et program kalles en skisse. Det lagres som en .ino-fil i en mappe med samme navn, og mappen kan inneholde flere filer, for eksempel en egen fil for WiFi-passordet.

void setup() {
  // Kjører én gang etter strøm på eller reset:
  // sett pinnemodus, start Serial og biblioteker.
}

void loop() {
  // Kjører om og om igjen så lenge kortet har strøm.
}

Begge funksjonene må finnes, også når den ene er tom. Kompilatoren skiller mellom store og små bokstaver: Setup() er ikke det samme som setup(). Hver instruksjon slutter med semikolon, og krøllparentesene { } rammer inn det som hører til en funksjon, en if eller en løkke.

Kom i gang med Arduino IDE 2 og Uno R4 WiFi

  1. Last ned Arduino IDE 2 fra Arduinos programvareside. Den krever 64-bits Windows 10 eller nyere, macOS 10.15 eller nyere, eller 64-bits Linux.
  2. Installer pakken for kortet. Klikk på kortikonet i venstre kolonne for å åpne Boards Manager, søk etter «UNO R4 WiFi» og installer «Arduino UNO R4 Boards». Pakken inneholder også bibliotekene for LED-matrisen og WiFi.
  3. Koble til kortet med en USB-C-kabel som overfører data. En ren ladekabel gir strøm, men ingen port.
  4. Velg kort og port i nedtrekksmenyen ved siden av knappene øverst. Står navnet med fet skrift, er kortet tilkoblet. Finner du det ikke, bruk «Select other board and port…» eller Tools > Board og Tools > Port.
  5. Åpne Blink med File > Examples > 01.Basics > Blink.
  6. Trykk Verify og så Upload. Når konsollen nederst viser «Done uploading.», kjører programmet på kortet.
Knapp eller menyHva den gjørNår du bruker den
Verify (hake)Kontrollerer og kompilerer skissen uten å laste den oppFør hver opplasting, for å finne skrivefeil
Upload (pil mot høyre)Kompilerer og laster den opp til kortetNår koden er klar
Serial Monitor (øverst til høyre)Viser tekst fra Serial.print()Feilsøking og målinger
Serial Plotter (øverst til høyre)Tegner tallene fra Serial som kurverAnaloge verdier, som potensiometeret i nivå 2

Menynavnene i guiden er de engelske navnene fra Arduinos dokumentasjon.

Nivå 1: nybegynner. Tid: rundt 20 minutter. Du trenger et Arduino Uno R4 WiFi og en USB-C-kabel for data, for eksempel en 4-i-1-kabel med USB-C-plugg. Til den eksterne LED-en: et koblingsbrett med 830 hull, én rød 5 mm LED og én 1 kΩ-motstand, for eksempel fra et LED-sett med motstander, og tre koblingsledninger hann-hann. Andre størrelser og lengder finner du under koblingsbrett og prototyping og koblingsledninger. Et utvidet startsett for Uno R4 WiFi har kortet, en USB-C-kabel, koblingsbrettet, LED-er, motstander, knapper, potensiometre og 65 hann-hann-ledninger i samme eske. Du trenger ikke lodde.

Blink med LED_BUILTIN

Kortet har en liten LED merket L. I koden heter den LED_BUILTIN, og på Uno R4 WiFi sitter den på pinne 13. Dette er Arduinos offisielle Blink-eksempel med norske kommentarer:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);  // pinnen blir en utgang
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // LED på
  delay(1000);                      // vent 1000 ms
  digitalWrite(LED_BUILTIN, LOW);   // LED av
  delay(1000);
}
  • pinMode(..., OUTPUT) gjør pinnen til en utgang som kan settes høy eller lav.
  • HIGH gir 5 V på pinnen og tenner LED-en, og LOW gir 0 V.
  • delay(1000) stopper programmet i ett sekund. Mens det venter, skjer ingenting annet. Det er greit her, men ikke i nivå 2.

Regn ut motstanden for 5 V-logikk

Uno R4 WiFi bruker 5 V på pinnene. Motstanden bestemmer strømmen gjennom LED-en etter Ohms lov: R = (5 V − Vf) / I, der Vf er spenningsfallet over LED-en. En rød LED har et spenningsfall på rundt 2,0 V. Ifølge Arduinos datablad tåler hver pinne på RA4M1-mikrokontrolleren høyst 8 mA, langt mindre enn på eldre Uno-kort. Det gir minst (5 V − 2,0 V) / 0,008 A = 375 Ω. Med margin for LED-er med lavere spenningsfall er 470 Ω den minste verdien du bør bruke.

MotstandStrøm med rød LED (Vf 2,0 V)På Uno R4
220 Ω(5 − 2,0) / 220 ≈ 13,6 mAFor mye, over grensen på 8 mA
470 Ω(5 − 2,0) / 470 ≈ 6,4 mAInnenfor, men med liten margin
1 kΩ(5 − 2,0) / 1000 = 3,0 mAAnbefalt: tydelig lys og god margin
Se opp for eldre oppskrifter: Mange Arduino-eksempler bruker 220 Ω, som er beregnet for Uno R3. På Uno R4 gir det nesten dobbelt så mye strøm som pinnen tåler. Bruk 1 kΩ (brun-svart-rød på en firebåndsmotstand, se fargekodekalkulatoren). Koble aldri motorer, releer eller servoer direkte til en pinne.

Koble en ekstern LED til pinne ~9

  1. Trekk ut USB-kabelen før du kobler opp.
  2. Sett motstanden fra kolonne 3 til kolonne 7 på koblingsbrettet. De fem hullene a til e i samme kolonne er koblet sammen.
  3. Sett LED-ens lange bein (anoden, +) i kolonne 7 og det korte beinet (katoden, −) i kolonne 8.
  4. Koble en ledning fra pinnen merket ~9 på kontakten merket DIGITAL til kolonne 3, og en ledning fra kolonne 8 til den blå minusskinnen øverst.
  5. Koble pinnen merket GND på samme kontakt, mellom AREF og 13, til den blå minusskinnen øverst.
Koblingstegning: koblingsbrett over Uno R4 WiFi med LED og 1 kΩ på pinne ~9, knapp på pinne 2 og potensiometer mellom 5V og GND til A0.
Hele oppkoblingen for nivå 1 til 3: koblingsbrettet står over UNO R4 WiFi, som er sett ovenfra med USB-C til venstre, og bare kolonne 1 til 26 av brettet er vist. LED-en går fra ~9 gjennom 1 kΩ (brun, svart, rød) til minusskinnen øverst, knappen fra 2 til minusskinnen nederst via to bein på skrå, og potensiometeret ligger mellom 5V og GND via skinnene nederst, med glideren til A0. Nivå 1 trenger bare LED-en, motstanden og ledningene til ~9 og minusskinnen øverst, og de fem hullene a til e og f til j i hver kolonne er koblet sammen.
FraTilHvorfor
~9 på DIGITAL-kontakten (D9 i koden)Kolonne 3Styresignalet fra programmet
Motstand 1 kΩKolonne 3 til 7Begrenser strømmen til rundt 3 mA
LED, langt bein (+)Kolonne 7Anoden mot motstanden
LED, kort bein (−)Kolonne 8, videre til minusskinnen øverstKatoden mot jord
GND mellom AREF og 13Minusskinnen øverstFelles jord for alle delene

Endre Blink slik at pinnenummeret står i én konstant øverst. Da flytter du LED-en til en annen pinne ved å endre én linje:

const int LED_PIN = 9;  // ekstern LED via 1 kΩ

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(500);
  digitalWrite(LED_PIN, LOW);
  delay(500);
}

Prøv selv: bytt ut digitalWrite(LED_PIN, HIGH) med analogWrite(LED_PIN, 64) og digitalWrite(LED_PIN, LOW) med analogWrite(LED_PIN, 0). Pinne ~9 har PWM, og verdien 0 til 255 styrer lysstyrken. Bruk analogWrite() i begge linjene: på Uno R4 slår ikke digitalWrite() av PWM som analogWrite() har startet.

Hvis det ikke virker: snu LED-en, kontroller at ledningen står i ~9 og ikke i 8, og sjekk at LED-beina ikke står i samme kolonne. Virket Blink med L, men ikke den eksterne LED-en, er feilen nesten alltid i koblingen.

Nivå 2: knapp med INPUT_PULLUP og potensiometer i Serial Plotter

Nivå 2: viderekommen. Tid: rundt 40 minutter. Du bygger videre på LED-en fra nivå 1. Du trenger i tillegg én trykknapp, ett potensiometer, for eksempel på 10 kΩ, og sju koblingsledninger til. Knapper og potensiometre ligger også i det utvidede startsettet fra nivå 1.

Koble knappen mellom pinne 2 og GND

Med pinMode(2, INPUT_PULLUP) kobler kortet inn en intern motstand mot 5 V. Pinnen leser da HIGH når knappen er sluppet og LOW når du trykker, fordi knappen kobler pinnen til GND. Du trenger ingen ekstra motstand. Uten pull-up «flyter» inngangen og kan lese tilfeldig HIGH eller LOW.

  1. Sett knappen over midtsporet på koblingsbrettet, med beina i kolonne 13 og 15.
  2. Koble pinnen merket 2 til kolonne 13 i øvre halvdel.
  3. Koble pinnen GND under POWER til den blå minusskinnen nederst, og kolonne 15 i nedre halvdel til den samme skinnen. Da bruker du to bein som står på skrå overfor hverandre. På vanlige firebeinte knapper er det paret som alltid går gjennom selve bryteren.

Avprelling (debounce) med millis()

En mekanisk knapp spretter: kontakten slår av og på flere ganger i løpet av noen millisekunder, og programmet kan tro at du trykket flere ganger. Løsningen er å godta en ny tilstand først når den har vært stabil i 50 ms. Arduinos Debounce-eksempel gjør dette med millis(), som gir antall millisekunder siden programmet startet. Her er det tilpasset INPUT_PULLUP, så et trykk er LOW:

Flytskjema: loop() leser millis(), sjekker om intervallet har gått, gjør i så fall oppgaven og lagrer tiden, og ellers andre oppgaver.
Slik virker tidsstyring med millis(): loop() venter aldri, men sjekker om intervallet har gått. Bare da utføres oppgaven og tidspunktet lagres; ellers går programmet videre til andre oppgaver. Derfor kjører loop() mange ganger mellom hver gang oppgaven utføres.
const int BUTTON_PIN = 2;   // knapp mellom 2 og GND
const int LED_PIN = 9;      // LED-en fra nivå 1
const unsigned long DEBOUNCE_MS = 50;

int ledState = LOW;
int buttonState = HIGH;     // stabil tilstand, HIGH = sluppet
int lastReading = HIGH;     // forrige råavlesning
unsigned long lastChange = 0;

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  int reading = digitalRead(BUTTON_PIN);

  if (reading != lastReading) {
    lastChange = millis();  // signalet endret seg
  }

  if (millis() - lastChange > DEBOUNCE_MS) {
    if (reading != buttonState) {
      buttonState = reading;
      if (buttonState == LOW) {  // LOW = trykket
        ledState = !ledState;
        digitalWrite(LED_PIN, ledState);
      }
    }
  }
  lastReading = reading;
}
  • unsigned long brukes til tid fordi millis() returnerer den typen. En vanlig int blir for liten etter kort tid.
  • millis() - lastChange er tiden siden siste endring. Skriv alltid tidssjekken som en differanse, slik Arduinos eksempler gjør: med unsigned long blir svaret riktig også når millis() begynner på null igjen etter omtrent 50 dager.
  • buttonState er den stabile tilstanden. Den oppdateres bare når avlesningen har vært uendret i mer enn 50 ms.
  • ledState = !ledState veksler LED-en mellom av og på ved hvert nytt trykk, ikke hele tiden mens du holder knappen inne.
  • Løkken venter aldri. Derfor kan du legge mer kode i den uten at knappen blir treg.

Potensiometer på A0 og Serial Plotter

Et potensiometer er en spenningsdeler. Glideren i midten gir en spenning mellom 0 V og 5 V, og analogRead(A0) gjør den om til et tall. Standardoppløsningen er 10 bit, altså 0 til 1023, som på eldre Uno-kort. Koble pinnen 5V under POWER til den røde plusskinnen nederst, og koble aldri plusskinnen direkte til minusskinnen. Sett potensiometeret i nedre halvdel av koblingsbrettet, med beina i kolonne 20, 22 og 24.

PotensiometerbeinTilMerket på kortet
Ytre bein (kolonne 20)Plusskinnen nederst, som kobles til 5 V5V under POWER
Midtre bein, glideren (kolonne 22)Analog inngang 0A0 under ANALOG IN
Ytre bein (kolonne 24)Minusskinnen nederstGND (via skinnen)
Koblingsskjema: D9 via 1 kΩ og LED til GND, knapp fra D2 til GND med intern pull-up, potensiometer mellom 5V og GND med glideren til A0.
Skjema for oppkoblingen. Med en rød LED (rundt 2,0 V spenningsfall) gir 1 kΩ (5 V − 2,0 V) / 1 kΩ = 3 mA, godt under 8 mA per pinne. Knappen trekker D2 ned til GND, mot den interne pull-up-motstanden, og potensiometeret deler spenningen på 5 V og sender en del av den til A0.
const unsigned long INTERVAL_MS = 20;  // 50 målinger i sekundet
unsigned long lastSample = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (millis() - lastSample >= INTERVAL_MS) {
    lastSample = millis();
    int pot = analogRead(A0);  // 0 til 1023
    Serial.print("pot:");      // navn på kurven
    Serial.println(pot);       // tall og linjeskift
  }
}
  • Serial.begin(9600) starter forbindelsen til PC-en. Velg samme hastighet, 9600 baud, i Serial Monitor.
  • "pot:" foran tallet blir navnet på kurven i Serial Plotter, og println avslutter hver måling med linjeskift, som plotteren trenger.
  • Åpne Serial Plotter øverst til høyre først når opplastingen er ferdig. Vri på potensiometeret, og kurven følger med.
  • Uno R4 kan lese med høyere oppløsning: legg analogReadResolution(14); i setup(), så går verdiene fra 0 til 16383.

Prøv selv: slå sammen knappeskissen og potensiometerskissen til én. Det går fordi ingen av dem bruker delay().

Hvis det ikke virker: virker knappen alltid trykket, eller reagerer den ikke, flytter du ledningen fra kolonne 15 til beinet på skrå overfor. Står verdien fast på 0 eller 1023, går A0-ledningen til et ytterbein i stedet for midtbeinet. Hopper verdien tilfeldig, mangler det trolig en ledning til A0 eller til en av skinnene.

Nivå 3: LED-matrise og en liten nettside over WiFi

Nivå 3: avansert. Tid: rundt 60 minutter. Du bruker LED-en og potensiometeret fra nivå 1 og 2, og i del B et WiFi-nett på 2,4 GHz med navn og passord. Begge delene krever et Uno R4 WiFi.

Del A: potensiometeret som søyle på LED-matrisen

Matrisen har 12 × 8 røde punkter og styres med biblioteket Arduino_LED_Matrix, som følger med kortpakken. Den enkleste måten er å bruke et todimensjonalt bilde, der 1 er på og 0 er av:

#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;
uint8_t frame[8][12];  // 8 rader, 12 kolonner, alle 0

void setup() {
  matrix.begin();
}

void loop() {
  int pot = analogRead(A0);              // 0 til 1023
  int cols = map(pot, 0, 1023, 0, 12);   // 0 til 12

  for (int row = 0; row < 8; row++) {
    for (int col = 0; col < 12; col++) {
      frame[row][col] = (col < cols) ? 1 : 0;
    }
  }
  matrix.renderBitmap(frame, 8, 12);
}
  • ArduinoLEDMatrix matrix; lager matriseobjektet, og matrix.begin() starter oppdateringen av punktene.
  • map() gjør om 0 til 1023 til 0 til 12 kolonner. Den regner med heltall, så hele søylen tennes først når potensiometeret står helt i enden.
  • Uttrykket (col < cols) ? 1 : 0 tenner kolonnene til venstre for grensen og slukker resten.
  • matrix.renderBitmap(frame, 8, 12) sender hele bildet til matrisen, med antall rader og kolonner.

Del B: en nettside som slår LED-en av og på

WiFi på Uno R4 WiFi håndteres av ESP32-S3-modulen, og i koden bruker du biblioteket WiFiS3. Skissen under bygger på Arduinos eksempel SimpleWebServerWiFi, med norske tekster, LED-en på ~9 og en statuslinje på siden.

  1. Åpne File > Examples > WiFiS3 > SimpleWebServerWiFi. Eksempelet har en ekstra fane, arduino_secrets.h.
  2. Skriv nettverksnavn og passord mellom anførselstegnene i den fanen: #define SECRET_SSID "..." og #define SECRET_PASS "...".
  3. Erstatt koden i hovedfanen med skissen under, lagre den under et eget navn og last den opp.
  4. Åpne Serial Monitor på 9600 baud. Når kortet er koblet til, skrives adressen ut, for eksempel http:// fulgt av en IP-adresse. Ser du den ikke, trykker du RESET på kortet mens Serial Monitor er åpen.
  5. Åpne adressen i nettleseren på en mobil eller PC på samme nett, og trykk «Slå på» og «Slå av».
Nettverk og passord: Siden har ingen innlogging, og alle på samme nett kan styre LED-en. Bruk den bare på ditt eget nett, og åpne den aldri mot internett med portviderekobling. Del aldri arduino_secrets.h: Arduino legger passordet i en egen fil nettopp for at du ikke skal dele det ved et uhell.
// Basert på Arduinos WiFiS3-eksempel SimpleWebServerWiFi
#include "WiFiS3.h"
#include "arduino_secrets.h"

char ssid[] = SECRET_SSID;  // nettverksnavn
char pass[] = SECRET_PASS;  // passord

const int LED_PIN = 9;
bool ledOn = false;
int status = WL_IDLE_STATUS;
WiFiServer server(80);      // vanlig HTTP-port

void setup() {
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);

  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("Fant ikke WiFi-modulen");
    while (true);  // stopp her
  }
  String fv = WiFi.firmwareVersion();
  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
    Serial.println("Oppdater WiFi-firmware");
  }

  while (status != WL_CONNECTED) {
    Serial.print("Kobler til ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    delay(10000);  // gi tilkoblingen 10 s
  }
  server.begin();
  Serial.print("Adresse: http://");
  Serial.println(WiFi.localIP());
}

void sendPage(WiFiClient &client) {
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html; charset=utf-8");
  client.println();
  client.print("<p>LED-en er ");
  client.print(ledOn ? "på" : "av");
  client.println("</p>");
  client.println("<p><a href=\"/H\">Slå på</a></p>");
  client.println("<p><a href=\"/L\">Slå av</a></p>");
  client.println();
}

void loop() {
  WiFiClient client = server.available();
  if (!client) return;  // ingen besøkende nå

  String line = "";
  while (client.connected()) {
    if (client.available()) {
      char c = client.read();
      if (c == '\n') {
        if (line.length() == 0) {  // tom linje: slutt
          digitalWrite(LED_PIN, ledOn ? HIGH : LOW);
          sendPage(client);
          break;
        }
        line = "";
      } else if (c != '\r') {
        line += c;
      }
      if (line.endsWith("GET /H")) ledOn = true;
      if (line.endsWith("GET /L")) ledOn = false;
    }
  }
  client.stop();
}
  • WiFi.status() == WL_NO_MODULE betyr at hovedprosessoren ikke får kontakt med WiFi-modulen. Da stopper skissen i while (true); i stedet for å prøve videre.
  • WiFi.firmwareVersion() sammenlignes med versjonen biblioteket forventer. Ser du «Oppdater WiFi-firmware», bruk Tools > Firmware Updater i IDE-en. Verktøyet sletter skissen på kortet, så last den opp på nytt etterpå.
  • WiFi.begin(ssid, pass) kobler til et WPA-nett. Løkken prøver på nytt hvert tiende sekund til statusen er WL_CONNECTED. Her er delay() greit, fordi ingenting annet skal skje før nettet er oppe.
  • server.available() gir en WiFiClient når en nettleser kobler til. Ellers avsluttes denne runden av loop() med en gang.
  • Nettleseren sender en forespørsel linje for linje. Første linje begynner med GET /H eller GET /L når du trykker på en lenke, og endsWith() fanger det opp mens linjen bygges.
  • En tom linje betyr at forespørselen er ferdig. Først da blir LED-en slått av eller på, og siden sendes: svarkoden, innholdstypen, en tom linje og selve HTML-en.
  • charset=utf-8 gjør at «på» og «Slå» vises riktig, og client.stop() lukker forbindelsen før neste besøkende.

Prøv selv: vis potensiometerverdien fra analogRead(A0) på siden, eller tenn en figur på LED-matrisen når LED-en er på.

Hvis det ikke virker: blir Serial Monitor stående på «Kobler til», kontroller navn og passord, og at nettet er på 2,4 GHz. Lastes ikke siden inn, sjekk at telefonen eller PC-en er på samme nett som kortet, ikke på et gjestenett.

Vanlige feil og løsninger

Det du serSannsynlig årsakGjør dette
Kortet vises ikke under PortLadekabel uten data, USB-hub eller dårlig kontaktBruk en datakabel direkte i PC-en, koble fra og til, og åpne portlisten på nytt
Opplastingen feiler, eller porten forsvinnerSkissen forstyrrer USB, eller porten er opptattTrykk RESET to ganger raskt for å starte bootloader-modus. Velg porten på nytt og last opp. Lukk andre programmer som bruker porten
was not declared in this scopeSkrivefeil, feil store og små bokstaver, eller en variabel som er laget inne i en annen funksjonSjekk stavingen, og flytt variabelen øverst i skissen hvis flere funksjoner bruker den
expected ';' before ... eller expected '}'Manglende semikolon eller krøllparentesSe på linjen over den IDE-en peker på
No such file or directory for Arduino_LED_Matrix.h eller WiFiS3.hFeil kort valgt, eller kortpakken manglerVelg Arduino UNO R4 WiFi og installer «Arduino UNO R4 Boards»
Knappen reagerer tilfeldigInngangen flyter, eller du bruker to bein som alltid er koblet sammenBruk INPUT_PULLUP og to bein på skrå

Arduinos egne feilsøkingssider forklarer flere feilmeldinger: når skissen ikke kompilerer og når skissen ikke lastes opp.

Hvilket kort og sett bør du velge?

Alle eksemplene er skrevet for Uno R4 WiFi. Nivå 1 og 2 virker også på Uno R3 og andre Uno-kort med 5 V, men LED-matrisen og WiFiS3 krever R4 WiFi, og 14-bits analoglesing krever et Uno R4. Har du allerede et kort, holder det med et komponentsett for Arduino, som har LED-er, motstander på 220 Ω, 1 kΩ og 10 kΩ, knapper, et potensiometer, ledninger hann-hann og et koblingsbrett, men ikke selve kortet.

Vil du ha et strukturert kurs, er Arduino Student Kit bygget rundt Uno Rev3, med ni leksjoner på engelsk og et multimeter. Startsettet med robotchassis passer når du vil gå videre til motorer. Motorer styres alltid gjennom en driver, se guiden om L298N, MOSFET og PWM. Flere kort finner du i Arduino-kategorien, og valgguiden for Arduino, ESP32 og Raspberry Pi hjelper deg med å velge plattform.

Vanlige spørsmål

Hvilket språk bruker Arduino?

Arduino-språket er en forenklet variant av C++ med egne funksjoner for pinner, tid og kommunikasjon. Du skriver vanlig C++-syntaks, og IDE-en kompilerer koden til maskinkode for kortet.

Hvorfor ikke bare bruke delay()?

Under delay() står programmet stille: det leser ingen knapper og gjør ingen nye beregninger. Med millis() sjekker du om det er tid for neste oppgave, og ellers går programmet videre, slik at flere oppgaver kan dele samme loop().

Hvordan får jeg tilbake animasjonen på LED-matrisen?

Uno R4 WiFi leveres med en animasjon på matrisen, og den blir borte når du laster opp en egen skisse. Last opp File > Examples > LED_Matrix > MatrixIntro for å få den tilbake.

Kan jeg ødelegge kortet?

Ja, hvis en pinne må levere mer enn 8 mA, eller hvis du kobler 5V direkte til GND. Koble alltid om med USB-kabelen trukket ut, bruk motstand foran LED-er, og ikke koble mer enn 3,3 V til Qwiic-kontakten eller ESP-kontakten ved USB-porten.

Trenger jeg å lodde?

Nei. Alle eksemplene bygges på et loddefritt koblingsbrett med ledninger hann-hann.

Kilder og videre lesing

Pinner, strømgrense og kontakter er kontrollert mot databladet for Uno R4 WiFi og Arduinos brukerhåndbok for kortet. Kodeeksemplene bygger på Arduinos innebygde eksempler, guiden for LED-matrisen og WiFi-eksemplene for Uno R4 WiFi.

Vil du få noe til å bevege seg, viser guiden om trinnmotor med Arduino hvordan Uno R4 WiFi styrer fart, retning og vinkel med den samme potensiometer- og knappekoblingen som her.

Et annet neste steg er å lese en ekte sensor: guiden om jordfuktighetssensor med Arduino eller ESP32 bruker den samme analogRead() som potensiometeret. Når skissene blir store, viser Arduino IDE, PlatformIO eller ESP-IDF hvordan du organiserer prosjektet, og oversikten over programmering med elektronikk viser hvilke plattformer du kan prøve etterpå.

Alle guider

Produkter omtalt i denne guiden

Produktene som brukes og sammenlignes i guiden, med pris og lagerstatus.