Arduino Solar Tracker
อุปกรณ์
- Servo Motor (sg90)
- Solar panel
- Arduino Uno
- LDR’s X 2 (Light Dependent Resistor)
- 10K resistors X 2
- Battery (6 to 12V)
Diagram
Code
#include <Servo.h> //ประกาศเมื่อมีการใช้Servo
Servo sg90; //ตั้งค่าServoด้วยตัวแปรsg90
int initial_position = 90; //ประกาศตัวแปรไว้ที่ค่า 90
int LDR1 = A0; //ขาที่LDRต่อไว้
int LDR2 = A1; //ขาที่LDR2ต่อไว้
int error = 5; //ตั้งค่าเริ่มต้นของ error ที่ 5
int servopin=9;
void setup()
{
Servo sg90; //ตั้งค่าServoด้วยตัวแปรsg90
int initial_position = 90; //ประกาศตัวแปรไว้ที่ค่า 90
int LDR1 = A0; //ขาที่LDRต่อไว้
int LDR2 = A1; //ขาที่LDR2ต่อไว้
int error = 5; //ตั้งค่าเริ่มต้นของ error ที่ 5
int servopin=9;
void setup()
{
sg90.attach(servopin); // ให้ servo ที่ขา 9
pinMode(LDR1, INPUT); //ให้ขาที่ต่อกับLDRเป็นInput
pinMode(LDR2, INPUT);
sg90.write(initial_position); //ขยับServoไว้ที่90องศา
delay(2000); // กำหนดdelay2วินาที
}
void loop()
{
int R1 = analogRead(LDR1); // อ่านค่า LDR 1
int R2 = analogRead(LDR2); // อ่านค่า LDR 2
int diff1= abs(R1 - R2); // คำนวณค่าการเปลี่ยนแปลงของ LDR's
int diff2= abs(R2 - R1);
if((diff1 <= error) || (diff2 <= error)) {
//ถ้าค่าการเปลี่ยนแปลงน้อยกว่า error ไม่ต้องทำอะไร
} else {
if(R1 > R2)
{
initial_position = --initial_position; //ขยับServoไปที่0องศา
}
if(R1 < R2)
{
initial_position = ++initial_position; //ขยับServoไปที่180องศา
}
}
sg90.write(initial_position); // เปลี่ยนค่าของServo
delay(100);
}
pinMode(LDR1, INPUT); //ให้ขาที่ต่อกับLDRเป็นInput
pinMode(LDR2, INPUT);
sg90.write(initial_position); //ขยับServoไว้ที่90องศา
delay(2000); // กำหนดdelay2วินาที
}
void loop()
{
int R1 = analogRead(LDR1); // อ่านค่า LDR 1
int R2 = analogRead(LDR2); // อ่านค่า LDR 2
int diff1= abs(R1 - R2); // คำนวณค่าการเปลี่ยนแปลงของ LDR's
int diff2= abs(R2 - R1);
if((diff1 <= error) || (diff2 <= error)) {
//ถ้าค่าการเปลี่ยนแปลงน้อยกว่า error ไม่ต้องทำอะไร
} else {
if(R1 > R2)
{
initial_position = --initial_position; //ขยับServoไปที่0องศา
}
if(R1 < R2)
{
initial_position = ++initial_position; //ขยับServoไปที่180องศา
}
}
sg90.write(initial_position); // เปลี่ยนค่าของServo
delay(100);
}
Credit By : https://circuitdigest.com/microcontroller-projects/arduino-solar-panel-tracker
ความคิดเห็น
แสดงความคิดเห็น