Using an LDR Sensor With Arduino

67,426

33

10

Introduction: Using an LDR Sensor With Arduino

About: There were 1000+ sperms but I was the fastest one..

Introduction

---------------

Hi Everyone, This is my 1st Arduino's tutorial video. In this video i am going to show you how to use a LDR or Light Dependent resistor to turn on and off another circuit or a LED.

Wouldn’t it be really cool if whenever a room gets dark, a light bulb automatically turns ON and eliminates the darkness? In this very simple project, I am focusing on eliminating darkness. You can even use this as an emergency lighting system.

Step 1: Principle

The LDR is a special type of resistor which allows a lower voltage to pass through it (high resistance) whenever its dark and higher voltages to pass (low resistance) whenever there is a high intensity of light.

We are going to use a 10k resistor along with the LDR to create a voltage divider circuit. The varying resistance of the LDR is converted to a varying voltage that the analog pin of the Arduino will then be using in its logic.

Step 2: Hardware Requirement

For this very simple DIY Arduino project we need:

- a breadboard

- an arduino uno/nano (whatever is handy)

- LED (Light Emitting Diode)

- LDR (Photoresistor)

- A 10K Resistor for creating the voltage divider and a 220ohm resistor for the LED

- Few breadboard friendly connecting wires

- and a USB cable to upload the code to the Arduino

Step 3: Assembly

- Connect the 3.3v output of the Arduino to the positive rail of the breadboard

- Connect the ground to the negative rail of the breadboard

- Place the LDR on the breadboard

- Attach the 10K resistor to one of the legs of the LDR

- Connect the A0 pin of the Arduino to the same column where the LDR and resistor is connected (Since the LDR gives out an analog voltage, it is connected to the analog input pin on the Arduino. The Arduino, with its built-in ADC (Analog to Digital Converter), then converts the analog voltage from 0-5V into a digital value in the range of 0-1023). - Now connect the other end of the 10K resistor to the negative rail - And the the second (free) leg of the LDR to the positive rail

Pretty much this is what we need for the light sensing. Basic circuits like this can be done without an Arduino aswell. However, if you want to log the values and use it to create charts, run other logics etc. I will recomend an Arduino or ESP8266 or may be a ESP32 for this.

Now, as we want our circuit to do something in the real world other than just displaying the values on the computer screen we will be attaching a LED to the circuit. The LED will turn on when its dark and will go off when its bright. To achieve this we will:

- Place the LED on the breadboard

- Connect the 220ohm resistor to the long leg (+ve) of the LED

- Then we will connect the other leg of the resistor to pin number 13 (digital pin) of the Arduino

- and the shorter leg of the LED to the negative rail of the breadboard

Step 4: The Code

const int ledPin = 13;

const int ldrPin = A0;

void setup() {

Serial.begin(9600);

pinMode(ledPin, OUTPUT);

pinMode(ldrPin, INPUT);

}

void loop() {

int ldrStatus = analogRead(ldrPin);

if (ldrStatus <= 200) {

digitalWrite(ledPin, HIGH);

Serial.print("Its DARK, Turn on the LED : ");

Serial.println(ldrStatus);

} else {

digitalWrite(ledPin, LOW);

Serial.print("Its BRIGHT, Turn off the LED : ");

Serial.println(ldrStatus);

}

}

Step 5:

Thanks again for watching this video! I hope it helps you. If you want to support me, you can subscribe to my channel and watch my other videos. Thanks, ca again in my next Instructable.

Arduino Contest 2017

Participated in the
Arduino Contest 2017

1 Person Made This Project!

Recommendations

  • Make it Glow Contest

    Make it Glow Contest
  • First Time Author Contest

    First Time Author Contest
  • PCB Challenge

    PCB Challenge

10 Discussions

0
flashpoint77
flashpoint77

11 months ago

I have used this program but the LDR sensor is not working and the LEDs are always on...
Pls help...

0
danielp652
danielp652

2 years ago on Step 4

this code is corect

const int ledPin = 13;

const int ldrPin = A0;

void setup() {

Serial.begin(9600);

pinMode(ledPin, OUTPUT);

pinMode(ldrPin, INPUT);

}

void loop() {

int ldrStatus = analogRead(ldrPin);

if (ldrStatus <= 200) {

digitalWrite(ledPin, LOW);

Serial.print("Its BRIGHT, Turn off the LED : ");

Serial.println(ldrStatus);

} else {

digitalWrite(ledPin, HIGH);

Serial.print("Its DARK, Turn on the LED : ");

Serial.println(ldrStatus);

}

}

its dark turn on led it bright turn off led

0
guywolf10
guywolf10

Reply 1 year ago

doesn't work for me either, with the supplied code the led won't turn off but with your code the led stays off even in darkness.
someone please help

0
Tarantula3
Tarantula3

Reply 1 year ago

Can you show me your schema?
Are you using the A0 pin?
Hope you havent missed the voltage divider bit

0
Tarantula3
Tarantula3

Reply 2 years ago

I know it is

0
IbrahimD44
IbrahimD44

1 year ago on Step 4

my light isnt turning on what to do i did everything he told me

0
MayaA23
MayaA23

2 years ago

Measuring relative speed with the help of light sensor (ldr) you can help find code?

0
MayaA23
MayaA23

2 years ago

Hiii

i need help

how i can Measuring relative velocity using a light sensor (LDR)

0
KertS
KertS

Question 2 years ago on Step 5

How do i change the code, that when the room lighting is 1/3 of the normal light, it turns itself on?

0
Tarantula3
Tarantula3

Answer 2 years ago

ldrStatus can be anything between 0 to 1023
So you just need to change the value and see what suits the best for ur senario