1. ทำงานอย่างไร?
การตัดสินใจว่าจะขึ้นหรือลงเพื่อติดตามแสงนั้นทำได้ง่ายมาก มี LDR สี่ตัว โดยมีสองตัวอยู่ด้านบนและสองตัวอยู่ด้านล่าง Arduino จะอ่านค่าอนาล็อกของ LDR ทั้งหมด หากค่าเฉลี่ยของสองตัวบนมากกว่าสองตัวล่าง แสดงว่าแสงอยู่ด้านบน ดังนั้นมุมของ microservo จะถูกเพิ่มขึ้น มิฉะนั้นจะถูกลดลง
2. คำอธิบายเพิ่มเติมเล็กน้อย
เนื่องจากค่าเฉลี่ยไม่ใช่ตัวเลขที่ตายตัว ดังที่คุณเห็นในโค้ด จึงมีการใช้ threshold ด้วยวิธีนี้ มุมจะถูกเปลี่ยนก็ต่อเมื่อค่าเฉลี่ยทั้งสองค่าแตกต่างกันอย่างมากเท่านั้น
const int threshold = 50;
[.....]
down_average = (A0_val + A1_val)/2;
up_average = (A2_val + A3_val)/2;
diff = abs(up_average-down_average);
if ((up_average > down_average) && (diff > threshold))
{
if (val < 180) //if different from max val
{
val++;
myservo.write(val);
}
}
if((down_average > up_average) && (diff > threshold))
{
if (val > 0) //if different from min val
{
val--;
myservo.write(val);
}
}
3. วงจร
สร้างวงจรตามภาพด้านล่าง!

4. พิมพ์ & ตัด
ดาวน์โหลดไฟล์ที่แนบมา พิมพ์มัน จากนั้นติดกาวลงบนกระดาษแข็งแล้วตัดชิ้นส่วนทั้งหมดสำหรับ light follower ของคุณ คุณควรจะได้ออกมาประมาณนี้

5. ติดตั้งฐาน
ติดตั้งฐาน breadboard ด้วยวิธีนี้ ทากาวหากจำเป็น

6. ติดตั้ง Servo
ติดตั้ง servo ตามภาพด้านล่าง ขันสกรูเพื่อเพิ่มความมั่นคง

7. ติดตั้งขายึด
ติดตั้งขายึดด้วยวิธีนี้

8. ติดตั้งเฟือง Servo
ติดตั้งเฟือง servo ขันสกรูด้วยวิธีนี้

9. ประกอบทั้งหมดเข้าด้วยกัน
นำทั้งหมดมาประกอบเข้าด้วยกัน คุณควรจะได้ออกมาประมาณนี้

10. ติดกาว Breadboard บนฐาน
ติดกาว breadboard บนฐาน คุณสามารถใช้เทปกาวสองหน้าของ breadboard ได้

11. ขันสกรู Arduino
ขันสกรู Arduino ที่ด้านหลังของฐาน

12. ยอดเยี่ยม!
ยอดเยี่ยม! ตอนนี้คุณมีทุกสิ่งที่จำเป็นแล้ว ดาวน์โหลดโค้ดลงใน Arduino ของคุณ แล้วสนุกไปกับ light follower ของคุณได้เลย!

รายละเอียดทางเทคนิคเพิ่มเติม
การเคลื่อนที่อัตโนมัติแบบติดตามแสง
หุ่นยนต์นี้ได้รับการออกแบบมาเพื่อ "ค้นหา" แหล่งกำเนิดแสงที่สว่างที่สุดในห้อง โดยเลียนแบบพฤติกรรมของพืชหรือแมลง
- การตรวจจับแบบ Differential: ใช้ Light Dependent Resistors (LDRs) สองตัวติดตั้งที่ด้านหน้าของหุ่นยนต์ โดยมีตัวแบ่งกั้นทางกายภาพกั้นอยู่ Arduino จะเปรียบเทียบการอ่านค่าอนาล็อกจากเซ็นเซอร์ทั้งสอง
- ตรรกะการบังคับเลี้ยว: หากเซ็นเซอร์ด้านซ้ายอ่านค่าแสงได้มากกว่า Arduino จะสั่งให้มอเตอร์ด้านขวาหมุนเร็วขึ้น หากเซ็นเซอร์ด้านขวาอ่านค่าได้มากกว่า ก็จะสั่งให้มอเตอร์ด้านซ้ายหมุน
สถาปัตยกรรมฮาร์ดแวร์
- ระบบขับเคลื่อน: ขับเคลื่อนด้วยมอเตอร์ DC gear-motor สองตัวผ่าน L293D motor driver
- เรียบง่ายและมีประสิทธิภาพ: นี่เป็นโปรเจกต์พื้นฐานแบบคลาสสิกสำหรับการทำความเข้าใจ analog feedback loops และการควบคุมแบบ PID พื้นฐานโดยไม่ต้องใช้คณิตศาสตร์ที่ซับซ้อน