Bauteile · 5 Min. Lesezeit

Was ist ein LDR-Lichtsensor? Licht messen mit Arduino und automatisches Nachtlicht

Wie funktioniert ein LDR (Fotowiderstand)? Anschluss als Spannungsteiler, passenden Widerstand wählen, Licht mit analogRead lesen, Nachtlicht mit Hysterese, LDR-Modul, ESP32 und Pico sowie typische Fehler.

Ein LDR (Light Dependent Resistor) ist, wie der Name sagt, ein Widerstand, dessen Wert sich mit dem Licht ändert; man nennt ihn auch Fotowiderstand. Im Dunkeln ist sein Widerstand sehr hoch, je heller es wird, desto kleiner wird er. Straßenlaternen, die in der Dämmerung angehen, automatische Nachtlichter und lichtgesteuertes Spielzeug arbeiten mit diesem einfachen Bauteil. Er ist günstig, hat keine Polarität und wird mit einem Widerstand an den Arduino angeschlossen – ein idealer Einstieg für dein erstes Lichtprojekt.

LDR Fotowiderstand Lichtsensor
LDR: Das Zickzackmuster auf der Oberfläche ist eine lichtempfindliche Cadmiumsulfid-Schicht; die beiden Beinchen haben keine Polarität.

Wie funktioniert ein LDR?

Das Zickzackmuster auf dem LDR ist ein lichtempfindlicher Halbleiter aus Cadmiumsulfid (CdS). Fällt Licht darauf, setzen die Photonen Elektronen im Material frei, es leitet besser und der Widerstand sinkt. Diese Änderung ist nicht linear und relativ langsam (einige zehn Millisekunden). Deshalb eignet sich ein LDR nicht zum genauen Messen in Lux, sondern ideal für Entscheidungen wie "dunkel oder hell?" und grobe Lichtstufen.

UmgebungUngefährer LDR-Widerstand (GL5528)
Völlige Dunkelheit1 MΩ und mehr
Licht eines Nachtlichts (~1 Lux)50–100 kΩ
Dämmriger Raum (~10 Lux)10–20 kΩ
Heller Raum (~100 Lux)3–5 kΩ
Unter einer Schreibtischlampe (~1000 Lux)Etwa 1 kΩ
TageslichtEinige hundert Ω

Die Werte hängen vom Modell ab. Am häufigsten steckt der GL5528 in Bausätzen; seine Geschwister wie GL5516, GL5537 und GL5539 zeigen bei gleichem Licht andere Widerstände. Die Werte deines eigenen LDR findest du leicht heraus, indem du ihn mit einem Multimeter im Dunkeln und im Hellen misst.

Anschluss an den Arduino: der Spannungsteiler

Der Arduino misst Spannung, keinen Widerstand. Deshalb wird der LDR zusammen mit einem festen Widerstand als Spannungsteiler geschaltet: 5V → LDR → A0 → 10 kΩ → GND. Wird es heller, sinkt der Widerstand des LDR und die Spannung an A0 steigt. Die Spannung an A0 ergibt sich aus V = 5 × Rfest / (RLDR + Rfest); analogRead() macht daraus eine Zahl zwischen 0 und 1023. Verschiedene Widerstandswerte probierst du mit dem Rechner Spannungsteiler aus.

LichtLDR-WiderstandSpannung an A0analogRead
Völlige Dunkelheit1 MΩ0,05 V~10
Dämmriger Raum15 kΩ2,0 V~410
Heller Raum4 kΩ3,6 V~730
Unter der Schreibtischlampe1 kΩ4,5 V~930
Der feste Widerstand liefert das empfindlichste Ergebnis, wenn er nahe am LDR-Widerstand bei der Lichtstärke liegt, die dich interessiert. Für dämmrige Entscheidungen wie ein Nachtlicht passen 10–47 kΩ besser, um starkes Licht zu unterscheiden etwa 1 kΩ. Die 10 kΩ aus dem Bausatz sind für die meisten Projekte ein guter Anfang.

Lichtstärke mit dem Arduino lesen

Arduino (C++)
1const int LDR_PIN = A0;
2
3void setup() {
4  Serial.begin(9600);
5}
6
7void loop() {
8  int raw = analogRead(LDR_PIN);            // 0 (karanlık) – 1023 (aydınlık) / dark – bright
9  int percent = map(raw, 0, 1023, 0, 100);  // yüzde / percent
10  Serial.print("Ham / raw: ");
11  Serial.print(raw);
12  Serial.print("  Işık / light: %");
13  Serial.println(percent);
14  delay(500);
15}

Mit dem seriellen Plotter der Arduino IDE kannst du den Wert als Live-Diagramm verfolgen. Hältst du die Hand über den LDR, fällt die Kurve; leuchtest du mit einer Taschenlampe darauf, steigt sie. So findest du am einfachsten die richtige Schwelle für dein Projekt – direkt an der Stelle, an der der Sensor später sitzt.

