LED-Vorwiderstand berechnen & Lauflicht mit Arduino: Ohmsches Gesetz in der Praxis

Fast jedes Elektronik-Projekt fängt mit einer LED an – und viele scheitern genau hier. Klemmt man eine LED direkt an 5 Volt, blitzt sie kurz hell auf und ist dann tot. Der Grund: LEDs regeln ihren Strom nicht selbst, sie brauchen einen Vorwiderstand. In diesem Grundlagen-Guide lernst du, das Ohmsche Gesetz praktisch anzuwenden, den passenden Widerstand für jede LED-Farbe zu berechnen, den Farbcode-Ring zu lesen – und baust anschließend drei kleine Klassiker auf dem Breadboard: ein Knight-Rider-Lauflicht, eine funktionierende Ampel und ein per Poti dimmbares LED-Band. Danach ist „LED plus Widerstand“ für dich kein Rätsel mehr, sondern Routine.

Warum überhaupt ein Vorwiderstand?

Eine LED ist ein Halbleiter mit einer festen Durchlassspannung (Vorwärtsspannung). Ist die anliegende Spannung höher als diese Schwelle, steigt der Strom nahezu ungebremst an – die LED überhitzt und brennt durch. Der Vorwiderstand „frisst“ die überschüssige Spannung und begrenzt den Strom auf einen sicheren Wert, typischerweise 10 bis 20 Milliampere bei einer normalen 3- oder 5-mm-LED.

ℹ️ Die Kernidee: LED und Widerstand liegen in Reihe. Die Versorgungsspannung teilt sich auf beide auf: Ein Teil fällt über der LED ab (ihre Durchlassspannung), der Rest über dem Widerstand. Genau diesen Rest nutzen wir, um den Strom einzustellen.

Das Ohmsche Gesetz – die eine Formel, die du brauchst

Das Ohmsche Gesetz verbindet Spannung (U), Strom (I) und Widerstand (R):

U = R * I     ->   R = U / I     ->   I = U / R

Für den LED-Vorwiderstand brauchen wir die umgestellte Form. Die Spannung über dem Widerstand ist die Versorgungsspannung minus die Durchlassspannung der LED:

R = (U_quelle - U_LED) / I_LED

Beispiel: rote LED an 5 V, Zielstrom 15 mA
U_LED (rot)  = 2,0 V
I_LED        = 0,015 A

R = (5 V - 2,0 V) / 0,015 A = 3,0 V / 0,015 A = 200 Ohm

200 Ω gibt es nicht als Standardwert – du nimmst den nächsthöheren, also 220 Ω. Etwas mehr Widerstand bedeutet etwas weniger Strom und damit eine minimal dunklere, aber länger lebende LED. Im Zweifel immer aufrunden.

Durchlassspannung je Farbe

Die Durchlassspannung hängt vom Halbleitermaterial und damit von der Farbe ab. Diese Richtwerte reichen für die Praxis:

LED-Farbe Durchlassspannung Vorwiderstand an 5 V (bei 15 mA)
Rot ~2,0 V 220 Ω
Gelb ~2,1 V 220 Ω
Grün (Standard) ~2,2 V 220 Ω
Blau ~3,0 V 150 Ω
Weiß ~3,2 V 120 Ω

⚠️ 3,3 V statt 5 V? An einem ESP32 oder Raspberry Pi Pico liegen die GPIOs bei 3,3 V. Rechne dann mit U_quelle = 3,3 V. Für eine blaue oder weiße LED (Durchlassspannung ~3 V) bleibt dann kaum Spannung für den Widerstand – sie leuchtet nur schwach. Rote und grüne LEDs sind an 3,3 V unkritisch.

Widerstands-Farbcode lesen

Aus dem Sortiment brauchst du den richtigen Wert – den verraten die farbigen Ringe. Bei einem 4-Ring-Widerstand sind die ersten beiden Ringe Ziffern, der dritte der Multiplikator, der vierte die Toleranz.

Farbe Ziffer Multiplikator
Schwarz 0 x1
Braun 1 x10
Rot 2 x100
Orange 3 x1.000
Gelb 4 x10.000
Grün 5 x100.000
Blau 6 x1.000.000

Beispiel 220 Ω: Rot (2) – Rot (2) – Braun (x10) = 22 × 10 = 220 Ω. Der vierte Ring (meist Gold) steht für 5 % Toleranz. Wer sich unsicher ist, misst einfach mit einem Multimeter nach.

Was du brauchst

1x Arduino UNO R3 (oder Nano V3) – Zum Produkt
3mm LED-Sortiment (100er Box, alle Farben) – Zum Produkt
Widerstands-Sortiment 600 Stück (10Ω–10MΩ) – Zum Produkt
1x Solderless Breadboard 400 Kontakte – Zum Produkt
1x Rotary Encoder / Poti-Modul (für das Dimmer-Projekt) – Zum Produkt

Projekt 1: Knight-Rider-Lauflicht

Der Klassiker: Fünf LEDs, die wie beim Auto aus der Serie hin- und herwandern. Steck fünf LEDs mit je einem 220-Ω-Vorwiderstand an die Pins D2 bis D6 (langes Beinchen über den Widerstand zum Pin, kurzes Beinchen an GND).

const int leds[] = {2, 3, 4, 5, 6};
const int anzahl = 5;
const int tempo = 80;   // ms pro Schritt

void setup() {
  for (int i = 0; i < anzahl; i++) {
    pinMode(leds[i], OUTPUT);
  }
}

