กลับไปหน้ารวมไฟล์
interfacing-8x8-led-dot-matrix-with-arduino-7ab4ca.md

Bare-Metal Multiplexing: Raw 8x8 LED Matrix

บทเรียนส่วนใหญ่จะบอกให้คุณซื้อ 8x8 Matrix ที่มีชิป Driver ในตัว โปรเจกต์นี้ห้ามสิ่งนั้นโดยเด็ดขาด โปรเจกต์ Interfacing 8x8 Dot Matrix จะบังคับให้คุณใช้ LED 64 ดวงแบบเปลือยๆ และควบคุมมันทั้งหมดทางคณิตศาสตร์ โดยใช้การจัดการ Array พื้นฐานของวิทยาการคอมพิวเตอร์ และลูป C++ polling ที่เร็วสุดขีด นี่คือบททดสอบที่บริสุทธิ์ที่สุดของวิศวกรรมการจับเวลาเชิงตรรกะ!

1306_oled_retro_game_display_1772681532057.png

The Persistence of Vision (POV) Deception

คุณมี LED 64 ดวง แต่มี Pin เพียง 16 Pin (8 Rows, 8 Columns) ถ้าคุณเปิด Row 1 (5V) และ Col 1 (GND) LED ด้านซ้ายบนจะสว่างขึ้น!

  1. กับดักทางกายภาพหลัก: หากคุณเปิด Row 1, Row 2 และ Col 1, Col 2 เพื่อพยายามวาดสี่เหลี่ยม คุณจะทำให้ LED สว่าง 4 ดวงโดยไม่ตั้งใจ แทนที่จะเป็น 2 ดวง! ทางกายภาพแล้ว คุณไม่สามารถวาดรูปทรงที่แตกต่างกันสองรูปทรงพร้อมกันบนกริดอนาล็อกเดียวกันโดยไม่มี Crosstalk ได้!
  2. คุณต้องอาศัยหลักการของ Persistence of Vision (POV)
  3. คุณจ่าย 5V เข้า Row 1 ทั้งหมด คุณต่อ Columns 3, 4, 5 ลง GND เส้นบนสุดจะสว่างขึ้น!
  4. คุณปิด Row 1 ทันที คุณจ่าย 5V เข้า Row 2! คุณต่อ Columns 1 and 8 ลง
  5. คุณต้องเขียนลูป for สำหรับการวนซ้ำ Array ที่เจ็บปวด ซึ่งจะสแกนลงไปทั้ง 8 Rows อย่างสมบูรณ์ ทีละ Row นับพันครั้งต่อวินาที! delayMicroseconds(500); คือขีดจำกัดเวลาที่สำคัญ หากค้างแม้เพียง 2 มิลลิวินาที ดวงตาของมนุษย์จะมองเห็นการกระพริบที่น่ากลัวและรุนแรง!

Pin Exhaustion and Array Mapping

เนื่องจากต้องใช้ 16 Pins ทำให้ Arduino Uno เกือบจะถูกใช้จนหมดโดย Array สี่เหลี่ยมเดี่ยวนี้!

  • คุณต้องแมป Array จำนวนเต็มขนาดใหญ่สองตัว: int rowPins[8] = { 2, 3, 4, 5, 6, 7, 8, 9 }; int colPins[8] = { 10, 11, 12, 13, A0, A1, A2, A3 }; // คุณต้องใช้ Pin อนาล็อกเป็นเอาต์พุตดิจิทัล!
  • โค้ดใช้ตรรกะ Bitwise ที่น่าหวาดเสียว: if (imageArray[x] & (128 >> y)) เพื่อดึง 1 และ 0 ออกจาก Hex Byte Matrix แบบ Recurse และส่งพวกมันเข้าสู่คิวการ Execute ของ digitalWrite ทางกายภาพ!

Masochistic Screen Hardware

  • Arduino Uno/Nano (ต้องใช้ทุก Pin ที่มี รวมถึง Pin อนาล็อกด้วย!).
  • บล็อก Raw, Bare-metal 16-pin 8x8 LED Dot Matrix (โปรดระบุให้ชัดเจนว่าเป็น Common-Row Anode หรือ Common-Row Cathode เพราะจะทำให้แผนผังการเดินสาย 16 Pin ขนาดใหญ่และตรรกะ HIGH/LOW กลับด้านโดยสิ้นเชิง!).
  • ตัวต้านทาน 220 Ohm แปดตัว บน Anode Columns!
  • (คำเตือน: การเดินสายที่ยุ่งเหยิงบน Breadboard นี้เป็นเรื่องน่ากลัว โปรดใช้ความระมัดระวังอย่างยิ่งในการเชื่อมต่อสาย Jumper 16 เส้นขนาน!).

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

title: "Interfacing 8x8 LED Dot Matrix with Arduino"
description: "Raw multiplexing chaos! Rip the safety net of the MAX7219 driver board away entirely and perform agonizing, clock-cycle-perfect ATmega timer manipulation to physically scan 16 row/column matrix pins from scratch."
category: "Screens & Displays"
difficulty: "Advanced"