Automatisches Nachtlicht: Schwelle und Hysterese

Das einfachste Nachtlicht sagt: "Ist der Wert unter 300, schalte die LED ein." Liegt das Licht aber genau um die Schwelle herum, schaltet die Lampe ständig ein und aus – noch schlimmer, wenn ihr eigenes Licht auf den LDR fällt. Die Lösung heißt Hysterese: zwei verschiedene Schwellen. Der folgende Code schaltet die Lampe ein, wenn das Licht unter 300 fällt, aber erst wieder aus, wenn es über 400 steigt; der Abstand dazwischen beseitigt das Flackern vollständig.

Arduino (C++)
1const int LDR_PIN = A0;
2const int LED_PIN = 9;
3const int ON_LEVEL = 300;    // bunun altında yak / turn on below this
4const int OFF_LEVEL = 400;   // bunun üstünde söndür / turn off above this
5
6bool lampOn = false;
7
8void setup() {
9  pinMode(LED_PIN, OUTPUT);
10}
11
12void loop() {
13  int light = analogRead(LDR_PIN);
14  if (!lampOn && light < ON_LEVEL) lampOn = true;
15  if (lampOn && light > OFF_LEVEL) lampOn = false;
16  digitalWrite(LED_PIN, lampOn ? HIGH : LOW);
17  delay(200);
18}
Platziere die Lampe so, dass sie den LDR nicht beleuchtet; fällt ihr Licht zurück auf den Sensor, schaltet sie sich selbst aus. Außerdem glättet der Mittelwert aus 10 Messungen kurze Sprünge durch einen vorbeiziehenden Schatten oder flackernde Leuchtstoffröhren.

Eine LED, die im Dunkeln heller leuchtet

Statt ein- und auszuschalten, kann die LED auch allmählich heller werden, wenn das Licht abnimmt. Die Funktion map() wandelt das gemessene Licht in einen umgekehrt proportionalen PWM-Wert um: Je dunkler der Raum, desto heller die LED, und umgekehrt. Denk daran, die LED an einen mit ~ markierten PWM-Pin anzuschließen (zum Beispiel 9).

Arduino (C++)
1void loop() {
2  int light = analogRead(A0);
3  int brightness = map(light, 100, 900, 255, 0);  // karanlık → parlak / dark → bright
4  analogWrite(9, constrain(brightness, 0, 255));
5  delay(50);
6}

LDR-Modul: digitaler und analoger Ausgang

Fertige LDR-Module tragen LDR, Teilerwiderstand, ein blaues Trimmpoti für die Schwelle und einen LM393-Komparator auf einer Platine. Der Pin AO liefert den analogen Ausgang des Spannungsteilers, der Pin DO nur HIGH oder LOW, je nach der mit dem Trimmpoti eingestellten Schwelle. Bei den meisten Modulen ist DO LOW, wenn es heller als die Schwelle ist, und HIGH, wenn es dunkler ist; prüfe dein Modul mit einem kurzen Test.

PinFunktion
VCCVersorgung (3,3–5 V)
GNDMasse
DODigitaler Ausgang: Schwelle per Trimmpoti
AOAnaloger Ausgang: Mittelpunkt des Spannungsteilers

LDR mit ESP32 und Raspberry Pi Pico

ESP32 und Pico arbeiten mit 3,3 V, versorge den Spannungsteiler daher über den 3V3-Pin. Der ADC des ESP32 hat 12 Bit und liefert Werte von 0 bis 4095. Da die ADC2-Pins bei aktivem WLAN nicht funktionieren, schließt du den LDR an einen der ADC1-Pins (GPIO 32–39) an. Beim Pico sind GP26, GP27 und GP28 die Analogeingänge; read_u16() in MicroPython liefert Werte von 0 bis 65535:

MicroPython
1from machine import ADC, Pin
2import time
3
4ldr = ADC(26)                  # GP26 (ADC0); bölücü 3V3'ten / divider fed from 3V3
5led = Pin(15, Pin.OUT)
6
7while True:
8    light = ldr.read_u16()     # 0 (karanlık) – 65535 (aydınlık) / dark – bright
9    led.value(light < 20000)   # karanlıkta yak / on when dark
10    print(light)
11    time.sleep(0.5)
Versorge den Spannungsteiler an ESP32 und Pico niemals mit 5V. Bei hellem Licht läge dann mehr als 3,3 V am Analogpin, und der Pin könnte dauerhaft beschädigt werden.

LDR oder digitaler Lichtsensor?

