from machine import Pin
import time
# 定义行和列的GPIO引脚
rows = [Pin(0, Pin.OUT), Pin(1, Pin.OUT)] # ROW1, ROW2
cols = [Pin(2, Pin.OUT), Pin(3, Pin.OUT)] # COL1, COL2
def clear_matrix():
"""清空显示"""
for row in rows:
row.value(0) # 行设为低电平
for col in cols:
col.value(1) # 列设为高电平
def light_led(row, col):
"""点亮指定位置的LED
row: 0或1 (第一行或第二行)
col: 0或1 (第一列或第二列)
"""
clear_matrix()
rows[row].value(1) # 选中的行设为高电平
cols[col].value(0) # 选中的列设为低电平
def display_pattern(pattern):
"""显示图案
pattern: 2x2的列表,例如[[1,0],[0,1]]表示对角线点亮
"""
for r in range(2):
for c in range(2):
if pattern[r][c]:
light_led(r, c)
time.sleep(0.001) # 1ms延迟用于扫描显示
def run_demo():
"""演示不同的显示效果"""
# 1. 逐个点亮
patterns = [
[[1,0],[0,0]], # 左上
[[0,1],[0,0]], # 右上
[[0,0],[1,0]], # 左下
[[0,0],[0,1]] # 右下
]
# 2. 对角线模式
diagonal = [[1,0],[0,1]]
# 3. 全亮模式
all_on = [[1,1],[1,1]]
# 运行演示
while True:
# 逐个LED点亮
for pattern in patterns:
for _ in range(100): # 持续0.1秒
display_pattern(pattern)
# 对角线显示
for _ in range(300): # 持续0.3秒
display_pattern(diagonal)
# 全亮显示
for _ in range(300): # 持续0.3秒
display_pattern(all_on)
# 清空显示
clear_matrix()
time.sleep(1)
# 开始演示
print("开始2x2 LED点阵演示...")
try:
run_demo()
except KeyboardInterrupt:
clear_matrix()
print("程序已停止")