void loop() {
  // hin
  for (int i = 0; i < anzahl; i++) {
    digitalWrite(leds[i], HIGH);
    delay(tempo);
    digitalWrite(leds[i], LOW);
  }
  // zurueck (die Enden nicht doppelt)
  for (int i = anzahl - 2; i > 0; i--) {
    digitalWrite(leds[i], HIGH);
    delay(tempo);
    digitalWrite(leds[i], LOW);
  }
}

ℹ️ Array statt Copy-Paste: Statt fünfmal denselben Code zu schreiben, legst du die Pins in ein Array und läufst mit einer Schleife drüber. Willst du später acht LEDs, änderst du nur das Array und anzahl – der Rest bleibt gleich.

Projekt 2: Ampel mit realistischer Schaltfolge

Rot, Gelb, Grün – aber richtig, inklusive der Rot-Gelb-Phase wie bei einer echten deutschen Ampel. LEDs an D8 (rot), D9 (gelb) und D10 (grün), jeweils mit 220-Ω-Vorwiderstand.

const int rot  = 8;
const int gelb = 9;
const int gruen = 10;

void setup() {
  pinMode(rot, OUTPUT);
  pinMode(gelb, OUTPUT);
  pinMode(gruen, OUTPUT);
}

void alleAus() {
  digitalWrite(rot, LOW);
  digitalWrite(gelb, LOW);
  digitalWrite(gruen, LOW);
}

void loop() {
  // Rot
  alleAus();
  digitalWrite(rot, HIGH);
  delay(4000);

  // Rot + Gelb (gleich gehts los)
  digitalWrite(gelb, HIGH);
  delay(1500);

  // Gruen
  alleAus();
  digitalWrite(gruen, HIGH);
  delay(4000);

  // Gelb (gleich rot)
  alleAus();
  digitalWrite(gelb, HIGH);
  delay(1500);
}

💡 Erweiterung: Hänge eine zweite, gegenläufige Ampel für die Querstraße dran oder einen Fußgänger-Taster. Genau so lernt man Zustandsautomaten – der nächste Schritt weg von reinen delay()-Abfolgen hin zu millis()-basierter Ablaufsteuerung.

Projekt 3: LED per Poti dimmen (PWM)

Bisher waren LEDs nur an oder aus. Mit PWM (Pulsweitenmodulation) regelst du die Helligkeit stufenlos. Wir lesen einen Drehregler am Analogpin A0 und geben den Wert an eine LED an D9 (PWM-fähig) aus.

const int potiPin = A0;
const int ledPin  = 9;   // PWM (~)

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

void loop() {
  int roh = analogRead(potiPin);        // 0 .. 1023 (10-Bit-ADC)
  int hell = map(roh, 0, 1023, 0, 255); // auf 8-Bit-PWM skalieren
  analogWrite(ledPin, hell);

  Serial.print("Poti: ");
  Serial.print(roh);
  Serial.print("  ->  Helligkeit: ");
  Serial.println(hell);
  delay(50);
}

Der Analogeingang liefert 0 bis 1023, analogWrite() erwartet 0 bis 255 – die map()-Funktion rechnet den Bereich sauber um. Drehst du den Regler, dimmt die LED gleichmäßig von aus bis voll.

⚠️ Auch PWM braucht den Vorwiderstand! PWM schaltet die volle Spannung nur schnell an und aus – im eingeschalteten Moment fließt der ungebremste Strom. Der Vorwiderstand bleibt also Pflicht, egal ob digitalWrite() oder analogWrite().

Häufige Fehler

⚠️ LED falsch herum: Das lange Beinchen (Anode) gehört an Plus/Pin, das kurze (Kathode, auch an der abgeflachten Seite erkennbar) an GND. Falsch herum leuchtet sie nicht – nimmt aber keinen Schaden.

⚠️ Widerstand vergessen: Klassiker. Ohne Vorwiderstand überlebt eine LED an 5 V nur Sekunden. Lieber einen zu großen als gar keinen.

⚠️ Zu viele LEDs an einem Pin: Ein Arduino-Pin liefert maximal rund 20 mA, der gesamte Chip nur begrenzt Strom. Sollen viele LEDs gleichzeitig leuchten, versorge sie extern über einen Transistor statt direkt aus dem Pin.

⚠️ Falscher Multiplikator abgelesen: 220 Ω (rot-rot-braun) und 22.000 Ω (rot-rot-orange) sehen sich ähnlich. Bei 22 kΩ bleibt die LED fast dunkel – im Zweifel nachmessen.

🚀 Dein Grundlagen-Set bei MAKEROO

Mit diesen Bauteilen baust du alle drei Projekte nach:

Fazit

Der Vorwiderstand ist keine lästige Pflicht, sondern das erste Stück echte Elektronik, das du verstehst: eine Formel, drei Zahlen, fertig ist die sichere Beschaltung jeder LED. Mit dem Ohmschen Gesetz, der Farbtabelle und dem Widerstands-Farbcode hast du das Handwerkszeug, das dich durch fast jedes Einsteigerprojekt trägt – vom Lauflicht über die Ampel bis zum PWM-Dimmer. Und das Beste: Dieselbe Rechnung gilt für LEDs an jedem Board, ob UNO, Nano, ESP32 oder Pico. Wer sie einmal verinnerlicht hat, klemmt nie wieder eine LED blind an und hofft das Beste.

Zurück zum Blog