โปรเจกต์นี้จัดเต็มให้เห็นภาพการใช้งานอินเตอร์รัพต์หลายตัวในสถานการณ์จริง เลือกมาทำเป็นระบบไฟจราจรพร้อมทางม้าลาย เพื่อให้อินเตอร์รัพต์ได้ทำงานเบื้องหลังในการตรวจจับการจราจร และรับคำขอข้ามถนนแบบล็อคค่าไว้
สำหรับการทดสอบ เราใช้เซ็นเซอร์ฮอลล์เอฟเฟกต์แทนปุ่มกดหรือลูปเซ็นเซอร์นะตัวนี้
คำขอข้ามถนนจากคนเดินเท้าจะถูกล็อคไว้ และการกดซ้ำจะถูกละเลยจนกว่าวัฏจักรการข้ามจะเสร็จสิ้น การให้สิทธิ์ข้ามจะถูกหน่วงเวลาตามจุดที่กดปุ่มในลำดับไฟจราจร แต่จะถูกจำกัดไว้สูงสุดไม่เกิน 2 รอบวัฏจักร
อินเตอร์รัพต์ตัวที่สองจะตรวจจับปริมาณการจราจรเพื่อขยายเวลาไฟเขียวออกไปตามความหนาแน่น แต่ก็จำกัดเวลาไว้ไม่ให้กีดขวางฝั่งเดียวจนเกินไป
โปรเจกต์นี้สามารถขยายไปใช้กับไฟจราจรขนาดจริงได้เลย เพียงใช้อินเตอร์เฟสที่เหมาะสม รีเลย์ คอนแทคเตอร์
และลูปตรวจจับหรือเซ็นเซอร์จราจรแบบไมโครเวฟ โปรเจกต์นี้ถูกออกแบบมาควบคุมการจราจรทางเดียวบนสะพานช่องทางเดียวที่มีทางม้าลายด้านหนึ่ง แต่ก็สามารถปรับไปควบคุมสี่แยกได้เหมือนกัน
รันบน ARDUINO Mega 2560
Road Safety Logic: ตัวควบคุมไฟจราจร
ตัวควบคุมไฟจราจร นี่แหละคือแบบฝึกหัดพื้นฐานของ ลอจิกเรื่องเวลา และ การจัดการลำดับ มันเลียนแบบระบบในโลกจริงที่คอยรักษาความปลอดภัยบนถนนให้เราทุกวัน
ลูปแห่งเวลา (Timing Loop)
โปรเจกต์นี้ไม่ใช่แค่ให้ไฟสามดวงกระพริบๆ มันต้องเรียงลำดับที่ถูกต้อง:
- ไฟเขียว: ติด 5 วินาที
- ไฟเหลือง: ติด 2 วินาที (ช่วงเตือน)
- ไฟแดง: ติด 5 วินาที
- เริ่มใหม่: ลูปนี้ทำให้มั่นใจว่าไฟเหลืองจะต้องมาก่อนไฟแดงเสมอ เหมือนของจริงเป๊ะ
อุปกรณ์ที่ต้องจัด (Hardware Components)
- Arduino Uno/Nano: สมองประมวลผล
- LEDs (แดง, เหลือง, เขียว): ตัวแทนสัญญาณไฟจราจร
- ตัวต้านทาน 220 โอห์ม (3 ตัว): ตัวละหนึ่งตัวสำหรับ LED แต่ละดวง
- เบรดบอร์ดกับสายจัมเปอร์
ทำไมต้องทำโปรเจกต์นี้?
นี่คือจุดเริ่มต้นที่เพอร์เฟกต์สำหรับการเรียนรู้ฟังก์ชัน delay() และ การจัดการสถานะ (state management) พอน้องเก่งขึ้น ก็สามารถเพิ่ม ปุ่มสำหรับคนข้ามถนน (โดยใช้อินเตอร์รัพต์) ที่บังคับให้ไฟจราจรเปลี่ยนเป็นสีแดงเมื่อมีคนต้องการข้ามได้ ทำให้การจำลองสถานการณ์ของน้องสมจริงยิ่งขึ้น ไปลองทำดู สู้งานนะน้อง!