ยังไม่ได้อัพเกรดจากชุดเริ่มต้น (LEDs, resistors, push buttons, photo resistors) เลยนะ หลังจากทำโปรเจกต์พื้นฐานใน PDF ของ inventr.io ครบทุกอันแล้ว ก็เลยอยากท้าทายตัวเองขึ้นมาอีกนิด งานนี้ใช้ตัวอย่าง Traffic Lights เป็นไอเดียคร่าวๆ แล้วเขียนโค้ดเองทั้งหมดเลยว่ะ เรียกได้ว่าเป็นโปรเจกต์แรกที่ลุยเขียนจาก Arduino template เปล่าๆ เลยทีเดียว!
ถ้าจัดเต็มด้วยการแยก Breadboard ออกเป็น 2 อัน งานนี้ต้องดูปังกว่าเดิมแน่นอน!
ส่วนโค้ดนี่รู้เลยว่ายังจัดระเบียบไม่สุด ถ้าใช้ arrays หรือเทคนิคอื่นๆ ช่วยคงสวยกว่านี้ เดี๋ยวค่อยๆ ปรับไปเรื่อยๆ เนอะ สู้ๆ!
รายละเอียดเทคนิคแบบจัดเต็ม
ระบบ State-Machine แบบกระจายศูนย์
โปรเจกต์พื้นฐานนี้จำลองการทำงานประสานเวลาที่ซับซ้อนของสัญญาณไฟจราจรหลายแยกในเมืองจริงๆ
- ลูปทำงานแบบขนานและเป็นลำดับ: Arduino จัดการชุดไฟ R/G/Y สองชุดขึ้นไป เฟิร์มแวร์ใช้ State Machine แบบก้าวหน้าโดยอาศัย
millis()เพื่อจัดการเวลาแบบ "Green-Wave" ทำให้ไฟทั้งสองชุดทำงานประสานกัน เพื่อเพิ่มความลื่นไหลให้กับการจราจรจำลอง - ระบบขัดจังหวะด้วยปุ่มคนข้ามถนน: มีปุ่ม "Crosswalk" ให้กด พอกดแล้ว Arduino จะขัดจังหวะวงจรปัจจุบันอย่างปลอดภัย พร้อมกับมีช่วง "ไฟแดงทั้งหมด" 2 วินาทีเป็น buffer ก่อนให้คนข้ามถนน
ด้านการแสดงผล
- ใช้ LED ตัวชี้วัดขนาด 10mm แบบอุตสาหกรรม: ใช้ LED ความสว่างสูงที่เลียนแบบสัญญาณไฟจราจรของจริง เฟิร์มแวร์ยังเพิ่มเอฟเฟกต์ "Fade-In/Out" ให้กับไฟสีเหลือง เพื่อความสมจริงยิ่งขึ้น