MerkmalLDRBH1750 (digital)
AusgangAnalog (Widerstandsänderung)Digital (I2C), direkt in Lux
GenauigkeitGrob; abhängig von Temperatur und ModellGenau und kalibriert
ReaktionszeitLangsam (einige zehn Millisekunden)Schnell
PreisSehr günstigEtwas teurer
Geeignet fürHell/dunkel-Entscheidungen, NachtlichtLichtmessung, Pflanzenlicht, Bildschirmhelligkeit

Projektideen mit dem LDR

  • Automatisches Nachtlicht: eine Lampe, die im Dunkeln angeht und dank Hysterese nicht flackert.
  • Intelligentes Flurlicht: den LDR mit einem PIR-Bewegungsmelder kombinieren, damit es nur bei Dunkelheit und Bewegung leuchtet.
  • Sonnennachführung: anhand des Unterschieds zweier LDRs einen Servo drehen und das Panel zur hellsten Richtung ausrichten.
  • Laser-Sicherheitssystem: einen Laserstrahl auf einen LDR richten; wird der Strahl unterbrochen, ertönt der Alarm.
  • Farbiges Ambientelicht: die Farbe einer RGB-LED bei Dunkelheit zu warmen Tönen verschieben.
  • Sonnenaufgangswecker: beim ersten Morgenlicht einen Buzzer ertönen lassen.

Typische Fehler und ihre Lösungen

  • Der Wert ist immer 0 oder immer 1023: Der feste Widerstand fehlt oder der LDR hängt direkt zwischen 5V und A0; baue den Spannungsteiler auf.
  • Die Werte verhalten sich umgekehrt: LDR und fester Widerstand sind vertauscht; steigt der Wert im Dunkeln, tausch sie oder dreh den Vergleich im Code um.
  • Die Lampe flackert: Ihr Licht fällt auf den LDR oder es gibt nur eine Schwelle; ergänze Hysterese.
  • Verzögerung bei Dunkelheit: Ein LDR kehrt langsamer von hell zu dunkel zurück als umgekehrt; einige Sekunden Verzögerung sind normal.
  • Lux messen wollen: Ein LDR ist kein kalibrierter Sensor; für echte Luxwerte nimm einen BH1750.
  • Am ESP32 stimmen die Werte nicht mehr, sobald WLAN läuft: Der LDR hängt an einem ADC2-Pin; leg ihn auf einen ADC1-Pin zwischen GPIO 32 und 39.

Der LDR ist der einfachste Weg, analoges Lesen und das Prinzip des Spannungsteilers zu lernen – und das hilft dir später bei vielen analogen Sensoren für Feuchte, Gas oder Temperatur. Wie die Widerstände im Teiler arbeiten, erklärt Was ist ein Widerstand?; in der BlueGrays-App findest du LDR-Nachtlicht-, Lichtmessungs- und Laser-Sicherheitsprojekte Schritt für Schritt.

Häufige Fragen

Welchen Widerstand braucht ein LDR?

Am häufigsten nimmt man 10 kΩ, das passt für die meisten Innenraumprojekte. Für mehr Empfindlichkeit bei wenig Licht eignen sich 47 kΩ, für sehr helle Umgebungen 1 kΩ. Als Faustregel wählst du den festen Widerstand nahe am LDR-Widerstand bei der Lichtstärke, die dich interessiert.

Hat ein LDR Plus und Minus?

Nein. Ein LDR hat wie ein normaler Widerstand keine Polarität; du kannst ihn beliebig herum einsetzen. Wichtig ist nur ein korrekter Spannungsteiler mit dem festen Widerstand.

Kann man mit einem LDR Lux messen?

Ungefähr abschätzen ja, genau nein: Die Kennlinie ist nicht linear und hängt vom Modell und sogar von der Temperatur ab. Brauchst du echte Luxwerte, nimm einen digitalen Lichtsensor wie den BH1750 oder TSL2561.

Was ist der Unterschied zwischen DO und AO am LDR-Modul?

AO liefert eine analoge Spannung, die sich mit der Lichtstärke ändert, und wird mit analogRead() gelesen. DO liefert nur HIGH oder LOW, abhängig von der am Trimmpoti eingestellten Schwelle, und wird mit digitalRead() gelesen – praktisch zum Ein- und Ausschalten.

Warum reagiert mein LDR im Dunkeln so langsam?

Nachdem das Licht weg ist, braucht das CdS-Material einige Sekunden, um seinen Dunkelwiderstand zu erreichen; der Wechsel zu hell geht viel schneller. Das ist eine natürliche Eigenschaft von LDRs. Für schnelle Reaktionen nimmt man eine Fotodiode oder einen Fototransistor.

Warum ist mein LDR-Wert am ESP32 immer 4095 oder ändert sich gar nicht?

