Composants · 6 min de lecture

Qu'est-ce qu'un capteur de lumière LDR ? Mesurer la lumière avec Arduino et veilleuse automatique

Comment fonctionne une LDR (photorésistance) ? Montage en pont diviseur, choix de la résistance, lecture de la lumière avec analogRead, veilleuse avec hystérésis, module LDR, ESP32, Pico et erreurs fréquentes.

Une LDR (Light Dependent Resistor) est, comme son nom l'indique, une résistance dont la valeur dépend de la lumière ; on l'appelle aussi photorésistance. Dans le noir, sa résistance est très élevée ; plus il y a de lumière, plus elle diminue. Les lampadaires qui s'allument au crépuscule, les veilleuses automatiques et les jouets sensibles à la lumière fonctionnent avec ce composant tout simple. Elle est bon marché, n'a pas de polarité et se branche sur un Arduino avec une seule résistance : un point de départ idéal pour ton premier projet lumineux.

Photorésistance LDR capteur de lumière
LDR : le motif en zigzag de sa surface est une couche de sulfure de cadmium sensible à la lumière ; ses deux pattes n'ont pas de polarité.

Comment fonctionne une LDR ?

Le zigzag à la surface de la LDR est un semi-conducteur sensible à la lumière, le sulfure de cadmium (CdS). Quand la lumière l'atteint, les photons libèrent des électrons, le matériau conduit mieux et la résistance baisse. Cette variation n'est pas linéaire et reste assez lente (quelques dizaines de millisecondes). C'est pourquoi une LDR ne sert pas à mesurer précisément la lumière en lux, mais elle est idéale pour des décisions du type « fait-il sombre ou clair ? » et pour des niveaux de lumière approximatifs.

AmbianceRésistance approximative de la LDR (GL5528)
Obscurité totale1 MΩ et plus
Lueur de veilleuse (~1 lux)50–100 kΩ
Pièce peu éclairée (~10 lux)10–20 kΩ
Pièce éclairée (~100 lux)3–5 kΩ
Sous une lampe de bureau (~1000 lux)Environ 1 kΩ
Lumière du jourQuelques centaines d'Ω

Les valeurs varient selon le modèle. La plus courante dans les kits est la GL5528 ; ses sœurs GL5516, GL5537 et GL5539 donnent des résistances différentes sous la même lumière. Tu peux connaître facilement les valeurs de ta LDR en la mesurant au multimètre dans le noir et à la lumière.

Brancher la LDR sur Arduino : le pont diviseur

L'Arduino mesure une tension, pas une résistance. La LDR se branche donc avec une résistance fixe pour former un pont diviseur de tension : 5V → LDR → A0 → 10 kΩ → GND. Quand la lumière augmente, la résistance de la LDR baisse et la tension sur A0 monte. Cette tension vaut V = 5 × Rfixe / (RLDR + Rfixe), et analogRead() la convertit en un nombre entre 0 et 1023. Pour essayer différentes valeurs, utilise le calculateur Pont diviseur.

LumièreRésistance de la LDRTension sur A0analogRead
Obscurité totale1 MΩ0,05 V~10
Pièce peu éclairée15 kΩ2,0 V~410
Pièce éclairée4 kΩ3,6 V~730
Sous une lampe de bureau1 kΩ4,5 V~930
La résistance fixe donne le résultat le plus sensible quand elle est proche de la résistance de la LDR au niveau de lumière qui t'intéresse. Pour des décisions en faible lumière, comme une veilleuse, 10 à 47 kΩ conviennent mieux ; pour distinguer des lumières fortes, environ 1 kΩ. La 10 kΩ fournie dans les kits est un bon point de départ pour la plupart des projets.

Lire le niveau de lumière avec Arduino

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}

Avec le traceur série (Serial Plotter) de l'Arduino IDE, tu peux suivre la valeur sous forme de courbe en direct. Quand tu caches la LDR avec ta main, la courbe descend ; quand tu l'éclaires avec une lampe torche, elle monte. C'est le moyen le plus simple de trouver le bon seuil pour ton projet, avec le capteur placé là où il restera.

