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

การถอดรหัส Hexadecimal Bitmaps
ตาราง 8x8 ไม่ได้ถูกพล็อตโดยใช้พิกัด (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!
}
}
High-Speed SPI Pipeline (MAX7219)
MAX7219 ใช้ SPI Protocol อย่างแท้จริง!
- Arduino กำหนดให้ขา
CS (Chip Select)เป็นLOWซึ่งเป็นการปลุก MAX7219 เป้าหมายโดยเฉพาะ - จากนั้นจะส่งข้อมูล Bitmap สตรีมขนาดใหญ่ผ่าน
DIN (Data In)โดยตรง ซึ่งซิงโครไนซ์กับCLK (Clock)pulses อย่างแม่นยำ! - หากคุณต่อ matrix modules 4 ตัวเข้าด้วยกันเพื่อสร้างป้ายโฆษณาแบบเลื่อนขนาดยาว ข้อมูลจะไหลออกทางขา
DOUTอย่างต่อเนื่องไปเรื่อยๆ ทำให้ Arduino สามารถเขียนข้อมูลไปยัง LED 256 ดวงได้อย่างง่ายดาย!
ฮาร์ดแวร์ Display Matrix
- Arduino Uno/Nano (ข้อจำกัดด้านหน่วยความจำมักทำให้ string arrays แบบเลื่อนขนาดยาวขัดข้อง! หากสร้างป้ายไฟวิ่งที่ซับซ้อน ให้เก็บ strings ไว้ใน
PROGMEMเพื่อป้องกันการทำลาย RAM ขนาด 2KB ที่มีจำกัดของคุณ!). - MAX7219 8x8 Matrix Module (grid แบบสแตนด์อะโลนที่จำเป็น ซึ่งรองรับ LED ทั้ง 64 ดวงได้โดยตรง).
- ไลบรารี
LedControl.hหรือMD_MAX72XX.h(ไลบรารี MD ถูกออกแบบมาโดยเฉพาะเพื่อจัดการสภาพแวดล้อมการเลื่อนแบบหลายโมดูลที่ซับซ้อนอย่างมากโดยไม่มีการกระตุก!). - Dedicated Power Feed (การเปิด LED สีแดง 64 ดวงพร้อมกันทั้งหมดที่ความสว่างสูงสุด จะสร้างภาระหนักให้กับ 5V regulator ของ Arduino; ตรวจสอบให้แน่ใจว่าใช้ 5V 1A adapter แยกต่างหาก!).