一、 實驗說明:為什麼選擇 MAX7219 8×8 LED 點陣顯示器?
在 Arduino 專題中,若要製作動態表情圖案、方向指示箭頭或文字動畫,單顆 LED 燈或液晶螢幕往往無法滿足大面積的點陣視覺效果。MAX7219 8×8 LED 點陣模組 是最熱門的首選!
核心技術與軟體架構
高效能串列驅動: MAX7219 是一顆整合型的共陰極 LED 顯示驅動晶片,內建靜態 RAM 與掃描線路。
超省引腳 SPI 介面: 傳統 8×8 點陣需要 16 根 Pin 腳,透過 MAX7219 轉換後僅需 3 根控制線(DIN、CS、CLK) 即可完整控制 64 顆 LED 燈。
靈活的陣列控制: 搭配
LedControl函式庫,只要將 的點陣圖形轉換為 Byte 陣列,即可輕鬆寫入並呈現各種圖案與文字。
二、 🛠️ 必備軟體神器:超簡單 LED Matrix 圖形編輯工具 (PixeltoMatrix)
在手動編寫 8×8 點陣圖案的 Byte 陣列時,計算十六進位 (Hex) 常常讓人頭大。在開始寫程式之前,推薦使用 PixeltoMatrix 超簡單點陣圖形編輯工具(或線上 LED Matrix Editor)!
- PixeltoMatrix編輯工具:下載
圖形編輯工具特點與使用步驟:
點選像素繪圖: 開啟編輯器後,直接在 的方格畫面上點擊滑鼠,即可勾選要亮燈的 LED 點位。
自動生成 Code: 編輯完成後,工具會自動生成 Arduino 可用的 16 進位 (Hex) 或 2 進位 (Bin) 陣列代碼。
快速複製套用: 直接將產生的
0x3C, 0x42...陣列數值複製貼上至程式碼中的byte陣列(如範例中的smile[8]、love_1[8]等),即可繪製出屬於你自己的自訂表情與圖標!

