ชื่อโปรเจกต์: 8x8 Matrix LED Arduino Project
การถอดรหัส Bitmap: สถาปัตยกรรม 8x8 LED Matrix
หากคุณพยายามเดินสาย LED 64 ดวงแยกกันด้วยตนเองเข้ากับ Arduino Uno คุณจะประสบปัญหาจำนวนขาไม่เพียงพอทันที และอาจทำให้โปรเซสเซอร์เสียหายได้จากการพยายามวนรอบไฟโดยไม่มีการกระพริบ! โปรเจกต์ 8x8 Matrix LED หลีกเลี่ยงความล้มเหลวร้ายแรงนี้ด้วยการรวม MAX7219 Display Driver เข้าไปอย่างมีประสิทธิภาพ! ด้วยการใช้การสื่อสาร SPI (Serial Peripheral Interface) แท้จริง Arduino จะส่ง Hexadecimal arrays ขนาด 8-bit ที่ถูกบีบอัดสูงผ่านสายไฟเพียง 3 เส้น บังคับให้ไมโครชิปฮาร์ดแวร์ในตัวจัดระเบียบการมัลติเพล็กซ์พลังงานอันทรงพลังที่จำเป็น เพื่อแสดงข้อความเลื่อนและ bitmaps เคลื่อนไหวที่คมชัดได้อย่างสมบูรณ์แบบ!

การถอดรหัส Hexadecimal Bitmaps
กริดขนาด 8x8 ไม่ได้ถูกพล็อตโดยใช้พิกัด pixel พื้นฐาน (X, Y) เพราะมันจะใช้หน่วยความจำมากเกินไป! แกนหลักของ Arduino ใช้ array ของ Hexadecimal bytes แปด (8) ตัว
- แต่ละแถวของ 8x8 matrix แสดงถึง 8 bits (1 Byte) พอดี
- กราฟิก "Smiling Face" ถูกแปลงทางคณิตศาสตร์เป็น binary อย่างแท้จริง:
00111100,01000010,10100101... - binary จะถูกแปลเป็นรูปแบบ Hexadecimal ได้อย่างสมบูรณ์เพื่อความหนาแน่นในการจัดเก็บสูงสุด!
0x3C, 0x42, 0xA5...
#include <LedControl.h>
// Initialize the MAX7219 SPI object! (DIN 12, CLK 11, CS 10)
LedControl lc = LedControl(12, 11, 10, 1);
// The mathematically compressed Hex Array for a Happy Face!
byte smiley[8] = {
0b00111100, // Top of head
0b01000010, // Forehead
0b10100101, // EYES!
0b10000001,
0b10100101, // Smile curves!
0b10011001,
0b01000010,
0b00111100 // Bottom of chin
};
void loop() {
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, smiley[i]); // Blast the raw explicit bytes directly into the MAX7219 Engine!
}
}
ท่อส่งข้อมูล SPI ความเร็วสูง (MAX7219)
MAX7219 ใช้ SPI Protocol อย่างแท้จริง!
- Arduino จะตั้งค่าขา
CS (Chip Select)เป็นLOWเพื่อปลุก MAX7219 เป้าหมายโดยเฉพาะ - จากนั้นจะส่งข้อมูล Bitmap จำนวนมากผ่าน
DIN (Data In)โดยซิงโครไนซ์กับพัลส์CLK (Clock)อย่างแม่นยำ! - หากคุณเชื่อมต่อ matrix module 4 ตัวเข้าด้วยกันเพื่อสร้างป้ายโฆษณาแบบเลื่อนยาว ข้อมูลจะไหลออกทางขา
DOUTอย่างต่อเนื่องไปเรื่อย ๆ ทำให้ Arduino สามารถเขียนข้อมูลไปยัง LED 256 ดวงได้อย่างง่ายดาย!
ฮาร์ดแวร์ Display Matrix
- Arduino Uno/Nano (ข้อจำกัดด้านหน่วยความจำมักทำให้ string arrays แบบเลื่อนยาว ๆ เกิดข้อผิดพลาด! หากสร้าง marquee ที่ซับซ้อน ให้วาง strings ไว้ใน
PROGMEMเพื่อป้องกันไม่ให้ RAM ขนาด 2KB ที่มีจำกัดของคุณเสียหาย!). - MAX7219 8x8 Matrix Module (กริดอิสระที่จำเป็นซึ่งจัดการ LED ทั้ง 64 ดวงได้โดยตรง).
- ไลบรารี
LedControl.hหรือMD_MAX72XX.h(ไลบรารี MD ได้รับการออกแบบมาโดยเฉพาะเพื่อจัดการสภาพแวดล้อมการเลื่อนแบบ multi-module ที่ซับซ้อนอย่างมากโดยไม่มีอาการหน่วง!). - แหล่งจ่ายไฟเฉพาะ (การเปิด LED สีแดง 64 ดวงพร้อมกันทั้งหมดจะทำให้ตัวควบคุม 5V ของ Arduino ทำงานหนักมากหากตั้งค่าความสว่างสูงสุด; ตรวจสอบให้แน่ใจว่าได้ใช้อะแดปเตอร์ 5V 1A แยกต่างหาก!).