Wird der Teiler mit 5V versorgt, überschreitet die Spannung die Grenze des ADC und der Wert bleibt bei 4095; versorge ihn mit 3V3. Ändert er sich gar nicht, hängt der LDR vielleicht an einem ADC2-Pin; ADC2 funktioniert bei aktivem WLAN nicht, nimm also einen ADC1-Pin zwischen GPIO 32 und 39.

Alle Projekte ansehen
Leselichtintensität mit Ldr
#11Anfänger

Leselichtintensität mit Ldr

Projekt, das die Umgebungslichtintensität mit einem LDR-Sensor misst und sie auf einem seriellen Monitor anzeigt. Lehrt die Grundlagen der analogen Sensorablesung und der seriellen Kommunikation.

4.6(78)
119
Nachtlampe mit Ldr
#12Anfänger

Nachtlampe mit Ldr

LDR-basiertes Nachtlichtprojekt, das die LED automatisch aufleuchtet, wenn die Umgebung dunkel wird. Lehrt automatische Steuerungslogik mit analogem Schwellenwertvergleich.

4.8(99)
153
Laser-Warnsystem
#22Mittel
Premium

Laser-Warnsystem

Sicherheitsprojekt, das erkennt, wenn der Laserstrahl über LDR unterbrochen wird und mit Summer und LED warnt. Es lehrt die Logik der Lichtunterbrechungserkennung mit einem Laser-LDR-Paar.

4.8(64)
82
Laser-Sicherheitssystem
#23Fortgeschritten
Premium

Laser-Sicherheitssystem

Fortschrittliches Sicherheitssystem, das bei Unterbrechung des Laserstrahls einen Alarm auslöst und per Drucktaste oder IR-Steuerung zurückgesetzt werden kann. Lehrt mehrere Eingangsquellen und Status

4.8(60)
77
ESP32 Nachtlicht mit LDR
#112Anfänger
Premium

ESP32 Nachtlicht mit LDR

Nachtlicht, bei dem die LED im Dunkeln automatisch ein- und im Hellen ausgeschaltet wird. Der D0-Pin (digital out) des LDR-Sensormoduls wird verwendet - die Dunkelschwelle wird mit dem kleinen Potentiometer am Modul eingestellt, das Modul selbst erzeugt den HIGH/LOW-Ausgang. ESP32 liest dieses Signal einfach mit digitalRead() aus, der Code ist sehr einfach.

4.6(17)
30
Messung der Lichtintensität mit dem ESP32-LDR-Modul
#113Anfänger

Messung der Lichtintensität mit dem ESP32-LDR-Modul

Echtzeit-Anzeige des vom LDR-Modul gemessenen Lichtwerts im Serial Monitor + ungefährer Lux-Wert. Vermittelt die Kalibrierungslogik des Moduls. Sollte idealerweise vor Projekt 10 durchgeführt werden, da es zur Festlegung des Schwellenwerts dient.

4.6(36)
55
ESP32 Intelligente Beleuchtung (PIR + LDR + Relais + OLED)
#141Fortgeschritten
Premium

ESP32 Intelligente Beleuchtung (PIR + LDR + Relais + OLED)

Verwandle deinen Flur, dein Badezimmer oder deine Speisekammer mit dem ESP32 in intelligente Beleuchtung! Mit einem PIR-Bewegungssensor, einem LDR-Lichtsensor und einem Relaismodul realisieren wir das klassische Szenario "Licht geht an, wenn im Dunkeln Bewegung erkannt wird" — bei Tageslicht bleibt das Licht trotz Bewegung aus, was tagsüber Energie spart. Das Licht bleibt 30 Sekunden lang an; bei anhaltender Bewegung wird der Timer zurückgesetzt und das Licht bleibt länger an. Das SSD1306 OLED-D

4.3(6)
11
Automatische Beleuchtung mit dem ESP32-PIR-Bewegungssensor
#121Mittel
Premium

Automatische Beleuchtung mit dem ESP32-PIR-Bewegungssensor

In diesem Projekt werden wir mithilfe des PIR-Bewegungssensors HC-SR501 Personen erkennen, die den Raum betreten, und die LED automatisch einschalten. Wenn eine Bewegung erkannt wird, leuchtet die LED für eine bestimmte Zeit, und wir werden die Zeit mithilfe der Funktion `millis()` und eines Zählers steuern, ohne `delay()` zu verwenden. Auf diese Weise erhalten wir ein Beleuchtungssystem mit Bewegungssensor, das andere Aufgaben ausführen kann, ohne dass der ESP32 blockiert wird. In der Praxis ka

4.4(24)
38

Lerne, wie ein LDR seinen Widerstand mit dem Licht ändert, wie du ihn als Spannungsteiler an den Arduino anschließt, den richtigen Widerstand wählst und ein automatisches Nachtlicht ohne Flackern baust.

Was ist ein LDR-Lichtsensor? Licht messen mit Arduino und automatisches Nachtlicht | BlueGrays