Helligkeit messen ist eines der nützlichsten Einsteiger-Themen, weil du damit sehr schnell lernst, wie analoge Sensoren am Arduino Uno funktionieren. Ein Lichtsensor (LDR) am analogen Eingang ist dabei der Klassiker: günstig, robust, leicht zu verkabeln und ideal, um automatische Lichtsteuerungen, Dämmerungsschalter, Belichtungsanzeigen oder einfache „Smart-Home“-Funktionen zu bauen. Ein LDR (Light Dependent Resistor) ändert seinen Widerstand abhängig von der Lichtmenge – bei viel Licht sinkt der Widerstand, bei wenig Licht steigt er. Der Arduino Uno kann Widerstand jedoch nicht direkt messen. Stattdessen baust du mit dem LDR und einem festen Widerstand einen Spannungsteiler und liest die entstehende Spannung am analogen Eingang aus. Genau hier passieren die typischen Anfängerfehler: falscher Widerstandswert, keine saubere Masse, unklare Verdrahtung, „springende“ Messwerte oder Erwartungen wie „der Arduino zeigt Lux an“. In Wahrheit liefert der Analog-Digital-Wandler zunächst nur Rohwerte. Diese kannst du zuverlässig in Prozent oder in einen plausiblen Helligkeitsindex umrechnen – und mit etwas Kalibrierung sogar näherungsweise auf reale Beleuchtungszustände beziehen. In diesem Artikel lernst du verständlich, wie du einen LDR korrekt anschließt, wie du analoge Werte sauber ausliest, wie du Messrauschen reduzierst und wie du daraus eine stabile Logik für deine Projekte ableitest – vom einfachen Nachtlicht bis zur robusten Helligkeitsregelung.
Was ist ein LDR und wie reagiert er auf Licht?
Ein LDR ist ein lichtabhängiger Widerstand. Er besteht aus einem Material, dessen Leitfähigkeit mit steigender Lichtintensität zunimmt. Dadurch sinkt der Widerstand bei Helligkeit und steigt bei Dunkelheit. Das klingt einfach, bringt aber zwei wichtige Besonderheiten mit sich: Erstens ist die Kennlinie nicht linear, und zweitens unterscheiden sich LDRs je nach Hersteller und Bauform deutlich. Für Maker-Projekte ist das kein Problem – du solltest nur verstehen, dass „100 Lux“ nicht direkt aus einem Standard-LDR herausfällt.
- Helles Licht: niedriger Widerstand
- Dunkelheit: hoher Widerstand
- Kennlinie: meist nicht linear, eher logarithmisch
- Streuung: Werte unterscheiden sich zwischen Bauteilen
Deshalb ist ein LDR ideal für relative Messungen („heller/dunkler“) und für Schwellwertlogik, weniger für exakte Lux-Messungen.
Warum der Arduino nicht den Widerstand misst, sondern eine Spannung
Der Arduino Uno hat analoge Eingänge (A0–A5), die Spannungen messen – genauer gesagt: Der Analog-Digital-Wandler (ADC) wandelt eine Eingangsspannung in einen digitalen Zahlenwert um. Beim Uno sind das typischerweise 10 Bit Auflösung, also Werte von 0 bis 1023. Damit lässt sich eine Spannung zwischen 0 V und der Referenzspannung abbilden. Um einen LDR auszulesen, musst du seinen Widerstand in eine messbare Spannung „übersetzen“. Das macht der Spannungsteiler.
Grundlagen zur Funktion von analogRead und analogen Eingängen sind in der Arduino-Referenz dokumentiert: analogRead() – Arduino Language Reference.
Der Spannungsteiler: Das zentrale Schaltungskonzept für den LDR
Ein Spannungsteiler besteht aus zwei Widerständen in Reihe zwischen 5 V und GND. Die Spannung am Verbindungspunkt hängt vom Verhältnis der Widerstände ab. Wenn du einen dieser Widerstände durch den LDR ersetzt, verändert sich die Spannung abhängig vom Licht – und genau diese Spannung liest du am analogen Eingang.
Standard-Schaltung mit LDR und Festwiderstand
- 5V → LDR → Messpunkt → Festwiderstand → GND
- Messpunkt → analoger Eingang (z. B. A0)
Je nachdem, ob der LDR oben (an 5V) oder unten (an GND) sitzt, steigt oder fällt der Analogwert bei zunehmendem Licht. Für viele Anwendungen ist das egal – wichtig ist, dass du die Richtung kennst und deine Logik entsprechend aufbaust.
Welchen Widerstand soll ich wählen?
Der Festwiderstand bestimmt die Empfindlichkeit im relevanten Bereich. Ein häufig verwendeter Wert ist 10 kΩ, weil er für viele LDRs einen praktikablen Messbereich ergibt. Wenn du vor allem sehr dunkle Umgebungen unterscheiden willst, kann ein höherer Widerstand sinnvoll sein. Wenn du sehr helle Bereiche besser auflösen willst, kann ein niedrigerer Widerstand passen. Die „richtige“ Wahl ist daher anwendungsabhängig.
- 10 kΩ: guter Allround-Startwert
- höherer Widerstand: mehr Auflösung im Dunkeln (je nach LDR)
- niedrigerer Widerstand: mehr Auflösung bei Helligkeit
Verdrahtung am Arduino Uno: So schließt du den LDR korrekt an
Die praktische Verdrahtung ist schnell erledigt, aber es lohnt sich, sie sauber zu machen. Wackelige Breadboard-Kontakte oder fehlende Masseverbindungen führen zu „springenden“ Werten und frustrieren unnötig.
Benötigte Komponenten
- 1× LDR (Fotowiderstand)
- 1× Festwiderstand (z. B. 10 kΩ)
- Breadboard und Jumperkabel
- Arduino Uno
Schritt-für-Schritt-Verkabelung
- LDR mit einem Bein an 5V anschließen
- Andere Seite des LDR an den Messpunkt führen
- Festwiderstand vom Messpunkt nach GND
- Messpunkt mit A0 verbinden
- GND sicher verbinden, keine „lose“ Masse
Wenn du den Arduino Uno und seine Pins nachschlagen willst, hilft die offizielle Hardware-Seite: Arduino Uno Rev3 Dokumentation.
analogRead verstehen: Was bedeuten die Werte 0 bis 1023?
analogRead liefert einen Rohwert, der proportional zur Eingangsspannung ist. Viele Einsteiger erwarten „Lux“ oder „Prozent“. Der Rohwert ist jedoch nur eine digitale Repräsentation der Spannung am Pin. Wenn du mit der Standard-Referenzspannung arbeitest, entspricht 0 etwa 0 V und 1023 etwa 5 V (genauer: nahe der Referenzspannung). Die Umrechnung ist in der Praxis nützlich, wenn du Schwellenwerte sauber definieren oder den LDR-Widerstand näherungsweise berechnen möchtest.
Typische Interpretationen der Rohwerte
- Rohwert: schnell, gut für Schwellwerte
- Prozentwert: anschaulich für UI (z. B. LCD-Ausgabe)
- „Helligkeitsindex“: stabile Skala, kalibriert auf dein Projekt
Prozent umrechnen: sinnvoll für Anzeigen und Grenzwerte
Für viele Anwendungen reicht eine einfache Skalierung auf 0–100%. Dabei ist wichtig: Je nach Schaltung kann „100%“ hell oder dunkel bedeuten. Du entscheidest, welche Richtung für dein Projekt intuitiver ist.
Messwerte stabilisieren: Warum der Analogwert manchmal „zittert“
Ein LDR liefert selten völlig stabile Werte. Licht flackert (Netzfrequenz, LEDs, Bildschirme), Schatten verändern sich, und auch der ADC kann leicht rauschen. Außerdem wirkt das Breadboard wie eine kleine Antenne. Für robuste Projekte solltest du daher glätten und plausibilisieren.
Glättung durch Mittelwertbildung
- Mehrere Messungen hintereinander lesen
- Durchschnitt bilden
- Optional: Messungen über Zeit verteilen (nicht alle sofort hintereinander)
Medianfilter gegen Ausreißer
Wenn einzelne Messungen stark abweichen, ist ein Medianfilter oft besser als ein Mittelwert. Für Einsteiger reicht auch eine einfache Variante: mehrere Werte sammeln, den kleinsten und größten verwerfen und den Rest mitteln.
Hysterese: Dämmerungsschalter ohne Flattern
Wenn du bei einem Schwellwert ein Licht einschaltest, kann es bei Grenzbereich-Flackern ständig an/aus gehen. Hysterese löst das: Du definierst zwei Schwellen – eine zum Einschalten und eine zum Ausschalten. So wird das Verhalten stabil und wirkt „professionell“.
Schwellwerte richtig setzen: Kalibrieren statt raten
Viele Projekte scheitern nicht an der Technik, sondern an willkürlichen Schwellwerten. LDRs reagieren stark auf Umgebungsbedingungen. Deshalb ist es sinnvoll, die Werte für „hell“ und „dunkel“ im realen Einsatz zu messen und daraus Grenzen abzuleiten.
Praktischer Kalibrier-Workflow
- Rohwerte im seriellen Monitor ausgeben
- Messwerte in typischen Situationen notieren (Tag, Dämmerung, Nacht)
- Schwellwerte dazwischen wählen
- Hysterese hinzufügen
Für die Ausgabe und Fehlersuche ist der serielle Monitor ideal. Hintergrund und Funktionen findest du in der Arduino-Referenz: Serial – Arduino Language Reference.
Lux messen mit LDR: Was möglich ist und was nicht
Ein LDR ist kein kalibrierter Lux-Sensor. Du kannst Lux nicht „einfach so“ präzise bestimmen, weil Kennlinie und Bauteiltoleranz stark streuen. Trotzdem kannst du eine grobe Annäherung erreichen, wenn du deinen konkreten LDR kalibrierst und die Kennlinie modellierst. Für die meisten Maker-Projekte ist das aber unnötig. Meist genügt ein Helligkeitsindex oder Prozentwert, der zuverlässig zwischen Zuständen unterscheidet.
- Geeignet: hell/dunkel, relative Veränderungen, Dämmerungserkennung
- Begrenzt geeignet: reproduzierbare Lux-Werte ohne individuelle Kalibrierung
- Alternative: digitale Lux-Sensoren mit I2C für genauere Messungen
Typische Projekte mit LDR: Vom Nachtlicht bis zur automatischen Anzeige
Ein LDR ist ein „Baukasten-Sensor“. Mit wenig Zusatzhardware kannst du viele nützliche Funktionen umsetzen. Der Schlüssel ist, die Messung sauber zu interpretieren und die Steuerlogik stabil zu halten.
- Dämmerungsschalter: LED oder Relais bei Dunkelheit einschalten
- Display-Helligkeit: LCD-Backlight abhängig vom Umgebungslicht steuern
- Belichtungsanzeige: Helligkeitsbalken auf Display oder LED-Bar
- Alarm bei Lichtwechsel: z. B. Schranktür geöffnet, Licht fällt auf Sensor
- Robotik: Lichtquelle suchen oder Licht meiden (einfaches Verhalten)
LDR mit PWM kombinieren: LED-Helligkeit automatisch regeln
Ein sehr anschauliches Projekt ist die automatische LED-Dimmung: Je dunkler der Raum, desto heller leuchtet die LED – oder umgekehrt. Dafür nutzt du PWM-Ausgänge des Arduino. Wichtig: analogWrite erzeugt PWM und ist nicht dasselbe wie analogRead. Du kombinierst also einen analogen Sensorwert (LDR) mit einem PWM-Ausgang.
Für Grundlagen zu analogWrite und PWM ist die Referenz hilfreich: analogWrite() – Arduino Language Reference.
Nicht-blockierender Sketch: Helligkeit messen, ohne delay()-Probleme
Viele Einsteiger messen und warten in einer Schleife. Das funktioniert, aber sobald du Taster, Displays oder weitere Sensoren integrieren willst, wird es unpraktisch. Eleganter ist eine Zeitsteuerung über millis(), mit der du Messungen in Intervallen ausführst und die loop() frei hältst.
- Messung z. B. alle 50–200 ms aktualisieren
- Parallel: LED steuern, Display aktualisieren, Eingaben abfragen
- Keine blockierenden delays, dadurch bessere Reaktionsfähigkeit
Die offizielle Referenz zu millis() findest du hier: millis() – Arduino Language Reference.
Fehlersuche: Wenn die Werte immer 0, immer 1023 oder völlig zufällig sind
Wenn ein analoger Eingang nur Extremwerte liefert oder stark springt, ist fast immer die Verdrahtung oder der Spannungsteiler das Problem. Mit ein paar Checks kannst du das schnell klären.
Immer 0
- Messpunkt liegt dauerhaft auf GND (Kurzschluss oder falsche Verdrahtung)
- A0 nicht wirklich am Messpunkt angeschlossen
- LDR falsch eingebunden oder defekt (selten)
Immer 1023
- Messpunkt liegt dauerhaft auf 5V (Kurzschluss oder falsche Verdrahtung)
- Festwiderstand fehlt oder ist nicht mit GND verbunden
- Analogpin hängt „in der Luft“ und wird zufällig hochgezogen
Werte springen stark
- Wackelkontakte im Breadboard
- Fehlende oder schlechte Masseführung
- Störquellen in der Nähe (Motoren, Relais, lange Leitungen)
- Kein Filter/Mittelwert – Rohwerte werden direkt verwendet
Weiterführende Informationsquellen
- analogRead(): Analoge Werte am Arduino Uno auslesen
- analogWrite(): PWM-Ausgabe für LED-Dimmung und Steuerungen
- millis(): Zeitsteuerung ohne delay()
- Serial: Werte ausgeben, Kalibrierung und Debugging
- Arduino Uno Rev3: Hardware-Überblick und Pins
IoT-PCB-Design, Mikrocontroller-Programmierung & Firmware-Entwicklung
PCB Design • Arduino • Embedded Systems • Firmware
Ich biete professionelle Entwicklung von IoT-Hardware, einschließlich PCB-Design, Arduino- und Mikrocontroller-Programmierung sowie Firmware-Entwicklung. Die Lösungen werden zuverlässig, effizient und anwendungsorientiert umgesetzt – von der Konzeptphase bis zum funktionsfähigen Prototyp.
Diese Dienstleistung richtet sich an Unternehmen, Start-ups, Entwickler und Produktteams, die maßgeschneiderte Embedded- und IoT-Lösungen benötigen. Finden Sie mich auf Fiverr.
Leistungsumfang:
-
IoT-PCB-Design & Schaltplanerstellung
-
Leiterplattenlayout (mehrlagig, produktionstauglich)
-
Arduino- & Mikrocontroller-Programmierung (z. B. ESP32, STM32, ATmega)
-
Firmware-Entwicklung für Embedded Systems
-
Sensor- & Aktor-Integration
-
Kommunikation: Wi-Fi, Bluetooth, MQTT, I²C, SPI, UART
-
Optimierung für Leistung, Stabilität & Energieeffizienz
Lieferumfang:
-
Schaltpläne & PCB-Layouts
-
Gerber- & Produktionsdaten
-
Quellcode & Firmware
-
Dokumentation & Support zur Integration
Arbeitsweise:Strukturiert • Zuverlässig • Hardware-nah • Produktorientiert
CTA:
Planen Sie ein IoT- oder Embedded-System-Projekt?
Kontaktieren Sie mich gerne für eine technische Abstimmung oder ein unverbindliches Angebot. Finden Sie mich auf Fiverr.

