Arduino-startpakke: Dine første fem prosjekter

NybegynnerKode på GitHub7 min lesetid

Har du kjøpt en Arduino-startpakke og lurer på hvor du skal begynne? Her er fem små prosjekter som bygger på hverandre – fra én blinkende LED til et trafikklys med fotgjengerknapp. Alt du trenger ligger i de fleste startpakker, og all koden er testet og kompilert.

Hva du trenger

  • Arduino UNO R3 eller kompatibelt kort med USB-kabel
  • Breadboard og jumperledninger
  • 3–4 LED-er (rød, gul, grønn), 220 Ω-motstander
  • Trykknapp, potmeter (10 kΩ) og passiv summer
  • Arduino IDE 2 på PC eller Mac

Alt dette følger med i for eksempel Arduino UNO R3 Startkit (830 deler) eller ELEGOO UNO R3 Komplett Startsett.

Før du starter: installer og test

  1. Last ned Arduino IDE 2 fra arduino.cc og installer.
  2. Koble UNO-en til med USB. Velg Tools → Board → Arduino UNO og riktig port under Tools → Port.
  3. Kort med CH340-brikke (de fleste kompatible kort) trenger kanskje en driver på eldre Windows – søk etter «CH340 driver» hvis porten ikke dukker opp.

Tre regler som sparer deg for feil: LED-er har retning – det lange beinet er pluss. Alltid en motstand i serie med LED-en (220 Ω er trygt). Og koble fra USB før du flytter ledninger.

Slik fungerer breadboardet

Hullene i et breadboard er koblet sammen i rader på fem. De to lange stripene langs kantene er strømskinner – koble den ene til 5V og den andre til GND, så har du strøm og jord overalt på brettet. Kanalen på midten deler brettet i to, slik at en knapp eller en brikke kan stå over kanalen uten å kortslutte.

Koble pinne 8 til en 220 Ω-motstand, videre til det lange beinet på LED-en, og det korte beinet til GND. Last opp koden:

// Blinker en ekstern LED på pinne 8.
// Kobling: pinne 8 -> 220 ohm motstand -> LED (langt bein, +) -> LED (kort bein, -) -> GND

const int LED_PIN = 8;

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

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

pinMode gjør pinnen til en utgang, og digitalWrite setter den til 5 V (HIGH) eller 0 V (LOW). Endre tallene i delay() for å blinke raskere eller saktere.

Prosjekt 2: Knapp som av/på-bryter

Sett knappen over kanalen på breadboardet. Koble det ene beinet til pinne 2 og det andre til GND. Vi bruker Arduinoens innebygde pull-up-motstand, så pinnen er HIGH når knappen er sluppet og LOW når den trykkes.

// Et trykk på knappen slår LED-en av eller på (av/på-bryter i programvare).
// Kobling: knapp mellom pinne 2 og GND (intern pull-up), LED + 220 ohm på pinne 8.

const int KNAPP_PIN = 2;
const int LED_PIN = 8;

bool ledPaa = false;
int forrigeKnapp = HIGH;
unsigned long sistEndret = 0;

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

void loop() {
  int knapp = digitalRead(KNAPP_PIN);
  // Reager bare på overgangen fra sluppet til trykket, og ignorer prell de første 50 ms
  if (knapp == LOW && forrigeKnapp == HIGH && millis() - sistEndret > 50) {
    ledPaa = !ledPaa;
    digitalWrite(LED_PIN, ledPaa ? HIGH : LOW);
    sistEndret = millis();
  }
  forrigeKnapp = knapp;
}

Mekaniske knapper «preller» – kontakten spretter noen millisekunder når du trykker. Derfor sjekker koden at det har gått minst 50 ms siden forrige endring. Uten dette kan ett trykk bli registrert som flere.

Prosjekt 3: Dimmer med potmeter

Et potmeter er en justerbar spenningsdeler. Koble ytterbeina til 5V og GND og midtbeinet til A0. Flytt LED-en til pinne 9 – den er merket med ~, som betyr at den kan gi PWM.

// Potmeteret styrer lysstyrken på LED-en med PWM.
// Kobling: potmeter ytterbein til 5V og GND, midtbein til A0. LED + 220 ohm på pinne 9 (PWM, merket ~).

const int POT_PIN = A0;
const int LED_PIN = 9;

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

