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.
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.
Uno er et godt begynderboard og en de-facto standard med masser af eksempler og tilbehør.
Det klassiske “hej verden” for hardware. Brug den indbyggede LED på pin 13 (alias LED_BUILTIN).
// Blink: indbygget LED blinker hvert sekund
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}
Øvelse: prøv kortere/længere delays og observer blinkhastigheden.
Forbind en ekstern LED via en seriemodstand (220–330 Ω) til fx pin 9 og GND.
// Blink på ekstern LED på pin 9
const int ledPin = 9;
void setup(){ pinMode(ledPin, OUTPUT); }
void loop(){
digitalWrite(ledPin, HIGH); delay(500);
digitalWrite(ledPin, LOW); delay(500);
}
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”.)
if…else. Løkker gentager noget: for, while, do while.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);
}
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.
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}
// 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); }
}
// 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);
}
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).
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}