ชื่อโปรเจกต์: Sequential LED Lighting
ตอนแรกพี่กะจะทำแค่วงจรนับถอยหลังกิ๊กก๊อก (แบบว่าโคตรอีซี่) แต่พอลองเทสไปเทสมา มันคันไม้คันมือเลยอัปเกรดให้เป็นไฟวิ่งไป-กลับแบบอัตโนมัติซะเลย บอกเลยว่างานนี้ไม่ได้มาเล่นๆ นะน้อง
เจาะลึกดีเทลทางเทคนิค (แบบจัดเต็ม)
การออกแบบการเคลื่อนไหวด้วย Algorithm
โปรเจกต์นี้จะพาน้องไปดู Logic การทำไฟวิ่งแบบลื่นๆ (Fluid) และห้ามขัดจังหวะการทำงานหลัก (Non-blocking) สำหรับพวกแผง LED ชุดใหญ่ จะเอาไปประยุกต์ทำไฟประดับตึกหรือไฟเลี้ยวรถแต่งก็หล่อเท่เลยงานนี้
- การขยับตำแหน่งด้วย Modulo: แทนที่จะใช้ Loop
forซ้อนกันให้ปวดหัว โค้ดชุดนี้เลือกใช้การคำนวณแบบ Modulo (%) ในการวนสถานะ Pins ต่างๆ ข้อดีคือทำให้ Arduino ของเรายังคอยรับค่าจาก Input อื่นๆ ได้ (อย่างเช่นพวกปุ่มปรับความเร็ว) แม้ว่าไฟจะกำลังวิ่งอยู่ก็ตาม สู้งานนะน้อง! - เส้นโค้งการหรี่ไฟแบบ PWM: พี่จัด "Logarithmic Fade" โดยใช้ฟังก์ชัน
analogWrite()มาให้ด้วย เพื่อให้แสงที่ออกมาดูสมูท ดูแพง และดูเป็นธรรมชาติกว่าการสั่งเปิด-ปิดแบบโง่ๆ เยอะเลย
การขยายระบบ (Scalability)
- การพ่วง Shift Register: วงจรนี้เป็นพื้นฐานชั้นดีในการใช้ 74HC595 Shift Register หลายๆ ตัวมาต่อพ่วงกัน ช่วยให้น้องคุม LED ได้เป็นสิบๆ ดวง โดยใช้ Pins บน Arduino แค่ 3 Pins เท่านั้น ประหยัด GPIO ไปได้เยอะ ห้ามทำช็อตนะตัวนี้!