Lightseeking sensor Module

From Wiki
Jump to: navigation, search



The Lightseeking sensor Module can be used on a smart car robot for the experiment about light seeking. Since the resistance of a photoresistor decreases with stronger light, the car can be controlled to move based on the resistance change, that is, to seek for the light and follow it. Also the light intensity is indicated by the LED bar graph on the module. 


1.The Lightseeking sensor module consists of photoresistor, LED bar graph, 74HC595, and resistor and can detect light and reflect the intensity by the LEDs

2.The on and off of the LEDs is controlled by 74HC595; the photoresistor is connected to pin A

3.Standard double-sided printed circuit board, a 3-mm hole in the middle at one side for fixing

4.Working voltage: 5V

5.PCB size: 19 x 49 mm


The Lightseeking sensor module consists of photoresistor, LED bar graph, 74HC595, and resistor. In the experiment, we upload the code to the SunFounder Uno board in Arduino IDE. Then the photoresistor collects data of light intensity. Next, the data is sent to pin A0 of the Uno board, and the analog value at A0 read via the code is transferred to the 74HC595. At last, the value is indicated by the LED bar graph – the strong light, the more LEDs are on.

The schematic diagram


Pins and their function:

VCC:Positive supply voltage


ST: time sequence input of storage register, connected to pin 12 of 74HC595. On the rising edge, data in the shift register moves into memory register

SH: Time sequence input of shift register, connected to pin 11 of 74HC595. On the rising edge, the data in shift register moves successively one bit, i.e. data in Q1 moves to Q2, and so forth.While on the falling edge, the data in shift register remain unchanged.

DS: Serial data input pin, connected to pin 14 of 74HC595

Q7’: Series output pin, connected to pin 9 of 74HC595

A: Analog output port of the photoresistor

Test code

//LightSeeking sensor
/*By changing the intensity of the ambient light around the module, 
 you can see different numbers of LEDs on the LED bar graph brighten accordingly.*/ 
const int latchPin = 12;   //Pin connected to ST_CP of 74HC595
const int clockPin = 8; //Pin connected to SH_CP of 74HC595 
const int dataPin = 11;   // Pin connected to DS of 74HC595 
const int photocellPin = A0; // A attach to A0
int photocell = 0;
unsigned char code_val[] = {0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff};
//Display different numbers of LEDs
void setup()
 //set pins to output
 pinMode(dataPin ,OUTPUT);
 void loop()
   photocell = analogRead(photocellPin); //read the value of A0
   int digital=map(photocell,0,1023,0,8); //Value read is divided into 8 equal portions
   /* return the latch pin high to signal chip that it 
   no longer needs to listen for information */
   digitalWrite(latchPin,HIGH); //pull the latchPin to save the data

Experimental phenomenon

You can see the number of the brightened LEDs on the module varies with changes of the ambient light intensity. Try to change the luminance (e.g. cover the photoresistor with your fingers) and see how will the bar graph change.


Note: Since there are 10 LEDs on the bar graph when only 8 digital outputs for the 74HC595, Q0 and Q1 are connected with two LEDs respectively. Therefore, when the light intensity is quite low, 4 or 2 LEDs will be on – that means when you see only 2 or 4 LEDs light up, in fact there are just 1 or 2 are on.