Arduino Uno – Kom i gang (uoriginale boards virker også)

Denne hands-on vejledning fører dig gennem de første skridt med Arduino Uno: installation af IDE, Blink, digital input, analog ind (potentiometer), Serial Monitor, PWM og fade, samt idéer til næste projekter. Progressionen er inspireret af et klassisk introduktionsforløb (IDA). Uoriginale (klon)-boards er normalt helt fine at bruge.

1) Hvad er en Arduino Uno?

Open-source platform til at bygge små interaktive systemer. Uno-boardet (ATmega328P) har digitale ind/udgange, analoge indgange (10-bit) og kan forbindes til din computer via USB. Du kan programmere det i Arduino IDE og styre sensorer, lys, motorer m.m.

  • 8-bit MCU @ 16 MHz, 32 KB flash, 2 KB RAM, 1 KB EEPROM
  • ~20 digitale I/O (hvoraf 6 kan bruges til PWM)
  • 6 analoge indgange (0-1023 svarende til ~0-5 V)
  • Forsyning via USB eller ekstern 7-12 V

Uno er et godt begynderboard og en de-facto standard med masser af eksempler og tilbehør.

Arduino og verdenen (inputs/outputs/USB)
Arduino forbinder software med den fysiske verden via I/O.

2) Kom i gang – software & tilslutning

1
Installer Arduino IDE fra arduino.cc (Windows/macOS/Linux).
2
Tilslut Uno via USB. Vælg korrekt port under Værktøjer → Port og board Arduino Uno.
3
Åbn et eksempel, fx Filer → Eksempler → 01.Basics → Blink, og upload med pil-knappen.
I/O og porte på Uno
Oversigt over I/O-porte på Uno.
Uno tilbehør
Typisk tilbehør: ledninger, modstande, dioder m.m.

4) True/False og digital logik

I Arduino repræsenteres sand/falsk som true/false (eller 1/0). På digitale pins skrives der typisk HIGH (≈5 V) eller LOW (0 V). Tip: HIGH er “tænd”, LOW er “sluk”.)

Små beslutninger i koden laves med ifelse. Løkker gentager noget: for, while, do while.

5) Digital input – læs en trykknap

Vi bruger den interne pull-up modstand, så knappen læser LOW når den trykkes (aktiv lav).


// Trykknap styrer LED (aktiv lav m. INPUT_PULLUP)
const int btnPin = 2;
const int ledPin = 9;

void setup(){
  pinMode(btnPin, INPUT_PULLUP);   // intern pull-up
  pinMode(ledPin, OUTPUT);
}

void loop(){
  bool pressed = (digitalRead(btnPin) == LOW);
  digitalWrite(ledPin, pressed ? HIGH : LOW);
}
    

6) Analog ind – potentiometer + Serial Monitor

Et potentiometer på A0 giver værdier 0–1023 (~0–5 V). Vi udlæser både rå værdi og beregnet spænding.


// Potentiometer på A0: vis råværdi og volt i Serial Monitor
const int potPin = A0;

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

void loop(){
  int raw = analogRead(potPin);          // 0..1023
  float voltage = raw * (5.0 / 1023.0);  // ca. volt
  Serial.print("Raw: "); Serial.print(raw);
  Serial.print("   Volt: "); Serial.println(voltage, 3);
  delay(100);
}
        

Åbn Værktøjer → Serial Monitor (9600 baud) for at se værdierne.

Potentiometer på A0
Potentiometer som spændingsdeler på A0.
Serial Monitor
Serial Monitor viser dine målinger.

7) Analog ud – PWM & fade

PWM (Pulse Width Modulation) slukker/tænder hurtigt og varierer “duty cycle”. På Uno er PWM-frekvensen ~490 Hz på de fleste PWM-pins, og værdierne skrives med analogWrite(pin, 0..255). :contentReference[oaicite:1]{index=1}

PWM princip
PWM: periodetid, pulstid og pausetid.
Duty cycle eksempler
Duty 10% vs. 80% giver svagt vs. kraftigt lys.
Flere duty-cycles
Flere duty-cycles illustreret.

Fade in / fade out (én LED)


// Blød fade på pin 9 (PWM)
const int ledPin = 9;

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

void loop(){
  for(int v=0; v<=255; v++){ analogWrite(ledPin, v); delay(8); }
  for(int v=255; v>=0; v--){ analogWrite(ledPin, v); delay(8); }
}
    

Potentiometer → lysstyrke


// Potmeter på A0 styrer PWM på pin 9
const int potPin = A0, ledPin = 9;

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

void loop(){
  int raw = analogRead(potPin);        // 0..1023
  int pwm = map(raw, 0, 1023, 0, 255); // skalering
  analogWrite(ledPin, pwm);
  delay(5);
}
    

8) Udvidelse: lille trafiklys

Byg tre LED’er (rød/gul/grøn) på hver sin digitale pin, og brug delay() til en simpel sekvens. Prøv bagefter at udskrive trinene til Serial Monitor for at følge programafviklingen. :contentReference[oaicite:2]{index=2}


// Simpelt trafiklys (ingen fodgængerknap)
const int LED_R = 8, LED_Y = 7, LED_G = 6;

void setup(){
  pinMode(LED_R, OUTPUT); pinMode(LED_Y, OUTPUT); pinMode(LED_G, OUTPUT);
  Serial.begin(9600);
}
void allOff(){ digitalWrite(LED_R,0); digitalWrite(LED_Y,0); digitalWrite(LED_G,0); }

void loop(){
  allOff(); digitalWrite(LED_R,1); Serial.println("RØD"); delay(2000);
  allOff(); digitalWrite(LED_R,1); digitalWrite(LED_Y,1); Serial.println("RØD+GUL"); delay(800);
  allOff(); digitalWrite(LED_G,1); Serial.println("GRØN"); delay(2000);
  allOff(); digitalWrite(LED_Y,1); Serial.println("GUL"); delay(800);
}
        

Øvelse: Tilføj en trykknap som beder om rødt lys (state-machine med switch).

Trafiklys idé
Idé til opstilling af et mini-trafiklys.

9) Hvor finder jeg hjælp?

  • Arduino Reference: alle funktioner og eksempler
  • Eksempelkode i IDE: Filer → Eksempler
  • Forum, YouTube og community-projekter

Husk at søge “arduino + dit problem” – der er næsten altid nogen, der har løst det før. :contentReference[oaicite:3]{index=3}

Mere tilbehør
Når du er klar til at udvide: sensorer, relæer, motorer, displays mv.