Veilleuse automatique : seuil et hystérésis

La veilleuse la plus simple dit « si la valeur est inférieure à 300, allume la LED ». Mais quand la lumière tourne autour du seuil, la lampe s'allume et s'éteint sans arrêt, et c'est encore pire si sa propre lumière atteint la LDR. La solution, c'est l'hystérésis : utiliser deux seuils différents. Le code ci-dessous allume la lampe quand la lumière passe sous 300, mais ne l'éteint qu'au-dessus de 400 ; l'écart entre les deux supprime totalement le clignotement.

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}
Place la lampe de façon à ce qu'elle n'éclaire pas la LDR ; si sa lumière revient sur le capteur, la lampe s'éteint toute seule. Faire la moyenne de 10 lectures lisse aussi les sauts brusques dus à une ombre qui passe ou au scintillement d'un tube fluorescent.

Une LED qui brille davantage dans le noir

Au lieu d'allumer et d'éteindre, tu peux faire briller la LED de plus en plus à mesure que la lumière baisse. La fonction map() transforme la lumière mesurée en une valeur PWM inversement proportionnelle : plus la pièce s'assombrit, plus la LED brille, et inversement. N'oublie pas de brancher la LED sur une broche PWM marquée ~ (par exemple la 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}

Module LDR : sortie numérique et analogique

Les modules LDR tout prêts réunissent sur une carte la LDR, la résistance du pont, un potentiomètre bleu pour le seuil et un comparateur LM393. La broche AO fournit la sortie analogique du pont, et la broche DO seulement HIGH ou LOW selon le seuil réglé au potentiomètre. Sur la plupart des modules, DO est à LOW quand il fait plus clair que le seuil et à HIGH quand il fait plus sombre ; vérifie ton module par un petit test.

BrocheRôle
VCCAlimentation (3,3–5 V)
GNDMasse
DOSortie numérique : seuil réglé au potentiomètre
AOSortie analogique : point milieu du pont diviseur

LDR avec l'ESP32 et le Raspberry Pi Pico

L'ESP32 et le Pico fonctionnent en 3,3 V : alimente donc le pont diviseur par la broche 3V3. L'ADC de l'ESP32 est sur 12 bits et renvoie des valeurs de 0 à 4095. Les broches ADC2 ne fonctionnent pas quand le Wi-Fi est actif, branche donc la LDR sur une broche ADC1 (GPIO 32 à 39). Sur le Pico, les entrées analogiques sont GP26, GP27 et GP28 ; read_u16() en MicroPython renvoie des valeurs de 0 à 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)
N'alimente jamais le pont diviseur en 5V sur un ESP32 ou un Pico. En pleine lumière, la broche analogique recevrait plus de 3,3 V et pourrait être définitivement endommagée.

LDR ou capteur de lumière numérique ?

CaractéristiqueLDRBH1750 (numérique)
SortieAnalogique (variation de résistance)Numérique (I2C), directement en lux
PrécisionApproximative ; dépend de la température et du modèlePrécise et étalonnée
Temps de réponseLent (dizaines de millisecondes)Rapide
PrixTrès bon marchéUn peu plus cher
Idéal pourDécision jour/nuit, veilleuseMesure de la lumière, éclairage des plantes, luminosité d'écran

Idées de projets avec une LDR

  • Veilleuse automatique : une lampe qui s'allume dans le noir et ne clignote pas grâce à l'hystérésis.
  • Éclairage de couloir intelligent : associe la LDR à un capteur de mouvement PIR pour qu'il ne s'allume que dans le noir et au passage de quelqu'un.
  • Panneau qui suit le soleil : fais tourner un servo selon la différence entre deux LDR pour orienter un panneau vers le côté le plus lumineux.
  • Système de sécurité laser : vise une LDR avec un faisceau laser ; quand le faisceau est coupé, l'alarme sonne.
  • Lumière d'ambiance colorée : fais glisser une LED RGB vers des tons chauds à la tombée de la nuit.
  • Réveil au lever du soleil : fais sonner un buzzer aux premières lueurs du matin.

