☰
用microPython玩转源师兄L1:LED、OLED与RGB灯5个入门项目代码全解
2026/9/25 5:22:52 网站建设 项目流程

用microPython玩转源师兄L1:LED、OLED与RGB灯5个入门项目代码全解

【免费下载链接】源师兄L1基于海思ws63芯片平台的源师兄开源项目硬件资料,包括硬件原理图和PCB layout文档。项目地址: https://gitcode.com/yuanshixiong/ysx-v1

源师兄L1是基于海思Hi3863(WS63)芯片的开源教学开发板,本文以microPython编程为主线,用通俗的方式完整讲解LED闪烁、OLED屏显示、WS2812 RGB灯变色、PWM调光以及按钮交互5个入门项目的核心代码,新手一篇就能跑通。

认识源师兄L1硬件:microPython开发基础

在写第一行microPython代码之前,先花一分钟认识你的开发板。源师兄L1板载了0.96寸OLED屏、3颗可编程WS2812 RGB灯、A/B两个按键,以及丰富的传感器,跑在OpenHarmony 4.1系统上,编程支持图形化、Python、C++三种方式。

对microPython入门来说,你最常用的资源是这些引脚:

硬件资源引脚说明
RGB灯(3颗WS2812)P0 / P1 / P2支持PWM与单线协议
A按钮P5输入,按下为低电平
B按钮P11输入,按下为低电平
OLED屏(128×64)I2C:SCL(P19)、SDA(P20)板载直连,无需外接
ADC采集P1/P2/P13/P14可测光感等模拟量

💡 引脚定义以官方图为准,完整说明可参考 源师兄引脚图.png 和 README.md 中的「引脚说明」章节。

如果你想深挖硬件细节,仓库里开源了完整的原理图与PCB资料:

  • 原理图总览:源师兄V1原理图.pdf
  • OLED屏电路:OLED.SchDoc
  • 主控电路:Hi3863.SchDoc
  • PCB工程:源师兄V1.PcbDoc

编程环境一键配置:连接源师兄L1

源师兄L1推荐搭配专为它开发的OH-Code编程软件:左侧拖拽图形化积木,右侧自动生成Python代码,图形化和microPython双模式无缝切换,还能直接通过串口把程序下载到板子上。它也兼容 mu-editor、thonny 等通用microPython工具。

环境配置三步走:

  1. 安装OH-Code(Windows、mac、麒麟、统信均有离线版本),或打开在线版
  2. 用Type-C数据线连接电脑与源师兄L1
  3. 点击「串口」选择对应端口,写入程序,开发板自动运行

项目一:LED闪烁代码——microPython的Hello World

控制一颗灯闪烁,是检验开发板、引脚、编程环境是否全部就绪的最好方式。我们用P0引脚驱动第一颗RGB灯的红灯:

from machine import Pin import time led = Pin("P0", Pin.OUT) # P0设为输出模式 while True: led.on() time.sleep(1) # 亮1秒 led.off() time.sleep(1) # 灭1秒

逐行理解:

  • Pin("P0", Pin.OUT):把P0引脚初始化为输出,这是microPython控制硬件的核心API
  • led.on()/led.off():输出高/低电平
  • time.sleep(1):延时1秒,让闪烁节奏肉眼可见

✅ 跑通效果:板子上的红灯每秒亮灭一次,说明microPython开发环境配置成功!

项目二:OLED屏显示代码——让文字上屏

源师兄L1板载0.96寸、128×64的OLED屏,通过I2C总线(SCL为P19、SDA为P20)连接,固件已内置驱动模块,几行代码就能显示文字:

import uoled oled = uoled.OLED() # 初始化板载OLED oled.show_text("你好,源师兄", 0, 0) # 在(0,0)位置显示文字 oled.show() # 刷新屏幕

三个要点:

  1. show_text(内容, x, y)的坐标参数决定文字位置,横屏范围0~127、纵屏0~63
  2. 改字就改引号里的内容,中英文都支持
  3. show()必须调用,否则画面不会刷新

