กลับไปหน้ารวมไฟล์
4-digit-display-text-scroller-ysd-439ak2b-35-757e3d.md

ขอบคุณที่น้องแวะมาดูโปรเจกต์แรกของพี่นะ!

โปรเจกต์นี้คือ Masterclass ในเรื่อง Persistence-of-Vision (PoV) และ Digit Multiplexing ตัวจริงเสียงจริงเลย ตัว 4-Digit Text Scroller เป็น Visual Messaging System สุดล้ำที่พิสูจน์ให้เห็นว่าเราสามารถใช้เซ็กเมนต์ง่ายๆ แสดงตัวอักษรและตัวเลขที่เคลื่อนไหวได้อย่างซับซ้อน โดยการสลับเปิดปิดแต่ละหลักด้วยความเร็วระดับมิลลิวินาที มันจะสร้างภาพลวงตาว่าทั้งสี่หลักติดพร้อมกันและกำลังเลื่อนข้อความได้อย่างลื่นไหลระดับหนังโรงเลยทีเดียว

หลักการทำงาน:

โปรแกรมนี้จะสลับเปิดและปิดแต่ละหลักอย่างรวดเร็วเป็นลำดับ เพื่อให้ตาของเรามองเห็นภาพว่าทุกหลักติดพร้อมกันทั้งหมด ซึ่งเป็นเรื่องสำคัญมาก เพราะตัวอักขระที่กำลังแสดงอยู่นั้น ไม่สามารถผูกติดกับหลักใดหลักหนึ่งได้ตลอดเวลา

ตัวอย่างเช่น ถ้าพี่อยากแสดงข้อความ "ABCD" หลักที่ 1 จะเปิดและปิดเพื่อแสดงตัว "A" จากนั้นหลักที่ 2 ก็จะเปิดปิดแสดงตัว "B" ทำแบบนี้ไปจนครบทั้งสี่หลัก แล้วก็วนลูปใหม่

ถ้าทำได้ถูกต้อง ตาคนจะไม่สามารถเห็นจังหวะที่ไมโครคอนโทรลเลอร์สลับหลักที่กำลังแสดงได้เลย นี่เป็นเพราะปรากฏการณ์ทางชีววิทยาที่เรียกว่า Persistence of Vision หรือ "ภาพติดตา" นั่นเอง

ภาพรวมโครงสร้างการแสดงผลและสถาปัตยกรรมการมัลติเพล็กซ์

7-Segment Text Scroller ทำงานผ่านวงจรชีวิตพิเศษที่เรียกว่า Multiplex-to-PoV ระบบนี้สร้างขึ้นบนพื้นฐานของ Sequential Gating Logic จอแสดงผล 4 หลักแบบมาตรฐานจะใช้ขาร่วมกัน 8 ขาสำหรับเซ็กเมนต์ (A-G และ DP) แต่จะมีขา "Anode" (หรือ Cathode) แยกอิสระ 4 ขาสำหรับแต่ละหลัก เพื่อที่จะแสดง "ABCD" บนจอที่สามารถแสดงได้ทีละหนึ่งตัวอักษร Arduino จะทำดังนี้:

  1. เปิดใช้งานหลักที่ 1 -> แสดง "A" -> ปิดหลักที่ 1
  2. เปิดใช้งานหลักที่ 2 -> แสดง "B" -> ปิดหลักที่ 2
  3. ทำซ้ำสำหรับทั้ง 4 หลัก ด้วยอัตรารีเฟรชที่สูงกว่า 60Hz ผลลัพธ์ที่ได้คือข้อความ 4 ตัวอักษรที่ไร้การกระพริบ และดูนิ่งสนิทในสายตามนุษย์

โครงสร้างฮาร์ดแวร์และชั้นการทำงานเชิงแสง

  • Arduino UNO R3: ตัว "จอมจับเวลา" คอยจัดการการสลับสัญญาณดิจิทัลนับพันครั้งต่อวินาที เพื่อรักษาผลลัพธ์แบบมัลติเพล็กซ์โดยไม่มีแล็กที่สังเกตเห็นได้
  • YSD-439AK2B-35 Display: ตัว "เมทริกซ์เรืองแสง" การจัดวางแบบ Common-Anode ให้แสงสีแดงคอนทราสต์สูง เหมาะกับสภาพแวดล้อมบนโต๊ะทำงาน
  • ตัวต้านทาน (Resistor) 1k Ohm บนขา Anode: วางไว้ที่ขาแอโนดร่วมเพื่อปกป้องชิปซิลิคอนจากกระแสสูงฉับพลัน (In-Rush Current) ในระหว่างรอบการสลับที่รวดเร็ว
  • ตัวต้านทาน (Resistor) 220 Ohm บนขาเซ็กเมนต์: ทำให้ความสว่างของเซ็กเมนต์ทั้ง 7 ในหนึ่งหลักสม่ำเสมอ ป้องกันไม่ให้เกิด "จุดร้อน" หรือความสว่างไม่เท่ากัน
  • การเชื่อมต่อด้วยเบรดบอร์ด: ให้บัสลอจิกที่เสถียรสำหรับการเดินสายที่ซับซ้อนซึ่งจำเป็นต้องเชื่อมต่อขาถึง 12 ขาระหว่างจอแสดงผลและ Arduino

