กลับไปหน้ารวมไฟล์
arduino-clock-with-lcd-20x4-i2c-296a53.md

ก็คิดเล่นๆ ว่าจะทำนาฬิกาให้มันเดินได้ด้วย Arduino Uno แทนที่จะใช้โมดูล RTC ไปซะเลย ถึงจะใช้ได้ แต่พี่แนะนำให้ไปหาซื้อโมดูล RTC มาใช้จะดีกว่านะ ตรงเวลาแม่นยำกว่าเยอะ

ดูคลิปนี้แล้วจะเห็นว่ามันทำงานยังไง!

ฟอนต์เบิ้มๆ: นาฬิกา LCD 20x4 แบบ Custom

การพิมพ์ตัวหนังสือมาตรฐาน 5x8 พิกเซลลงบน LCD มันง่ายชิ้นหาย แต่เจ้า Extended 20x4 Custom Font Clock นี่แหละที่จะบังคับให้น้องต้องล้วงลึกเข้าไปในพารามิเตอร์ของไลบรารี LiquidCrystal ให้สุดตัว เป้าหมายคือสร้างตัวเลขที่กินพื้นที่ ความสูงทั้งหมด ของจอ 4 บรรทัด ให้เหมือนนาฬิกาดิจิทัลรุ่นเก่าๆ

การสร้าง Custom Character แบบ Hexadecimal

โมดูล LCD อนุญาตให้เราสร้างสัญลักษณ์แบบกำหนดเองได้สูงสุด 8 ตัว

  1. The Shapes: วาด "บล็อก" แบบกำหนดเอง 8 แบบ (เช่น บล็อกทึบ, บล็อกที่มีด้านบนเฉียง, บล็อกที่มีด้านล่างโค้ง) แล้วแปลงกริดพิกเซล 5x8 เหล่านี้ให้เป็นอาร์เรย์ของไบต์
  2. The Font Array: เขียนเมทริกซ์อาร์เรย์ 2 มิติตัวเบิ้มๆ ที่กำหนดวิธีการสร้างเลข "8" โดยใช้บล็อกพวกนี้ข้ามทั้ง 4 แถว
  3. The Assembly: เวลาจะวาดเลข "8" ที่ตำแหน่งเคอร์เซอร์ (0,0):
    • แถว 1: โค้ง, ทึบ, ทึบ, โค้ง
    • แถว 2: ทึบ, ว่าง, ว่าง, ทึบ
    • น้องต้องเขียนอัลกอริทึมการพิมพ์ที่ซับซ้อนเพื่อจัดการกับการย้อนกลับของเคอร์เซอร์ เพื่อประกอบตัวเลขยักษ์นี่ขึ้นมาทีละบล็อก! งานเข้าแล้ววัยรุ่น

การเชื่อมต่อฮาร์ดแวร์ I2C แบบแท้ๆ

เพราะนาฬิกาตัวนี้โคตรจะซับซ้อน การจับเวลาต้องถูกปลดออกไปให้หมด

  • โมดูล DS3231 RTC จะถูกต่อสายเข้ากับพิน SDA/SCL ของ I2C
  • ที่สำคัญมาก จอ LCD 20x4 ต้อง มี I2C Backpack บัดกรีติดอยู่ด้านหลัง
  • น้องต่อสาย I2C ของ LCD เข้ากับสายของ RTC แบบขนานโดยตรงเลย Arduino จะสั่งการทั้งตัวจับเวลาและจอแสดงผลโดยใช้สายแค่ 4 เส้นบนเบรดบอร์ด! จัดไป

อุปกรณ์ฮาร์ดแวร์

  • Arduino Uno/Mega: เพราะอาร์เรย์ฟอนต์ตัวเบิ้ม ถ้าใช้ Mega จะดีกว่า เดี๋ยว SRAM ของ Uno เต็มเอา
  • จอแสดงผลข้อความ LCD 20x4 (สีฟ้าหรือ เขียว/เหลือง) พร้อมโมดูล I2C
  • โมดูลนาฬิกาจริงความแม่นยำสูง DS3231

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

apps:
  - "1x Arduino IDE"
author: "c010rblind3ngineer"
category: "Screens & Displays"
components:
  - "1x Jumper wires (generic)"
  - "1x I2C 16x2 Arduino LCD Display Module"
  - "1x Arduino UNO"
description: "Master the matrix! Program an enormous 20-character by 4-line LCD to display the time with custom-designed, massive font characters spanning multiple lines."
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles:
  - "https://github.com/c010rblind3ngineer/clock-LCD2004-I2C.git"
  - "https://projects.arduinocontent.cc/64b1059d-d5b1-48f9-bd46-254ac81b731b.ino"
  - "https://github.com/c010rblind3ngineer/clock-LCD2004-I2C.git"
encryptedPayload: "U2FsdGVkX1806oOJvLkAWlb3dOS1OTe0CWByPgYQKTnk32mFDyS67IwIZCddHAvxzWpDR+QKeLrPqik0gwMj9qKAAzGMoRD+5IUnVgXt0Is="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/arduino-clock-with-lcd-20x4-i2c-296a53_cover.jpg"
lang: "en"
likes: 1
passwordHash: "913caf28905caded6a2aef21bce9803ab5d26bd97998517cbc4472aafc15618a"
price: 1120
seoDescription: "Arduino 'Clock' project using LCD (20x4) I2C. Set date and time via Serial Monitor to start the digital clock display."
tags:
  - "clocks"
title: "โปรเจค Arduino นาฬิกาเทพๆ บน LCD (20x4) I2C งานง่ายแต่หล่อจัด!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/ayGb_MG_Kts"
views: 4653