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.
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.
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:
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:
Three different sketches can be found below that all use the photo resistor sensor module. All three sketches are used with the above circuits.
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.
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.
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.
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.