กลับไปหน้ารวมไฟล์
traffic-lights-using-7-segment-display-cb0593.md

วิดีโอข้างล่างนี้พี่ทำไฟจราจรโดยใช้ 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

สี่แยกหนึ่งแห่งต้องการไฟจราจรสองชุด (เหนือ/ใต้ และ ตะวันออก/ตะวันตก)

  1. ข้อผิดพลาดร้ายแรง: ถ้าน้องใช้ delay() แล้วไฟทั้งสองชุดเผอิญเป็นสีเขียวพร้อมกัน... น้องเพิ่งก่ออุบัติเหตุรถชนกันในโลกดิจิทัลไปแล้ว!
  2. State Lock: น้องต้องกำหนด State (สถานะ) ที่ชัดเจนและตายตัว State 1: NS_Green, EW_Red State 2: NS_Yellow, EW_Red State 3: NS_Red, EW_Red (Safety buffer) State 4: NS_Red, EW_Green
  3. ลูป 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 แสนดวงของเราปลอดภัย ไม่ช็อตกลางอากาศ

ขั้นตอนการประกอบโปรเจกต์:

  1. เตรียมอุปกรณ์ให้ครบ เช่น Arduino Uno, จอ 7-Segment, ตัวต้านทาน 330 โอห์ม, บอร์ดทดลอง, LED สีแดง เขียว เหลือง, สายจัมเปอร์ ฯลฯ
  2. วาง LED สีแดง, เหลือง, และเขียวลงบนบอร์ดทดลอง (BreadBoard)
  3. ต่อขาแอโนด (ขาบวก) ของ LED ทุกดวงเข้ากับตัวต้านทาน 330 โอห์ม
  4. ต่อจอแสดงผล 7-Segment ลงบนบอร์ดทดลอง
  5. ต่อขา Common ของจอ 7-Segment เข้ากับตัวต้านทาน 330 โอห์ม
  6. ต่อสายทั้งหมดตามวงจรที่กำหนด (ตามแผนภาพ)
  7. อัพโหลดโค้ด แล้วทดสอบการทำงาน

โปรเจกต์ของน้องพร้อมใช้งานแล้ววว...!!!

อิเล็กทรอนิกส์คือความสนุก (Electronics is Fun)

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "mohammadsohail0008"
category: ""
components:
  - "1x 5 mm LED: Green"
  - "4x Resistor 330 ohm"
  - "1x 5 mm LED: Red"
  - "1x 5 mm LED: Yellow"
  - "1x 7 Segment LED Display, InfoVue"
  - "1x Jumper wires (generic)"
  - "1x Arduino UNO"
description: "มาทำไฟจราจรที่มันไม่ธรรมดากัน! มีเซนเซอร์นับรถ ตัวนับเลขแบบ 7-Segment งานง่ายแต่หล่อ ใช้ Arduino จัดการอินเตอร์รัพต์ให้เป๊ะเวอร์ รับรองทำเสร็จแล้วอวดเพื่อนได้จัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/46f86fd9-5a16-4e73-bd1d-44fd2a6f676e.ino"
  - "https://projects.arduinocontent.cc/46f86fd9-5a16-4e73-bd1d-44fd2a6f676e.ino"
encryptedPayload: "U2FsdGVkX185pySukzWBEIdzeM58n/yzx9xyD0JbLvFCDlziYjRmyOlpjQtWHN5/Xotn7n/P/qAupqybOb7/NRQNMQ+ee3BtGNnpHHhGePA="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/traffic-lights-using-7-segment-display-cb0593_cover.jpg"
lang: "en"
likes: 3
passwordHash: "2e5f9d79d3e62f75a1afc851f77f3e5e42d385409a028b7f005b3a314fb9a857"
price: 299
seoDescription: "Build Traffic Lights with a traffic counter using 7 segment display and Arduino. Simple step-by-step guide for traffic control projects."
tags:
  - "lights"
  - "energy efficiency"
  - "cars"
  - "passenger vehicles"
title: "ไฟจราจรสุดเท่ กับ 7-Segment Display ตัวนับรถตึงๆ"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/avDpOO-Ul20"
views: 29277