Overview
In this lesson, we will make a light tracking system based on a servo and a photoresistor.
Components
- 1 * Arduino UNO
- 1 * USB Cable
- 1 * Servo
- 1 * Photoresistor
- 1 * 10kΩ Resistor
- 1 * Breadboard
- Several jumper wires
Principle
In this experiment, we need to fasten the photoresistor with the horn of servo. First, we control the servo with a photoresistor to rotate from 0° to 180° to record the intensity of illumination, and then the photoresistor will stop at the brightest position.
Procedures
Step 1: Build the circuit

Step 2: Program
_28_automatically_tracking_light_source.ino
/***********************************************************
File name: 28_automatically_tracking_light_source.ino
Description: if you use a flashlight to shine the photoresistor
and servo, you will see the servo motor and the
photoresistor rotate, finally stop at the direction
of light source.
Website: www.adeept.com
E-mail: support@adeept.com
Author: Tom
Date: 2015/05/02
***********************************************************/
#include <Servo.h>
const int photocellPin = A0;
Servo myservo;//create servo object to control a servo
int outputValue = 0;
int angle[] = {0,10, 20, 30, 40, 50, 60,70, 80, 90, 100,110,120,130,140,150,160,170,180};
int maxVal = 0;
int maxPos = 0;
void setup()
{
myservo.attach(9);//attachs the servo on pin 9 to servo object
}
void loop()
{
for(int i = 0; i < 19; i ++)
{
myservo.write(angle[i]);
outputValue = analogRead(photocellPin);
if(outputValue > maxVal)
{
maxVal = outputValue;
maxPos =i;
}
delay(200);
}
myservo.write(angle[ maxPos]);
while(1);
}Step 3: Compile the program and upload to Arduino UNO board