圖: 使用 PixeltoMatrix 點陣編輯工具(Form1)繪製愛心圖案後,點擊「Generate」按鈕即可在輸出視窗(Form2)自動轉換出對應的二進位與十六進位(0x00, 0x66…)代碼陣列。
三、 實驗所需材料與電路接線圖 (Hardware Setup)
請依照下表將 MAX7219 點陣模組連接至 Arduino Uno。
⚠️ 注意事項: 市售 MAX7219 模組接線順序可能有所不同,接線前請務必確認模組上的腳位標示(VCC、GND、DIN、CS、CLK),避免接錯導致模組不亮。
🛒 準備材料
Arduino Uno R3 開發板 x 1
USB 傳輸線 x 1
MAX7219 8×8 LED 點陣顯示模組 x 1
杜邦線 若干
▼購買MAX7219 8X8點矩陣顯示模組:
🛍️ 準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含豐富驅動專案模組)
⚡ 腳位對接說明 (Pin Mapping)
四、 必備函式庫安裝步驟
編譯程式碼前,請先透過 Arduino IDE 的程式庫管理員安裝套件:
開啟 Arduino IDE,點選上方選單 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 管理程式庫 (Manage Libraries)。
在搜尋欄輸入 「LedControl」。
找到 LedControl 函式庫並點擊 「安裝 (Install)」 即可。
五、 程式碼實作範例
🔹 完整範例程式碼:圖案動畫與 mirotek 字母輪播
本範例完全保留原文章之程式結構與陣列定義,透過 LedControl 控制第 12、11、10 腳位,依序顯示微笑、愛心、前後左右箭頭,並調用 printLetter() 逐字顯示 m-i-r-o-t-e-k 品牌名稱。
#include <LedControl.h>
int DIN = 12;
int CS = 11;
int CLK = 10;
byte m[8]= {0xE7,0xFF,0xFF,0xDB,0xDB,0xDB,0xC3,0xC3}; //英文字母m
byte i[8]= {0x00,0x10,0x00,0x10,0x10,0x10,0x10,0x10}; //英文字母i
byte r[8]= {0x00,0x00,0x2c,0x32,0x20,0x20,0x20,0x20}; //英文字母r
byte o[8]= {0x00,0x00,0x1c,0x22,0x22,0x22,0x22,0x1c}; //英文字母o
byte t[8]= {0x00,0x00,0x10,0x7e,0x10,0x10,0x14,0x18}; //英文字母t
byte e[8]= {0x00,0x3c,0x42,0x42,0x7e,0x40,0x40,0x3e}; //英文字母e
byte k[8]= {0x00,0x20,0x20,0x24,0x28,0x30,0x28,0x24}; //英文字母k
byte smile[8]= {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C}; //微笑
byte love_1[8]= {0x00,0x66,0x99,0x81,0x42,0x24,0x18,0x00}; //愛心-1
byte love_2[8]= {0x00,0x66,0xff,0xff,0x7e,0x3c,0x18,0x00}; //愛心-2
byte Front[8]= {0x08,0x1c,0x3e,0x7f,0x1c,0x1c,0x1c,0x1c}; //前
byte back[8]= {0x1c,0x1c,0x1c,0x1c,0x7f,0x3e,0x1c,0x08}; //後
byte left[8]= {0x10,0x30,0x7f,0xff,0x7f,0x30,0x10,0x00}; //左
byte right[8]= {0x08,0x0c,0xfe,0xff,0xfe,0x0c,0x08,0x00}; //右
LedControl lc=LedControl(DIN,CLK,CS,0);
void setup(){
lc.shutdown(0,false); //The MAX72XX is in power-saving mode on startup
lc.setIntensity(0,15); // Set the brightness to maximum value
lc.clearDisplay(0); // and clear the display
}
void loop(){
printByte(smile);
delay(1000);
printByte(love_1);
delay(1000);
printByte(love_2);
delay(1000);
printByte(Front);
delay(1000);
printByte(back);
delay(1000);
printByte(left);
delay(1000);
printByte(right);
delay(1000);
printLetter();
lc.clearDisplay(0);
delay(1000);
}
void printLetter()
{
printByte(m);
delay(1000);
printByte(i);
delay(1000);
printByte(r);
delay(1000);
printByte(o);
delay(1000);
printByte(t);
delay(1000);
printByte(e);
delay(1000);
printByte(k);
delay(1000);
}
void printByte(byte character [])
{
int i = 0;
for(i=0;i<8;i++)
{
lc.setRow(0,i,character[i]);
}
}
六、 常見問題與除錯 (FAQ)
Q1:上傳程式碼後,8×8 點陣面板完全不亮?
解答:
請確認
lc.shutdown(0, false);是否有正常執行(預設啟動時 MAX7219 會處於省電關閉模式)。請檢查 DIN、CS、CLK 腳位是否精準對應至 Arduino 的 D12、D11、D10 腳位。
Q2:點陣顯示的圖案是旋轉 90 度或是左右顛倒的?
解答: 這是因為市售 8×8 點陣模組內部的 LED 矩陣腳位方向不同。您可以將
lc.setRow(0, i, character[i]);改為lc.setColumn(0, i, character[i]);,或者重新調整 Byte 陣列中的十六進位數值即可轉正圖案。
Q3:如何使用點陣圖形編輯工具生成自己的圖案?
解答: 開啟 PixeltoMatrix 或線上 LED Matrix Editor,用滑鼠點繪圖案後複製產生的十六進位碼(如
0x3C, 0x42...),貼上取代程式碼中的byte陣列內容即可!
🔗 延伸閱讀與推薦課程
📟 經典顯示模組控制: 【Arduino進階教學】LCD 1602 I2C 顯示模組:4線快速接線、位址檢測與程式碼範例
👈 上一篇: 【Arduino進階教學】LCD 2004 I2C 顯示器模組:20×4 大螢幕 4 線接線、LiquidCrystal_I2C 函式庫下載與自訂符號繪製實作
👉 下一篇: 【Arduino進階教學】SSD1306 0.96吋 OLED 顯示器模組:I2C 接線、位址檢測、Adafruit GFX 繪圖與雙程式範例實作
📘 總索引: Arduino 新手學習必讀經典 – 快速索引頁面

