前言

Raspberry Pi Pico是一款功能强大的微型开发板,搭配MicroPython能够轻松实现各种硬件控制。本篇博客将介绍如何使用Pico驱动MAX7219 8x8 LED点阵屏,依次循环显示数字0-9,并加入亮度呼吸效果和可调显示方向。

效果

max7219.gif

完整源码

max7219-By-ChatGPT.zip

硬件准备

  • Raspberry Pi Pico
  • MAX7219 8x8 LED点阵模块
  • 杜邦线若干

Pico引脚定义图

Pico引脚定义图

接线说明

Pico引脚MAX7219引脚
GPIO11 (SPI1 MOSI) (SPI1 TX) (Pin15)DIN
GPIO10 (SPI1 SCK) (Pin14)CLK
GPIO0 (Pin1)CS
GNDGND
3.3VVCC

软件准备

  • 安装MicroPython固件至Pico(官方默认固件就可以)
  • 使用Thonny或其他支持MicroPython的IDE
  • 下载max7219库并上传到Pico模拟驱动器的根目录:max7219.py

功能实现

主要功能:

  1. 循环显示数字0-9,每个数字停顿1秒。
  2. 呼吸灯亮度效果(最大亮度可调)。
  3. 通过变量设置显示方向(0°/90°/180°/270°)。

代码实现

将以下代码保存为main.py文件并上传或覆盖根目录原来的main.py文件。
上电时会自动寻找并执行根目录下的main.py

from machine import Pin, SPI
from max7219 import max7219
import time

# SPI接口设置
spi = SPI(1, baudrate=10000000, polarity=0, phase=0)
cs = Pin(0, Pin.OUT)

# 初始化MAX7219
matrix = max7219.Matrix8x8(spi, cs, 1)
matrix.brightness(0)

# 定义数字0-9的图案
digits = [
    [0x3E, 0x63, 0x67, 0x6F, 0x7B, 0x73, 0x63, 0x3E],  # 0
    [0x0C, 0x1C, 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3F],  # 1
    [0x3E, 0x63, 0x03, 0x0E, 0x3C, 0x70, 0x63, 0x7F],  # 2
    [0x3E, 0x63, 0x03, 0x1E, 0x03, 0x03, 0x63, 0x3E],  # 3
    [0x06, 0x0E, 0x1E, 0x36, 0x66, 0x7F, 0x06, 0x06],  # 4
    [0x7F, 0x60, 0x7E, 0x03, 0x03, 0x03, 0x63, 0x3E],  # 5
    [0x1E, 0x30, 0x60, 0x7E, 0x63, 0x63, 0x63, 0x3E],  # 6
    [0x7F, 0x63, 0x06, 0x0C, 0x18, 0x18, 0x18, 0x18],  # 7
    [0x3E, 0x63, 0x63, 0x3E, 0x63, 0x63, 0x63, 0x3E],  # 8
    [0x3E, 0x63, 0x63, 0x63, 0x3F, 0x03, 0x06, 0x3C]   # 9
]

# 显示方向(1=0°,2=90°,3=180°,4=270°)
display_direction = 1

# 最大亮度(0-15)
max_brightness = 10

# 呼吸灯效果
def breathing_effect():
    for b in range(0, max_brightness + 1):
        matrix.brightness(b)
        time.sleep(0.05)
    for b in range(max_brightness, -1, -1):
        matrix.brightness(b)
        time.sleep(0.05)

# 循环显示数字0-9
while True:
    for digit in digits:
        matrix.fill(0)
        matrix.show()
        start_time = time.ticks_ms()
        while time.ticks_diff(time.ticks_ms(), start_time) < 1000:
            breathing_effect()

系列文章

Last modification:January 19, 2025
If you think my article is useful to you, please feel free to appreciate