Erreurs fréquentes et solutions

  • La valeur est toujours 0 ou toujours 1023 : la résistance fixe manque, ou la LDR est branchée directement entre 5V et A0 ; monte le pont diviseur.
  • Les valeurs sont inversées : la LDR et la résistance fixe ont été permutées ; si la valeur monte dans le noir, intervertis-les ou inverse la comparaison dans le code.
  • La lampe clignote : sa lumière atteint la LDR, ou il n'y a qu'un seul seuil ; ajoute une hystérésis.
  • Retard quand il fait nuit : une LDR revient plus lentement du clair au sombre que l'inverse ; quelques secondes de retard sont normales.
  • Vouloir mesurer des lux : une LDR n'est pas un capteur étalonné ; pour de vraies valeurs en lux, utilise un BH1750.
  • Sur l'ESP32, les mesures déraillent quand le Wi-Fi démarre : la LDR est sur une broche ADC2 ; déplace-la sur une broche ADC1 entre GPIO 32 et 39.

La LDR est le moyen le plus simple d'apprendre la lecture analogique et le principe du pont diviseur, et ce que tu apprends ici te servira pour de nombreux capteurs analogiques d'humidité, de gaz ou de température. Pour comprendre le rôle des résistances du pont, lis Qu'est-ce qu'une résistance ? ; dans l'application BlueGrays, tu trouveras des projets de veilleuse à LDR, de mesure de luminosité et de sécurité laser, pas à pas.

Questions fréquentes

Quelle résistance associer à une LDR ?

Le choix le plus courant est 10 kΩ, qui convient à la plupart des projets en intérieur. Pour plus de sensibilité en faible lumière, prends 47 kΩ, et pour les environnements très lumineux, 1 kΩ. En règle générale, choisis une résistance fixe proche de celle de la LDR au niveau de lumière qui t'intéresse.

Une LDR a-t-elle un plus et un moins ?

Non. Une LDR n'a pas de polarité, comme une résistance ordinaire ; tu peux la monter dans n'importe quel sens. L'essentiel est de réaliser correctement le pont diviseur avec la résistance fixe.

Peut-on mesurer des lux avec une LDR ?

On peut les estimer, mais pas avec précision : sa réponse n'est pas linéaire et varie selon le modèle, et même avec la température. Si tu as besoin de vraies valeurs en lux, utilise un capteur de lumière numérique comme le BH1750 ou le TSL2561.

Quelle est la différence entre les broches DO et AO d'un module LDR ?

AO fournit une tension analogique qui varie avec la lumière et se lit avec analogRead(). DO ne donne que HIGH ou LOW selon le seuil réglé au potentiomètre du module et se lit avec digitalRead() ; c'est pratique pour allumer et éteindre.

Pourquoi ma LDR réagit-elle lentement dans le noir ?

Une fois la lumière coupée, le CdS met quelques secondes à atteindre sa résistance d'obscurité, alors que le passage à la lumière est beaucoup plus rapide. C'est une propriété naturelle des LDR. Pour une réponse rapide, on utilise une photodiode ou un phototransistor.

Pourquoi ma LDR affiche-t-elle toujours 4095 sur l'ESP32, ou ne change-t-elle jamais ?

Si le pont est alimenté en 5V, la tension dépasse la limite de l'ADC et la valeur reste bloquée à 4095 ; alimente-le en 3V3. Si la valeur ne change jamais, la LDR est peut-être sur une broche ADC2 ; l'ADC2 ne fonctionne pas avec le Wi-Fi actif, utilise donc une broche ADC1 entre GPIO 32 et 39.

Voir tous les projets
Intensité de la lumière de lecture avec Ldr
#11Débutant

Intensité de la lumière de lecture avec Ldr

