Starting Electronics needs your help! Please make a donation to help cover our hosting and other costs. Click the donate button to send a donation of any amount.

Photo Resistor Sensor Module Arduino Tutorial

Created on: 4 January 2018

How to use the photo resistor sensor module from the 37 in 1 sensor kit for Arduino from Geekcreit, Elegoo, Elektor and others. In some kits the module may be called an LDR (Light Dependent Resistor), photocell, or be written "photoresistor".

This tutorial shows the basic use and testing of the photo resistor sensor module with Arduino. Arduino sketches show how to read the photo resistor sensor when connected to an analog input pin.

Note that there are two different pinouts for the photo resistor sensor module, depending on which kit it is from. See the photo resistor sensor module pinout for more details.

The image below shows the photo resistor sensor module used in this tutorial.

Geekcreit Photo Resistor Sensor Module
Geekcreit Photo Resistor Sensor Module

Photo Resistor Sensor Module Circuit

Important:

Before continuing, refer to the photo resistor sensor module pinout to determine the configuration of your photo resistor sensor. There are two different photo resistor sensors.

The photo resistor module can be wired to the Arduino using the 10k resistor on the module as shown in the circuit diagrams below.

Geekcreit Photo Resistor Sensor Module Circuit

Before building the circuit, it is recommended to check your module with a multimeter to make sure which pins the 10k resistor (R1) on the module is connected to.

Photo Resistor Module Connections to Arduino:

  • Pin 1 (S) of the module connects to the Arduino 5V pin.
  • Pin 2 of the module connects to the Arduino GND pin.
  • Pin 3 (-) of the module connects to an Arduino analog input pin. Arduino analog input A0 is used in the sketches below, but can be changed.
Geekcreit Photo Resistor Sensor Module Arduino Circuit
Geekcreit Photo Resistor Sensor Module Arduino Circuit

Alternate Photo Resistor Sensor Module Circuit

If your photo resistor module is configured with the 10k resistor connected between pins 1 and 2 of the module, then use the following circuit.

Photo Resistor Module Connections to Arduino:

  • Pin 1 (S) of the module connects to an Arduino analog input pin. Arduino analog input A0 is used in the sketches below, but can be changed.
  • Pin 2 of the module connects to the Arduino GND pin.
  • Pin 3 (-) of the module connects to the Arduino 5V pin.
Alternate Photo Resistor Sensor Module Arduino Circuit
Alternate Photo Resistor Sensor Module Arduino Circuit

Photo Resistor Sensor Module Arduino Sketches

Three different sketches can be found below that all use the photo resistor sensor module. All three sketches are used with the above circuits.

Photo Resistor Analog Value Arduino Sketch

The following sketch reads the analog value from the photo resistor module and sends it out of the serial/USB port of the Arduino. Use the Serial Monitor from the Arduino IDE to see the analog value.

int sensorPin = A0;   // select the analog input pin for the photoresistor

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.println(analogRead(sensorPin));
  delay(200);
}

Open the Serial Monitor window by clicking the icon at the top right of the Arduino IDE as shown in the image below and marked with a red dot.

How to Open the Arduino Serial Monitor Window
How to Open the Arduino Serial Monitor Window

When the serial monitor window is open, make sure that the baud setting is 9600 baud as marked by the red dot at the bottom right of the above image. Values from pin A0 should be seen scrolling in the serial monitor window as shown in the image.

Light Activated LED Arduino Sketch

When the value read from the photo resistor sensor module goes below the threshold value, i.e. it becomes dark, the Arduino on-board LED is switched on. The LED is switched off when the analog value from the sensor goes above the threshold value.

A threshold value can be selected by using the previous sketch to determine the analog value at the desired light level when the LED should be triggered. The value assigned to the threshold variable at the top of the sketch can then be set to the new value.

int sensorPin = A0;   // select the analog input pin for the photoresistor
int threshold = 300;  // analog input trigger level from photoresistor
int sensorValue = 0;  // photoresistor value read from analog input pin

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); // built-in LED, usually on pin 13
}

void loop() {
  if (analogRead(sensorPin) < threshold) {
    // low light, so switch the light (LED) on
    digitalWrite(LED_BUILTIN, HIGH);
  }
  else {
    // light level high enough, so switch the light (LED) off
    digitalWrite(LED_BUILTIN, LOW);
  }
  // wait for ADC to settle before next reading
  delay(20);
}

When the photoresistor sensor is covered, blocking most light, the on-board LED should switch on. When enough light hits the sensor, the LED should switch off.

Analog Input Arduino IDE Example Sketch

One of the example programs, called AnalogInput that comes with the Arduino IDE, can be used with the circuit in this tutorial. Find the sketch in the Arduino IDE under File → Examples → 03.Analog → AnalogInput.

Also see the Arduino Analog Input tutorial on the Arduino website that uses this sketch with a potentiometer and the above circuit from this tutorial.

The AnalogInput sketch flashes the on-board LED faster or slower, depending on the light intensity on the photoresistor module.

Books that may interest you:

C Programming with Arduino Book Ultimate Arduino MEGA 2560 Hardware Manual Ultimage Arduino Uno Hardware Manual