แผนภาพวงจร:

แผนภาพการต่อบนเบรดบอร์ดพร้อมการเชื่อมต่อขาและตัวต้านทาน - สร้างด้วย TinkerCAD ต้องใช้ชิ้นส่วนอื่นแทนนิดหน่อย

ตรรกะทางเทคโนโลยีและอัลกอริทึมการเลื่อนข้อความ

ระบบของเราสามารถสร้างอนิเมชั่นที่ลื่นไหลระดับ HD ได้ ด้วย กลยุทธ์การตัดสินใจแบบ Bitwise หลายตัว:

  1. Bit-Map Character Generation: โค้ดของเรามีไลบรารีแปลภาษาแบบสั่งตัดเอง ที่แมปตัวอักษรอย่าง "A," "H," และ "S" ให้กลายเป็นรูปแบบ 8-bit สำหรับฮาร์ดแวร์ 7-Segment
  2. The Array Buffer Scroll: ข้อความที่เราตั้งค่าไว้จะถูกเก็บในอาร์เรย์ จากนั้นโค้ดจะทำการ "Shift" ดัชนีเริ่มต้นของอาร์เรย์นี้ไปเรื่อยๆ ตามเวลา สร้างเอฟเฟกต์การเลื่อน "จากขวาไปซ้าย" แบบคลาสสิกในยุค 80s
  3. Micro-Delay Optimization: ด้วยการใช้ delayMicroseconds() ซอฟต์แวร์จะปรับ "เวลาเปิด" ของแต่ละหลักให้พอดี เพื่อบาลานซ์ความสว่างกับการลดการกระพริบ หาจุดที่ "หวานกริบ" สำหรับความชัดเจนทางสายตา
  4. Sequential Power Management: ด้วยการมั่นใจว่าในทุกๆ นาโนวินาทีจะมีเพียงหลักเดียวที่ได้รับไฟ โปรเจกต์นี้ช่วยลดกระแสสูงสุดที่ดึงจาก Arduino ได้ ทำให้สามารถทำงานต่อเนื่องได้ยาวนานแบบปลอดภัย

ตัวอย่างวิดีโอ:

ทำไมโปรเจกต์นี้ถึงสำคัญนัก

การเชี่ยวชาญ Multiplexing และ PoV Animation เป็นสกิลขั้นเทพสำหรับ Display Engineers และ UI Designers ทั้งหลาย มันสอนให้รู้วิธีควบคุมฮาร์ดแวร์ที่ข้อมูลแน่นเอี๊ยด แต่ใช้พิน GPIO น้อยที่สุดเลยนะตัวนี้ นอกเหนือจาก 7-Segment แล้ว หลักการเดียวกันนี้ยังถูกใช้ใน ป้าย LED ระดับโปร, จอ Dot Matrix แบบมาร์กี, และ การปรับอัตรารีเฟรชใน VR/AR อีกด้วย การสร้างสครอลเลอร์ตัวนี้พิสูจน์แล้วว่าน้องสามารถจัดการกับลูปซอฟต์แวร์ที่ต้องตรงเวลาเป๊ะๆ และสร้างเครื่องมือสื่อสารแบบไดนามิกที่ใช้งานได้จริง สำหรับ UI ในระบบ Embedded สมัยใหม่เลยทีเดียว เก่งจัดไปวัยรุ่น!

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

apps:
  - "1x Arduino IDE 1.8"
author: "spatium2013"
category: "Screens & Displays"
components:
  - "1x Breadboard - 830 contacts"
  - "4x 1k Resistor"
  - "1x 4 Digit 7 Segment Common Anode Display"
  - "1x Arduino Uno Rev3"
description: "โปรแกรมขับจอ 7 Segment 4 หลัก วัยรุ่นจัดๆ ให้มันแสดงและเลื่อนข้อความที่เราตั้งเองได้ งานง่ายแต่หล่อมาก!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/339447f4-2880-4c98-9619-002bc615c64d.ino"
encryptedPayload: "U2FsdGVkX1/jb1ZNgCLUbNQsFx1EeJWY/2SMgCVgvvhPIm20D+9ejgzWUDucqhPm4A7W8V07EtRGmsLJAHKNjtGlHstY953ss1c5D+sgyT4="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/4-digit-display-text-scroller-ysd-439ak2b-35-757e3d_cover.jpg"
lang: "en"
likes: 2
passwordHash: "5d3ad7d776cb68c32287feb17478c306916390da6920f60f17df341aa7e3438b"
price: 1120
seoDescription: "Create a Text Scroller for 7 segment 4 digit display to display and scroll custom text."
tags:
  - "Communication"
title: "จอ 4 หลักแบบเทพๆ เลื่อนข้อความตึงๆ (YSD-439AK2B-35)"
tools: []
videoLinks:
  - "https://youtu.be/4EWE6kmX5tI"
views: 1478