Projet qui mesure l'intensité de la lumière ambiante à l'aide d'un capteur LDR et l'affiche sur un moniteur série. Enseigne les bases de la lecture de capteurs analogiques et de la communication série

4.6(78)
119
Lampe de nuit avec Ldr
#12Débutant

Lampe de nuit avec Ldr

Projet de veilleuse à base de LDR qui allume automatiquement la LED lorsque l'environnement s'assombrit. Enseigne la logique de contrôle automatique avec la comparaison des valeurs seuils analogiques.

4.8(99)
153
Système d'alerte laser
#22Intermédiaire
Premium

Système d'alerte laser

Projet de sécurité qui détecte l'interruption du faisceau laser via une LDR et avertit par un buzzer et une LED. Il enseigne la logique de la détection de l'interruption de la lumière avec une paire l

4.8(64)
82
Système de sécurité laser
#23Avancé
Premium

Système de sécurité laser

Système de sécurité avancé qui déclenche l'alarme lorsque le faisceau laser est interrompu et qui peut être réinitialisé par un bouton-poussoir ou une commande IR. Enseigne les sources d'entrée multip

4.8(60)
77
Veilleuse ESP32 avec LDR
#112Débutant
Premium

Veilleuse ESP32 avec LDR

Veilleuse dans laquelle la LED s'allume automatiquement dans l'obscurité et s'éteint à la lumière. La broche D0 (sortie numérique) du module capteur LDR est utilisée - le seuil d'obscurité est réglé avec le petit potentiomètre sur le module, le module lui-même génère la sortie HAUT/BAS. L'ESP32 lit simplement ce signal avec digitalRead(), le code est très simple.

4.6(17)
30
Mesure de l'intensité lumineuse avec le module LDR ESP32
#113Débutant

Mesure de l'intensité lumineuse avec le module LDR ESP32

Suivi en temps réel de la valeur de luminosité mesurée par le module LDR sur le moniteur série + valeur approximative en lux. Permet de comprendre le principe de calibrage du module. Il est préférable de réaliser cet exercice avant le projet 10, car il sert à déterminer la valeur seuil.

4.6(36)
55
Éclairage Intelligent ESP32 (PIR + LDR + Relais + OLED)
#141Avancé
Premium

Éclairage Intelligent ESP32 (PIR + LDR + Relais + OLED)

Transformez votre couloir, votre salle de bain ou votre garde-manger en éclairage intelligent avec l'ESP32 ! En utilisant un capteur de mouvement PIR, un capteur de lumière LDR et un module relais, nous construisons le scénario classique "la lumière s'allume lorsqu'un mouvement est détecté dans l'obscurité" — si l'environnement est déjà lumineux, le mouvement N'ACTIVE PAS la lumière, économisant ainsi de l'énergie pendant la journée. La lumière reste allumée pendant 30 secondes ; si le mouvement

4.3(6)
11
Éclairage automatique avec le capteur de mouvement PIR ESP32
#121Intermédiaire
Premium

Éclairage automatique avec le capteur de mouvement PIR ESP32

Dans ce projet, nous allons détecter toute personne entrant dans la pièce à l'aide du capteur de mouvement PIR HC-SR501 et allumer automatiquement la LED. Lorsqu'un mouvement sera détecté, la LED restera allumée pendant un certain temps et nous gérerons le temps à l'aide de la fonction `millis()` et d'un compteur, sans avoir recours à `delay()`. Nous obtiendrons ainsi un système d'éclairage à détecteur de mouvement qui ne bloque pas l'ESP32 et permet d'effectuer d'autres tâches. Dans la vie de t

4.4(24)
38

Apprends comment une LDR change de résistance avec la lumière, comment la brancher sur un Arduino avec un pont diviseur, choisir la bonne résistance et réaliser une veilleuse automatique qui ne clignote pas.

Qu'est-ce qu'un capteur de lumière LDR ? Mesurer la lumière avec Arduino et veilleuse automatique | BlueGrays