Devices & Components
Arduino Uno Rev3
10 jumper wires 200mm male
10 10k 1/4w resistor
4mm cardboard
5 LDR
mini breadboard - mixed colours
Analog 180° Micro Servo
Software & Tools
Arduino IDE
Project description
Code
Light Follower code
arduino
1/* 2A simple light follower 3 4author: Arturo Guadalupi <a.guadalupi@arduino.cc> 5 */ 6#include <Servo.h> 7Servo myservo; 8int up_average; 9int down_average; 10int A0_val; 11int A1_val; 12int A2_val; 13int A3_val; 14int val = 90; 15int diff; 16const int threshold = 50; 17void setup() { 18 pinMode(A0, INPUT); 19 pinMode(A1, INPUT); 20 pinMode(A2, INPUT); 21 pinMode(A3, INPUT); 22 myservo.attach(11); 23 myservo.write(val); 24} 25void loop() { 26 A0_val = analogRead(A0); //reading data from sensors 27 A1_val = analogRead(A1); 28 A2_val = analogRead(A2); 29 A3_val = analogRead(A3); 30 31 down_average = (A0_val + A1_val)/2; //the sum of the two lower sensors /2 32 up_average = (A2_val + A3_val)/2; //the sum of the two upper sensors /2 33 diff = abs(up_average-down_average); //checking the difference between the two averages 34 if ((up_average > down_average) && (diff > threshold)) 35 { 36 if (val < 180) //if different from max val 37 { 38 val++; 39 myservo.write(val); 40 } 41 } 42 if((down_average > up_average) && (diff > threshold)) 43 { 44 if (val > 0) //if different from min val 45 { 46 val--; 47 myservo.write(val); 48 } 49 } 50 delay(25); 51}
Light Follower code
arduino
1/* 2A simple light follower 3 4author: Arturo Guadalupi <a.guadalupi@arduino.cc> 5 */ 6#include <Servo.h> 7Servo myservo; 8int up_average; 9int down_average; 10int A0_val; 11int A1_val; 12int A2_val; 13int A3_val; 14int val = 90; 15int diff; 16const int threshold = 50; 17void setup() { 18 pinMode(A0, INPUT); 19 pinMode(A1, INPUT); 20 pinMode(A2, INPUT); 21 pinMode(A3, INPUT); 22 myservo.attach(11); 23 myservo.write(val); 24} 25void loop() { 26 A0_val = analogRead(A0); //reading data from sensors 27 A1_val = analogRead(A1); 28 A2_val = analogRead(A2); 29 A3_val = analogRead(A3); 30 31 down_average = (A0_val + A1_val)/2; //the sum of the two lower sensors /2 32 up_average = (A2_val + A3_val)/2; //the sum of the two upper sensors /2 33 diff = abs(up_average-down_average); //checking the difference between the two averages 34 if ((up_average > down_average) && (diff > threshold)) 35 { 36 if (val < 180) //if different from max val 37 { 38 val++; 39 myservo.write(val); 40 } 41 } 42 if((down_average > up_average) && (diff > threshold)) 43 { 44 if (val > 0) //if different from min val 45 { 46 val--; 47 myservo.write(val); 48 } 49 } 50 delay(25); 51}
Downloadable files
Layout
Layout

Documentation
LightFollower DXF
LightFollower DXF
LightFollower DXF
LightFollower DXF
Comments
Only logged in users can leave comments