本帖最后由 xutong 于 2026-4-8 22:14 编辑
hello uu们,有没有在家吃灰派(树莓)派准备用起来吗?为了后面的工作做铺垫我准备把我的派用起来,我的需求是用Python 完成对芯片的读写,然后把读写的数据存在excel表格里面最后导出来。
📌咱们定一个阶段性目标:写入24CXX读取24CXX,将读取的数据存成log或者表格。
软件准备
首先我们先从简单的开始,我使用的是树莓派 Zero 2W,这个比较便宜,我也不知道会吃灰多久买个便宜的准没错。如果需要读写IO 树莓派支持的库有很多,比如wiringPi,RPi.GPIO,pigpio ,gpiozero但是使用Python对后面文件系统的读写调用会方便很多,所以我选择使用基于Python的RPi.GPIO。
既然我们选择了RPI.GPIO 那用 Pip list 看下是否已经安装了这个库,如果没有那么可以在控制台输入
#使用清华源安装国内的网络会快1..
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ RPi.GPIO
#使用默认源安装
pip install RPi.GPIO
硬件准备
硬件方面我们需要知道要用那几个Pin就行,需要注意的是树莓派排针的方向。那里是1脚可别接错了,因为我用3D打印加了个外壳,所以更加难辨认,另外为了不带MicroUSB线我又焊接了一个Type-C的母座,这样调试起来会更加得心应手。
40PIN对照表
VWVPSNZFACABE? (564.27 KB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:12 上传
实物排针朝向
R6GP2NZFADQG6? (264.84 KB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:12 上传
实验平台
M6M75XRFABAH6? (1.39 MB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:12 上传
M6M75XRFABAH6? (1.39 MB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:13 上传
开始干活
既然已经知道库,那么应该从库的API看起他是怎么整的,所以我们需要看下 RPI.GPIO 的wiki,链接如下:
raspberry-gpio-python / Wiki / Examples
方便大家看我直接将Wiki的信息拷贝到这里:
VPRRPXZFACQBA? (162.47 KB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:13 上传
📢任务分解
- 选择GPIO
- 设置GPIO的模式
- 设置GPIO的输出高或者低
🧐代码实现
#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
# 使用 BOARD 编号
GPIO.setmode(GPIO.BOARD)
# 定义四个 LED 引脚 (请根据实际情况修改)
pins = [11, 12, 13, 15] # Example pins: GPIO 18, 19, 21, 22 (BOARD numbers)
# pins = [7, 11, 12, 13] # Alternative example: GPIO 4, 17, 18, 21 (BOARD numbers)
# 设置所有引脚为输出模式
for pin in pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW) # 初始化为低电平
def cleanup():
"""清理 GPIO 设置"""
for pin in pins:
GPIO.output(pin, GPIO.LOW)
GPIO.cleanup()
def pattern1_single_chaser():
"""花样1: 单灯顺向追逐"""
for i in range(len(pins)):
# 关闭所有灯
for j in pins:
GPIO.output(j, GPIO.LOW)
# 点亮当前灯
GPIO.output(pins[i], GPIO.HIGH)
time.sleep(0.2)
def pattern2_double_chaser():
"""花样2: 双灯顺向追逐"""
for i in range(len(pins)):
# 关闭所有灯
for j in pins:
GPIO.output(j, GPIO.LOW)
# 点亮当前灯和下一个灯 (循环)
GPIO.output(pins[i], GPIO.HIGH)
GPIO.output(pins[(i + 1) % len(pins)], GPIO.HIGH)
time.sleep(0.2)
def pattern3_back_chaser():
"""花样3: 单灯反向追逐"""
for i in reversed(range(len(pins))):
# 关闭所有灯
for j in pins:
GPIO.output(j, GPIO.LOW)
# 点亮当前灯
GPIO.output(pins[i], GPIO.HIGH)
time.sleep(0.2)
def pattern4_bounce():
"""花样4: 来回弹跳"""
sequence = list(range(len(pins))) + list(reversed(range(len(pins)-1)[1:]))
for i in sequence:
# 关闭所有灯
for j in pins:
GPIO.output(j, GPIO.LOW)
# 点亮当前灯
GPIO.output(pins[i], GPIO.HIGH)
time.sleep(0.2)
def pattern5_all_flash():
"""花样5: 全部闪烁"""
for _ in range(5): # 闪 5 次
for pin in pins:
GPIO.output(pin, GPIO.HIGH)
time.sleep(0.1)
for pin in pins:
GPIO.output(pin, GPIO.LOW)
time.sleep(0.1)
def pattern6_alternating_half():
"""花样6: 一半亮一半暗交替"""
for _ in range(3): # 交替 3 次
# 奇数组亮,偶数组暗
for i, pin in enumerate(pins):
if i % 2 == 0:
GPIO.output(pin, GPIO.LOW)
else:
GPIO.output(pin, GPIO.HIGH)
time.sleep(0.3)
# 偶数组亮,奇数组暗
for i, pin in enumerate(pins):
if i % 2 == 0:
GPIO.output(pin, GPIO.HIGH)
else:
GPIO.output(pin, GPIO.LOW)
time.sleep(0.3)
patterns = [
("单灯顺向追逐", pattern1_single_chaser),
("双灯顺向追逐", pattern2_double_chaser),
("单灯反向追逐", pattern3_back_chaser),
("来回弹跳", pattern4_bounce),
("全部闪烁", pattern5_all_flash),
("一半亮一半暗交替", pattern6_alternating_half),
]
try:
while True:
for name, func in patterns:
print(f"\n--- 正在运行: {name} ---")
start_time = time.time()
# 每个花样持续大约 3 秒
while time.time() - start_time < 3:
func()
# 花样结束后短暂暂停
time.sleep(0.5)
except KeyboardInterrupt:
print("\n程序被用户中断")
finally:
cleanup()
print("GPIO 已清理,程序退出")
⬇️将代码传入树莓派
1.ssh登录后再桌面新建lesson1的文件夹,并且新建led.py文件
FDCVWCBGABAG2? (3.62 MB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:13 上传
2.打开Py文件将代码拷贝到led.py中
G7LF4CBGABQBI? (2.69 MB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:13 上传
3.运行led.py文件
MHMGACBGACAC2? (3.34 MB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:14 上传
运行这段代码跳转到文件所在的目录 cd /home/xutong/Desktop/lesson1/
运行这段代码运行Python程序 python led.py
在使用第二行代码的时候可以直接使用回车来完成,因为当前目录只有一个led.py
测试结果:
XRTWOCBGADAAQ? (92.43 KB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:14 上传
因为我没有焊板子所以我用逻辑分析仪来读取流水灯的变化,所以我使用逻辑分析仪去捕捉。看不同的阶梯波就是不同的流水灯方式。
如果我们不想在运行这个了,也可以在界面中按Ctrl+C退出,也可以在控制台用方向键在去运行刚刚的Python代码。
3SJGUCBGACQHO? (2.49 MB, 下载次数: 0)
下载附件
保存到相册
2026-4-8 22:14 上传
结语:流程跑通已经成功了一半,自己动手试试吧!