📌 不同固件版本中显示模块的函数名可能略有差异,以官方教学资料为准;OLED的电路细节可参考 OLED.SchDoc。

项目三:WS2812 RGB灯变色代码

源师兄L1的3颗RGB灯采用WS2812单线协议,由P0引脚驱动。microPython标准库自带neopixel模块,控制起来非常简单:

import neopixel from machine import Pin import time rgb = neopixel.NeoPixel(Pin("P0"), 3) # P0驱动3颗灯 colors = [(255,0,0), (0,255,0), (0,0,255)] # 红、绿、蓝 while True: for c in colors: for i in range(3): rgb[i] = c # 每颗灯设为同一颜色 rgb.write() # 刷新灯光 time.sleep(2)

核心就两句:rgb[i] = (R,G,B)给第 i 颗灯赋值颜色(0~255),rgb.write()一次性刷新全部灯。想显示紫色?改成(255,0,255)即可——RGB的玩法从改这一行开始。

项目四:PWM调光代码——做出呼吸灯效果

普通LED只能"亮/灭",而PWM(脉宽调制)通过快速调节占空比来模拟亮度。源师兄L1的P0~P2、P8、P12、P13均支持PWM,用P0做出经典的呼吸灯:

from machine import PWM import time led = PWM("P0") # P0设为PWM输出 while True: for duty in range(0, 100, 5): # 由暗到亮 led.duty(duty) time.sleep_ms(50) for duty in range(100, 0, -5): # 由亮到暗 led.duty(duty) time.sleep_ms(50)
  • duty取值0~100(百分比),0全灭、100最亮
  • sleep_ms(50)太小会闪烁太快、看不到渐变效果,可按需调整

✅ 跑通效果:灯光像呼吸一样缓缓亮灭,这是后面做炫酷灯光秀的基本功。

项目五:综合交互项目——按钮、OLED与RGB灯联动

前4个项目分别练了GPIO、显示、RGB灯和PWM,最后把它们串成一个完整的交互应用:按A按钮,3颗RGB灯换色,OLED屏同步显示当前颜色:

from machine import Pin import uoled, neopixel import time btnA = Pin("P5", Pin.IN) # A按钮,输入模式 oled = uoled.OLED() rgb = neopixel.NeoPixel(Pin("P0"), 3) colors = [(255,0,0), (0,255,0), (0,0,255)] names = ["红色", "绿色", "蓝色"] idx = 0 while True: if btnA.value() == 0: # A按钮按下(低电平) idx = (idx + 1) % 3 # 颜色循环切换 for i in range(3): rgb[i] = colors[idx] rgb.write() oled.show_text("颜色:" + names[idx], 0, 0) oled.show() time.sleep(0.5) # 防连按

这个项目覆盖了你刚学到的全部技能:

知识点用在哪
GPIO输入读取btnA.value()检测按键
WS2812 RGB灯控制neopixel换色
OLED屏显示颜色名称上屏
主循环 + 延时防抖while True+sleep

🎯 扩展思路:把B按钮(P11)加进来控制"亮/灭",或者结合项目四的PWM让颜色带渐隐过渡——一个迷你"灯光控制台"就完成了。

常见问题与后续学习

  • 程序没反应?先确认串口选对了端口,再看引脚是否写对(大小写敏感,是"P0"不是"p0")
  • 引脚冲突?A按钮固定占用P5、B按钮占用P11,编程时避免复用
  • 引脚功能冲突?P1/P13等引脚ADC、PWM复用,详见 README.md 的引脚说明

完成这5个项目后,你已经掌握了microPython控制LED、OLED、WS2812 RGB灯的完整套路。下一步可以尝试光感传感器(LTR553)读取环境光、陀螺仪数据展示,或者用WiFi 6、星闪(NearLink)做多设备联动实验——源师兄L1的全部硬件能力都在 硬件资料-PCB&原理图 和固件源码目录中开源,等你继续探索!

【免费下载链接】源师兄L1基于海思ws63芯片平台的源师兄开源项目硬件资料,包括硬件原理图和PCB layout文档。项目地址: https://gitcode.com/yuanshixiong/ysx-v1

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询