前言
Raspberry Pi Pico是一款功能强大的微型开发板,搭配MicroPython能够轻松实现各种硬件控制。本篇博客将介绍如何使用Pico驱动MAX7219 8x8 LED点阵屏,依次循环显示数字0-9,并加入亮度呼吸效果和可调显示方向。
效果
完整源码
硬件准备
- Raspberry Pi Pico
- MAX7219 8x8 LED点阵模块
- 杜邦线若干
Pico引脚定义图
接线说明
Pico引脚 | MAX7219引脚 |
---|---|
GPIO11 (SPI1 MOSI) (SPI1 TX) (Pin15) | DIN |
GPIO10 (SPI1 SCK) (Pin14) | CLK |
GPIO0 (Pin1) | CS |
GND | GND |
3.3V | VCC |
软件准备
- 安装MicroPython固件至Pico(官方默认固件就可以)
- 使用
Thonny
或其他支持MicroPython的IDE - 下载
max7219
库并上传到Pico模拟驱动器的根目录:max7219.py
功能实现
主要功能:
- 循环显示数字0-9,每个数字停顿1秒。
- 呼吸灯亮度效果(最大亮度可调)。
- 通过变量设置显示方向(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()
系列文章
- 用Raspberry Pi Pico驱动MAX7219 8x8 LED点阵并实现呼吸灯效果【当前文章】
- 使用MicroPython控制Raspberry Pi Pico与MAX7219和EEPROM的应用
- 使用 MicroPython 控制 74HC595 和 EEPROM 的项目解析