Luz nocturna automática con Arduino y sensor de luz LDR (materiales y código)

Arduino ile akıllı gece lambası projesi kapak görseli

Bu yazıyı Türkçe okuyun · Read in English

¿Qué hace este proyecto?

Construimos una luz nocturna que se enciende sola cuando la habitación se oscurece y se apaga cuando hay más luz. Una resistencia dependiente de la luz (LDR) mide la luz de la habitación y Arduino ajusta el brillo del LED según esa medida. Cuando la habitación está totalmente a oscuras, el LED brilla al máximo.

  • Edad: a partir de 9 años
  • Nivel: Principiante
  • Tiempo: unos 30 minutos
  • Qué aprenderás: leer un sensor analógico, usar map() y constrain(), regular el brillo de un LED con PWM

Lista de materiales

MaterialCant.
Arduino Uno (o compatible)1
LDR (resistencia dependiente de la luz)1
Resistencia de 10 kΩ1
LED blanco o amarillo1
Resistencia de 220 Ω1
Protoboard1
Cables puente macho-macho~8
Cable USB1

Conexiones

Esquema de conexiones de la luz nocturna automática con Arduino y sensor LDR
ComponenteConexiónPin de Arduino
LDRUna pata5V
LDRLa otra pataA0
Resistencia de 10 kΩEntre A0 y GNDA0 / GND
LEDPata larga (a través de 220 Ω)D9
LEDPata cortaGND

La LDR y la resistencia de 10 kΩ forman juntas un divisor de tensión. Cuanta más luz hay, mayor es el valor en A0.

Código

// Luz nocturna automática con Arduino - ozandamci.com

const int ldrPin = A0;
const int ledPin = 9;   // pin PWM (marcado con ~)

// Ajusta estos valores a tu habitación (míralos en el Monitor Serie)
const int darkValue = 200;    // por debajo de esto: "oscuridad total"
const int brightValue = 700;  // por encima de esto: "hay bastante luz"

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

void loop() {
  int light = analogRead(ldrPin);   // 0 - 1023
  Serial.print("Luz: ");
  Serial.println(light);

  // Mantiene el valor dentro de los límites y lo invierte para obtener el brillo
  int limited = constrain(light, darkValue, brightValue);
  int brightness = map(limited, darkValue, brightValue, 255, 0);

  analogWrite(ledPin, brightness);
  delay(100);
}

Paso a paso

  1. Coloca la LDR. Pon la LDR en la protoboard. Conecta una pata al pin 5V de Arduino.
  2. Monta el divisor de tensión. Conecta la otra pata de la LDR a A0. Pon la resistencia de 10 kΩ en ese mismo punto y conecta su otro extremo a GND.
  3. Coloca el LED. Conecta una resistencia de 220 Ω a la pata larga del LED y llévala a D9; conecta la pata corta a GND.
  4. Sube el código. En el Arduino IDE, elige tu placa y tu puerto y haz clic en Subir.
  5. Calibra. Abre Herramientas → Monitor Serie. Anota el valor con la luz normal de la habitación y el valor cuando tapas la LDR con la mano. Pon esos dos números en brightValue y darkValue en el código y súbelo de nuevo.
  6. Pruébalo. Tapa poco a poco la LDR con la mano. El LED debería brillar cada vez más.

Solución de problemas

  • El LED está siempre al máximo o siempre tenue: Puede que los valores de calibración no encajen con tu habitación; repite el paso 5.
  • Funciona al revés (se enciende cuando hay mucha luz): La LDR y la resistencia de 10 kΩ están intercambiadas; la LDR debe estar en el lado de 5V.

Pruébalo tú mismo

  • Usa un LED RGB y crea una lámpara que cambie de color en la oscuridad.
  • Mete la lámpara en una caja de cartón o impresa en 3D.

Vídeo

La narración está en turco. Hay subtítulos en español: pulsa CC en el vídeo.

Birisi “Luz nocturna automática con Arduino y sensor de luz LDR (materiales y código)” üzerinde düşündü

Bir Cevap Yazın