มาทำแอนิเมชันไฟวิ่งแบบรถ Knight Rider ด้วยโพเทนชิออมิเตอร์กัน!

จำรถสุดเท่ในซีรี่ย์ตำนาน Knight Rider ได้มั้ย? ไฮไลท์ของมันคือไฟ LED ด้านหน้าที่วิ่งสว่างไล่กันไปมาแบบนี้แหละ!

สำหรับน้องๆ ที่พึ่งเริ่มเล่น Arduino อยากลองเขียนโค้ด งานนี้เราจะมาทำแอนิเมชันไฟวิ่งแบบนี้ด้วยโพเทนชิออมิเตอร์กัน!

ไม่ต้องมัววุ่นวายกับเบรดบอร์ดให้ยุ่งยาก แค่ต่อสายแล้วเริ่มเขียนโค้ดได้เลยทันที! ง่ายเว่อร์
ทฤษฎีและตรรกะของแอนิเมชัน
เอฟเฟกต์ Knight Rider (หรือที่เรียกว่า "Larson Scanner") คือการให้ไฟวิ่งไป-กลับตามแถวของ LED ในโปรเจคนี้เราใช้ Shift Register 74HC595 มาควบคุม LED 12 ดวง โดยใช้พินดิจิตอลบน Arduino แค่ 3 พินเท่านั้น! ช่วยให้เราขยายโปรเจคได้โดยไม่กินพิน GPIO หมดบอร์ด
รายละเอียดฮาร์ดแวร์
- Shift Register (74HC595): ชิป 8-bit แบบ serial-in, parallel-out ตัวนี้คือหัวใจของการควบคุม LED เราส่งข้อมูลแบบอนุกรมเพื่อเปิด/ปิด LED แต่ละดวงได้ด้วยความเร็วสูง
- ควบคุมด้วยโพเทนชิออมิเตอร์: เราเชื่อมโพเทนชิออมิเตอร์แบบหมุนเข้ากับอินพุตอนาล็อก (A0) ทำให้เราปรับความเร็วการวิ่งของไฟแบบเรียลไทม์ได้ด้วยการเปลี่ยนแรงดันระหว่าง 0V ถึง 5V
มาดูของจริงกับ Circle Electronic NOOB Series Knight Rider กัน!


แล้วเราจะทำอะไรได้บ้างล่ะ?

แล้วจะทำแอนิเมชันนี้ด้วยโพเทนฯ ยังไง?
ไปดูวิดีโอสอนกันเลย!

ในโปรเจคนี้เราจะใช้ Shift Register 74hc595
แล้วเราจะทำแอนิเมชันนี้ด้วย shift register ยังไง ไปดูกันต่อ!
โค้ดดิ้งกับ Map และ ShiftOut
Arduino อ่านค่าอะนาล็อกจากโพเทนชิออมิเตอร์ (0-1023) แล้วใช้ฟังก์ชัน map() เพื่อแปลงค่านี้เป็นดีเลย์เวลาที่ใช้ได้ หรือตำแหน่งเฉพาะในลำดับของ LED:
potvalue = map(potvalue, 0, 1023, 0, 11);
การแมปเรสโซลูชัน 10-bit ของ ADC ไปยัง 12 ตำแหน่งของ LED ของเรา ทำให้เราสร้างสแกนเนอร์แบบอินเทอร์แอคทีฟได้ โดยที่ปุ่มหมุนควบคุมตำแหน่งหรือความเร็วของแถบไฟได้โดยตรง
นี่คือโค้ดของเราเพื่อสร้างอนิเมชันนี้ด้วย 74hc595 เราจะปรับเปลี่ยนมันเพื่อใช้กับโพเทนชิออมิเตอร์
เราปรับโค้ดแบบนี้:
#define DATA 8
ทีนี้เราจะอ่านข้อมูลจากโพท
เราจะต่อขากลางของโพทเข้ากับขาอะนาล็อก 0 ของ Arduino แล้วอ่านค่ามา
int pot=A0;

นี่คือข้อมูลที่เราได้หลังจากการต่อวงจร เมื่อเราหมุนโพเทนชิออมิเตอร์ เราจะอ่านค่าในช่วง 0-1023 เราต้องแปลงค่าเหล่านี้เป็น 0-11
เราจะใช้คำสั่ง map เพื่อทำสิ่งนี้:
potvalue= map(potvalue,0,1023,0,11);
ตอนนี้เรากำลังเปลี่ยนโค้ดของเรา:
#define DATA 8
นี่คือเวอร์ชันสุดท้ายของโค้ดนี้
แผนภาพวงจรและทรัพยากร
- ลิงก์ Tinkercad: (ลิงก์ถูกนำออกตามกฎ)
- รายละเอียดสินค้า: (ลิงก์ถูกนำออกตามกฎ)
โปรเจกต์นี้เป็นจุดเริ่มต้นที่เจ๋งมากสำหรับการเรียนรู้วิธีใช้ Shift Registers และ Analog Input เพื่อสร้างเอฟเฟกต์ภาพระดับเทพด้วยสายไฟน้อยสุด
จบแล้ววว!
(ลิงก์เว็บไซต์และทรัพยากรภายนอกทั้งหมดถูกนำออกตามกฎ)