void loop() {
  int verdi = analogRead(POT_PIN);          // 0–1023
  int lysstyrke = map(verdi, 0, 1023, 0, 255); // PWM tar 0–255
  analogWrite(LED_PIN, lysstyrke);
  Serial.println(verdi);                    // Se verdien i seriellmonitor/plotter
  delay(20);
}

analogRead gir et tall fra 0 til 1023, og analogWrite tar 0–255, derfor map(). Åpne Tools → Serial Plotter mens du vrir på potmeteret, så ser du verdien som en graf.

Prosjekt 4: Trafikklys med fotgjengerknapp

Nå kombinerer vi det du har lært. Rød LED på pinne 10, gul på 11 og grønn på 12 – hver med sin egen 220 Ω-motstand. Knappen står fortsatt på pinne 2.

// Trafikklys med fotgjengerknapp.
// Kobling: rød LED pinne 10, gul pinne 11, grønn pinne 12 (hver med 220 ohm), knapp mellom pinne 2 og GND.

const int ROD = 10;
const int GUL = 11;
const int GRONN = 12;
const int KNAPP = 2;

void settLys(bool r, bool g, bool gr) {
  digitalWrite(ROD, r);
  digitalWrite(GUL, g);
  digitalWrite(GRONN, gr);
}

void setup() {
  pinMode(ROD, OUTPUT);
  pinMode(GUL, OUTPUT);
  pinMode(GRONN, OUTPUT);
  pinMode(KNAPP, INPUT_PULLUP);
  settLys(LOW, LOW, HIGH); // Grønt for bilene
}

void loop() {
  if (digitalRead(KNAPP) == LOW) {
    settLys(LOW, HIGH, LOW);  // Gult
    delay(2000);
    settLys(HIGH, LOW, LOW);  // Rødt – fotgjengerne går
    delay(5000);
    settLys(HIGH, HIGH, LOW); // Rødt + gult
    delay(1500);
    settLys(LOW, LOW, HIGH);  // Grønt igjen
    delay(3000);              // Minste grønntid før neste trykk
  }
}

Funksjonen settLys() gjør koden lettere å lese: i stedet for tre linjer med digitalWrite hver gang skriver du hvilke lys som skal være på. Prøv å legge til en egen grønn fotgjenger-LED.

Prosjekt 5: Melodi på summeren

Startpakker har ofte to summere. Den aktive piper av seg selv når den får strøm, men bare på én tone. Den passive (ofte uten klistremerke, og med synlig kretskort på undersiden) kan spille alle toner. Koble den passive mellom pinne 6 og GND.

// Spiller en kort tonerekke på en passiv summer når knappen trykkes.
// Kobling: passiv summer mellom pinne 6 og GND, knapp mellom pinne 2 og GND.
// En aktiv summer piper bare på én tone – bruk den passive (ofte uten klistremerke).

const int SUMMER = 6;
const int KNAPP = 2;

// C-dur skala, frekvenser i Hz
const int toner[] = {262, 294, 330, 349, 392, 440, 494, 523};
const int ANTALL = sizeof(toner) / sizeof(toner[0]);

void setup() {
  pinMode(KNAPP, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(KNAPP) == LOW) {
    for (int i = 0; i < ANTALL; i++) {
      tone(SUMMER, toner[i], 200);
      delay(250);
    }
    noTone(SUMMER);
  }
}

tone() lager en firkantbølge med frekvensen du oppgir. 440 Hz er tonen A, som orkestre stemmer etter.

Feilsøking

  • LED-en lyser ikke: snu den. Sjekk at motstanden og LED-en står i samme rad, og at GND faktisk er koblet til Arduinoen.
  • Opplasting feiler: feil port eller kort valgt, eller seriellmonitoren i et annet program holder porten.
  • Knappen reagerer tilfeldig: knappen står sannsynligvis feil vei – beina på samme side er ofte koblet sammen internt. Snu den 90 grader.

Neste steg

Når dette sitter, er sensorer det naturlige neste steget. Se guiden om 37-i-1-sensorsettet, eller gå videre til WiFi med Kom i gang med ESP32.

Koden på GitHub
All kode fra denne guiden – kompilert og klar til bruk – ligger i det åpne repoet vårt: robonordic-prosjekter/mikrokontrollere/arduino-startpakke

Mer om kom i gang

Se alle →