An automated solar tracking system that uses LDR (Light Dependent Resistor) sensors to track the sun's position and adjust solar panels for maximum efficiency.
The system uses four LDR sensors arranged in a cross pattern to detect light intensity from different directions. Two servo motors control the panel's movement in both horizontal and vertical axes.
#include <Servo.h>
Servo servo1;
Servo servo2;
int LDR1;
int LDR2;
int LDR3;
int LDR4;
int offset1 = 0;
int offset2 = 200;
int val1 = 90;
int val2 = 90;
void setup() {
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(A3, INPUT);
servo1.attach(9);
servo2.attach(10);
servo1.write(90);
servo2.write(90);
Serial.begin(9600);
delay(1000);
}
void loop() {
LDR1 = analogRead(A0) + offset1;
LDR2 = analogRead(A1);
LDR3 = analogRead(A2);
LDR4 = analogRead(A3) + offset2;
Serial.print("LDR1: ");
Serial.print(LDR1);
Serial.print(" LDR2: ");
Serial.print(LDR2);
Serial.print(" LDR3: ");
Serial.print(LDR3);
Serial.print(" LDR4: ");
Serial.print(LDR4);
Serial.print(" val1: ");
Serial.print(val1);
Serial.print(" val2: ");
Serial.println(val2);
if ((LDR2 > LDR4) && (val1 > 0 && val1 <= 175)){
val1 = val1 + 1;
servo1.write(val1);
}
if ((LDR2 < LDR4) && (val1 > 0 && val1 <= 175)){
val1 = val1 - 1;
servo1.write(val1);
}
if ((LDR1 < LDR3) && (val2 > 0 && val2 < 180)){
val2 = val2 + 1;
servo2.write(val2);
}
if ((LDR1 > LDR3) && (val2 > 0 && val2 < 180)){
val2 = val2 - 1;
servo2.write(val2);
}
delay(100);
}
Solar Tracking System in action
The system uses four LDR sensors arranged in a cross pattern to detect light intensity from different directions. The sensors are paired (LDR1/LDR3 for vertical movement and LDR2/LDR4 for horizontal movement). When there's a difference in light intensity between paired sensors, the corresponding servo motor adjusts the panel's position to maximize light exposure.