วิดีโอข้างล่างนี้พี่ทำไฟจราจรโดยใช้ Arduino กับ 7 segment display มาดูกัน
พี่ใช้ 7 segment ตัวเดียวเพื่อนับเวลาถอยหลังจาก 9 วิ ลงไปจนถึง 0 วิ
โปรเจคนี้ถือว่าเป็นโปรเจคระดับกลางๆ ที่ดีมากเลยนะ น้องๆ นักเรียนหรือเด็กวิศวะสามารถเอาไปทำโชว์ในโรงเรียนหรือมหาลัยได้สบายๆ
ทำตามได้ไม่ยากเลย ตัวนี้
มันสนุกดีนะ น้องจะเอาไปปรับแต่งเพิ่มได้ เช่น ใช้ 2 ตัว display เพื่อนับเลขได้เยอะขึ้น
ถ้าชอบโปรเจคนี้ก็อย่าลืมกดไลค์ให้กำลังใจพี่ด้วยนะ
ถ้ามีคำแนะนำอะไรที่จะช่วยให้พี่พัฒนางานได้ดีขึ้น หรืออยากติชมอะไรเกี่ยวกับช่อง YouTube ของพี่ ก็บอกมาได้เลย
หรือจะแนะนำพี่ก็ได้ว่า "โปรเจคต่อไปควรทำอะไรดี.?"
Urban Infrastructure: 7-Segment Traffic System
การทำให้ LED สามสี (แดง, เหลือง, เขียว) กระพริบนั้นคือบทเรียนวันแรกของ Arduino แต่ 7-Segment Traffic Lights นี่พาไอเดียนั้นไปอีกระดับ เป็นโมเดลสี่แยกเต็มรูปแบบ มันจะพาน้องไปรู้จักกับคอนเซปต์วิศวะที่สำคัญอย่าง "Cross-Traffic States", การขัดจังหวะ (Interrupt) จากปุ่มกดคนข้ามถนนแบบ Asynchronous และการนับถอยหลังแบบเรียลไทม์บนจอแสดงผลขนาดใหญ่ที่ใช้เทคนิค Multiplexing
State-Machine Cross Logic
สี่แยกหนึ่งแห่งต้องการไฟจราจรสองชุด (เหนือ/ใต้ และ ตะวันออก/ตะวันตก)
- ข้อผิดพลาดร้ายแรง: ถ้าน้องใช้
delay()แล้วไฟทั้งสองชุดเผอิญเป็นสีเขียวพร้อมกัน... น้องเพิ่งก่ออุบัติเหตุรถชนกันในโลกดิจิทัลไปแล้ว! - State Lock: น้องต้องกำหนด State (สถานะ) ที่ชัดเจนและตายตัว
State 1: NS_Green, EW_RedState 2: NS_Yellow, EW_RedState 3: NS_Red, EW_Red (Safety buffer)State 4: NS_Red, EW_Green - ลูป
switch(currentState)จะบังคับให้ State 4 เกิดขึ้นไม่ได้เลย จนกว่า State 3 จะทำงานเสร็จ สิ่งนี้รับประกันความปลอดภัยทางกายภาพ (ห้ามชนกันเด็ดขาด!)
Multiplexing the TM1637 Display
ตอนที่ไฟเหนือ/ใต้เป็นสีแดง คนเดินถนนต้องรู้ว่าเขามีเวลากี่วินาทีในการข้ามถนน
- น้องจะต้องต่อ TM1637 4-Digit 7-Segment Display เข้ากับโปรเจค
- ลูป
forง่ายๆ ก็ใช้ได้ เช่นfor (int i = 15; i > 0; i--)เพื่อนับถอยหลัง - แต่ว่านะ! Arduino ต้องทำการ Multiplex จอแสดงผล (คือให้ LED ที่แสดงตัวเลขกระพริบเร็วเป็นพันๆ ครั้งต่อวินาที เพื่อให้ตามนุษย์เราเห็นเป็นเลข "15" ค้างอยู่) พร้อมๆ กันนั้นมันยังต้องคอยฟังสัญญาณจากปุ่ม "Walk Request" ของคนเดินถนนที่ต่ออยู่กับ
Pin 2 (Interrupt)อีกด้วย - ถ้าคนเดินถนนกดปุ่มตอนอยู่ใน State 4, Arduino จะเปลี่ยน State Machine อย่างราบรื่นทันที โดยเปลี่ยนไฟ EW_Green เป็นสีเหลืองในทันที! จัดไปวัยรุ่น
อุปกรณ์ที่ต้องใช้สำหรับโปรเจกต์สี่แยกไฟจราจร
- Arduino Mega/Uno (ตัวหลักของงานเลย)
- LED 6 ดวง (แดง 2, เหลือง 2, เขียว 2) (จัดชุดไฟจราจรให้ครบ)
- จอแสดงผล 4 หลัก TM1637 หรือจะใช้บล็อก 7-Segment ขนาด 3 นิ้วแบบจัดเต็มเพื่อความสมจริงก็ได้
- ปุ่มกดแบบอาร์เคด ไว้เป็นปุ่มกดข้ามถนน
- ตัวต้านทาน (Resistor) 220 โอห์มอีกเพียบ เพื่อจำกัดกระแสให้ LED แสนดวงของเราปลอดภัย ไม่ช็อตกลางอากาศ
ขั้นตอนการประกอบโปรเจกต์:
- เตรียมอุปกรณ์ให้ครบ เช่น Arduino Uno, จอ 7-Segment, ตัวต้านทาน 330 โอห์ม, บอร์ดทดลอง, LED สีแดง เขียว เหลือง, สายจัมเปอร์ ฯลฯ
- วาง LED สีแดง, เหลือง, และเขียวลงบนบอร์ดทดลอง (BreadBoard)
- ต่อขาแอโนด (ขาบวก) ของ LED ทุกดวงเข้ากับตัวต้านทาน 330 โอห์ม
- ต่อจอแสดงผล 7-Segment ลงบนบอร์ดทดลอง
- ต่อขา Common ของจอ 7-Segment เข้ากับตัวต้านทาน 330 โอห์ม
- ต่อสายทั้งหมดตามวงจรที่กำหนด (ตามแผนภาพ)
- อัพโหลดโค้ด แล้วทดสอบการทำงาน
โปรเจกต์ของน้องพร้อมใช้งานแล้ววว...!!!
อิเล็กทรอนิกส์คือความสนุก (Electronics is Fun)