กลับไปหน้ารวมไฟล์
arduino-seven-segment-clock-4add6a.md

โปรเจกต์ของพี่คือ นาฬิกาแก้ไขเวลาอัตโนมัติแบบไม่ใช้โมดูล RTC ตัวช่วย (จัดไปวัยรุ่น!)

เกี่ยวกับโปรเจกต์

พี่ออกแบบนาฬิกา Arduino ใหม่ที่แสดงเวลาบนจอ Seven Segment หลายตัว พี่เอา Arduino กับโมดูล DS1307 RTC มาแต่งงานกันให้มันทำงานได้สมบูรณ์แบบ

รายการอุปกรณ์ (เตรียมตัวให้พร้อม)

  • Arduino nano
  • จอ Seven Segment (แบบ Common Anode) *6 ตัว
  • ชิฟต์เรจิสเตอร์ SN74HC595 * 2 ตัว
  • ทรานซิสเตอร์ Bc547 (n p n) *6 ตัว
  • โมดูล DS1307 RTC
  • ตัวต้านทานดึงขึ้น (Pull-up Resistor) 10k
  • ตัวต้านทาน 100Ω
  • บอร์ดทดลองและสายจัมเปอร์

DS1307 RTC

เพื่อให้คุยกับโมดูล RTC ได้ พี่ติดตั้งไลบรารี #include <RTClib.h> จาก Library Manager ใน Arduino IDE โมดูล RTC คุยกับ Arduino ผ่านการสื่อสารแบบ I2C ครับ วิธีต่อสาย I2C ระหว่าง Master (Arduino) กับ Slave (RTC) ก็คือ ต่อขา A4 ของ Arduino ไปที่ขา SDA ของ RTC และขา A5 ของ Arduino ไปที่ขา SCL ของ RTC แล้วอย่าลืมใส่ตัวต้านทานดึงขึ้น (Pull-up Resistor) 10k ด้วยนะ

Shift Register

พี่ใช้ชิฟต์เรจิสเตอร์ SN74HC595 เพราะมันควบคุมง่ายมากด้วย Arduino ตัวแรกใช้ควบคุมเซ็กเมนต์ทั้ง 7 ของแต่ละจอ ส่วนอีกตัวใช้สำหรับทำมัลติเพล็กซ์ (Multiplexing) เจ้ามัลติเพล็กซ์นี่คือเทคนิคที่ทำให้เราสามารถแสดงตัวเลขต่างกันบนจอหลายๆ ตัวได้โดยใช้พินน้อยลง

Seven Segment Display

โปรเจกต์นี้เราต้องใช้จอ Seven Segment 6 ตัวเพื่อแสดงเวลา พี่ใช้แบบ Common Anode นะ

การเดินสาย

เดินสายตามวงจรของพี่ให้ครบ หลังจากเสร็จแล้ว ตรวจสอบการต่อทุกจุดอีกทีเพื่อลดความผิดพลาด ห้ามช็อตนะตัวนี้!

โค้ด

ก็อปปี้โค้ดของพี่ไปวางใน Arduino Editor ของน้อง แล้วอัปโหลดลงบอร์ด Arduino ได้เลย นาฬิกาของน้องก็พร้อมใช้งานแล้ว

สุดยอดไปเลย!

สำเร็จแล้ววว!

ผู้สร้าง - Ramji Patel Jhansi

รายละเอียดเทคนิคเพิ่มเติม

นาฬิกาแสดงตัวเลขแบบมัลติเพล็กซ์

โปรเจกต์นี้สร้างนาฬิกาตั้งโต๊ะระดับมืออาชีพโดยใช้จอ Seven Segment 4 หลักขนาดใหญ่และโมดูลเก็บเวลาที่มีความแม่นยำสูง

  • มัลติเพล็กซ์แบบ Common Cathode: เพื่อประหยัดพิน Arduino จะสลับเปิดปิดแต่ละหลักอย่างรวดเร็ว (มากกว่า 60Hz) โดยให้แสงสว่างเพียงหลักเดียวในหนึ่งเวลา แต่ทำเร็วจนตามองไม่ทัน Arduino จึงสร้างภาพลวงตาว่าจอ 4 หลักแสดงผลพร้อมกันได้ โดยใช้พินดิจิตอลแค่ 12 พินเท่านั้น
  • ความแม่นยำของ DS3231 RTC: จับเวลาที่แน่นอนผ่านบัส I2C จาก Real-Time Clock เฟิร์มแวร์จะจัดการแปลเวลาแบบ 24 ชั่วโมงให้เป็น "Clock Bitmask" สำหรับเซ็กเมนต์ของ Seven Segment ต่อไป สู้งานนะน้อง!

ตั้งค่าได้ตามใจผู้ใช้

  • ปุ่มปรับเวลาแบบแมนนวล: มีปุ่มกดจริงๆ 2 ปุ่มสำหรับตั้งค่า ชั่วโมง และ นาที เอาไว้ เวลาตั้งค่าเสร็จแล้วข้อมูลจะถูกเซฟลง EEPROM ภายใน ของ Arduino เลย ไฟดับเมื่อไหร่ก็ไม่ต้องกลัวข้อมูลหาย จัดไปวัยรุ่น!

รูปภาพประกอบ

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

apps:
  - "1x Arduino IDE"
author: "ramjipatel376"
category: ""
components:
  - "1x Solderless Breadboard Full Size"
  - "8x Resistor 1k ohm"
  - "2x SparkFun 7-Segment Serial Display - Red"
  - "1x Jumper wires (generic)"
  - "3x Tactile Switch, Top Actuated"
  - "1x Capacitor 100 nF"
  - "1x Arduino UNO"
  - "1x Capacitor 10 µF"
  - "3x Resistor 10k ohm"
  - "1x MAX7219/MAX7221 LED Display Drivers"
description: "งานง่ายแต่หล่อ! ใช้ Arduino ควบคุม 7-Segment ให้แสดงเวลาด้วยเลขสีแดงใหญ่ๆ เทพๆ วัยรุ่นต้องมีไว้จัดไป"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/20bba601-05c6-4033-956b-18039106a45a.ino"
  - "https://projects.arduinocontent.cc/20bba601-05c6-4033-956b-18039106a45a.ino"
encryptedPayload: "U2FsdGVkX18eb77koMiLfrisHK2V2JdhPRCohOS+lpkL6KZebWXv0XFIagSU97yXoYTVnsN0mFpSg42rgvZPfGmhDilhZiU7cjwp3fmV+uc="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-seven-segment-clock-4add6a_cover.jpg"
lang: "en"
likes: 0
passwordHash: "e5ce4756251d386f33bcfe4b274323b104e4471dd39aa87c076cad8680d3522d"
price: 1120
seoDescription: "Build an Arduino 7-segment clock using the ds1307 module. Accurate digital time display project for Arduino enthusiasts."
tags:
  - "lights"
  - "clocks"
  - "human welfare"
  - "smartwatches"
title: "นาฬิกา Arduino 7-Segment ตัวเบิ้ม ตอนนี้รู้เวลาแบบตึงๆ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/5ZBzKYJ1LbU"
views: 4499