913 字
5 分鐘
Arduino 8x8 LED 矩陣顯示器專案

Arduino 8x8 LED 矩陣顯示器專案#

最近完成了一個有趣的 Arduino 專案 - 8x8 LED 矩陣顯示器!這個專案結合了硬體連接和程式設計,非常適合初學者入門。

專案概述#

這個專案可以:

  • 顯示數字和英文字母
  • 播放簡單的動畫效果
  • 顯示滾動文字
  • 製作小遊戲(如貪食蛇)

所需材料#

硬體材料#

  • Arduino Uno R3 × 1
  • 8x8 LED 矩陣模組(MAX7219) × 1
  • 杜邦線 × 若干
  • 麵包板 × 1
  • 電源供應器(可選)

軟體工具#

  • Arduino IDE
  • LedControl 函式庫

硬體連接#

接線圖#

Arduino Uno    →    MAX7219 LED 矩陣
VCC           →    VCC (5V)
GND           →    GND
Pin 12        →    DIN (數據輸入)
Pin 11        →    CS (片選)
Pin 10        →    CLK (時鐘)

連接步驟#

  1. 電源連接:將 LED 矩陣的 VCC 連接到 Arduino 的 5V,GND 連接到 GND
  2. 數據連接:按照上面的對應關係連接數據線
  3. 檢查連接:確保所有連接牢固,避免接觸不良

程式設計#

安裝函式庫#

首先在 Arduino IDE 中安裝 LedControl 函式庫:

工具 → 管理函式庫 → 搜尋 "LedControl" → 安裝

基礎程式碼#

#include "LedControl.h"

// 初始化 LED 矩陣控制器
// Pin 12 -> DIN, Pin 11 -> CS, Pin 10 -> CLK, 1個矩陣
LedControl lc = LedControl(12, 11, 10, 1);

void setup() {
  // 喚醒 MAX7219
  lc.shutdown(0, false);
  // 設定亮度 (0-15)
  lc.setIntensity(0, 8);
  // 清除顯示
  lc.clearDisplay(0);
}

void loop() {
  // 顯示笑臉
  showSmiley();
  delay(2000);
  
  // 顯示數字
  showNumber(8);
  delay(2000);
  
  // 清除顯示
  lc.clearDisplay(0);
  delay(1000);
}

void showSmiley() {
  byte smiley[8] = {
    B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10100101,
    B10011001,
    B01000010,
    B00111100
  };
  
  for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, smiley[i]);
  }
}

void showNumber(int num) {
  // 數字 8 的點陣圖
  byte eight[8] = {
    B00111100,
    B01100110,
    B01100110,
    B00111100,
    B01100110,
    B01100110,
    B01100110,
    B00111100
  };
  
  for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, eight[i]);
  }
}

進階功能:滾動文字#

void scrollText(String text) {
  for (int scroll = 0; scroll < text.length() * 8; scroll++) {
    lc.clearDisplay(0);
    
    // 這裡需要實作字母的點陣圖
    // 每個字母用 8x8 的二進位表示
    
    delay(100);
  }
}

實作心得#

遇到的問題#

  1. 接線錯誤:一開始 DIN 和 CLK 接反了,導致顯示異常
  2. 電源不足:使用 USB 供電時,亮度太高會導致電壓不穩
  3. 程式邏輯:二進位點陣圖的設計需要一些想像力

解決方案#

  1. 仔細檢查接線:多次確認接線圖,使用萬用電表測試
  2. 調整亮度:降低 LED 亮度設定,或使用外部電源
  3. 使用工具:網路上有很多點陣圖生成器可以幫助設計

擴展想法#

可以添加的功能#

  • 時鐘顯示:結合 RTC 模組顯示時間
  • 溫度顯示:加入溫度感測器
  • 遊戲功能:製作貪食蛇或俄羅斯方塊
  • 音樂視覺化:配合音樂節拍閃爍

硬體升級#

  • 使用多個 8x8 矩陣拼接成更大的顯示器
  • 加入按鈕控制不同模式
  • 使用 ESP32 添加 WiFi 功能

學習收穫#

這個專案讓我學到了:

  1. 硬體連接:理解數位訊號的傳輸原理
  2. 函式庫使用:如何有效利用現有的程式庫
  3. 二進位操作:點陣圖的二進位表示方法
  4. 除錯技巧:從硬體到軟體的系統性除錯

總結#

Arduino LED 矩陣是一個很棒的入門專案,它結合了:

  • 基礎的電路連接
  • 程式邏輯設計
  • 創意展現空間

推薦給所有對 Arduino 有興趣的同學!下一步我打算嘗試製作一個更大的 16x16 LED 矩陣。

參考資料#


專案完成時間:2024年12月17日

Arduino 8x8 LED 矩陣顯示器專案
https://vic88-web.vercel.app/posts/arduino-led-matrix/
作者
Vic88
發佈於
2024-12-17
許可協議
CC BY-NC-SA 4.0