这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Let'sdo-2025年第3期-DIY拾色播放器-过程帖2:点灯和亮屏

共1条 1/1 1 跳转至

Let'sdo-2025年第3期-DIY拾色播放器-过程帖2:点灯和亮屏

助工
2025-12-09 00:07:32     打赏

上一贴详细录制了 开发板升级bootloader 刷固件的过程。

  https://forum.eepw.com.cn/thread/398007/1

之后就可以将 circuitpython-10.0.3的 uf2 文件拖进u盘,完成 cpython环境的安装。 

好了,废话不说,拿到一个新板子第一步,肯定是先点灯!也就是用GPIO输出控制LED点亮。

----------------------------------------------------------------------------------------------

l熟悉 board 模块

编辑器用mu或者在线的circuitpython IDE 都挺方便,网址是:

https://urfdvw.github.io/circuitpython-online-ide-2/

online-IDE.png

界面也很简单,共三列,最左边点击后选择U盘驱动器,中间的是文本编辑器,点击step2,选择插入开发板后的com口,然后就连接上了串口;串口控制台显示在最右侧,ctl+C 结束命令,ctl+D软重启。

  Python是解释性的语言,可以编探索边开发。先来看看 board模块,它对板子包装了一些自带的资源,如图最右一列,导入board模块后,使用dir(board)可以看到已实现定义的资源常量,其中的LED、DISPLAY、NEOPIXEL等就是我们后面要用到的资源。

       board模块:开发板规格针脚名称,官方文档:

              https://docs.circuitpython.org/en/latest/shared-bindings/board/index.html

----------------------------------------------------------------------------------------------

l  使用GPIO13点亮 LED灯并闪烁

  预定义的board.LED 就是板子背面的红色led灯。查看丝印为#13即接到芯片的GPIO13引脚。先用digitalio模块来控制单个GPIO13点亮这个LED试试,Digitalio模块提供了基本的GPIO支持,官方文档如下:

      https://docs.circuitpython.org/en/latest/shared-bindings/digitalio/index.html

控制板载LED红灯闪烁的代码如下:

import time
import board
import digitalio

led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = True
    time.sleep(0.5)
    led.value = False
    time.sleep(0.5)
    time.sleep(0.5)

      保存后自动下载并reload,代码即开始执行,如果没有错误可看到效果:

GPIO13闪烁效果.gif

----------------------------------------------------------------------------------------------

l  点亮RGB三色灯

三色灯由2个GPIO控制,一个控制power一个控制颜色,分别为GPIO21和GPIO33,如下图所示:

image.png

Adafruit给我们提供了一个专用的库来控制RGB三色灯,极大简化了使用。但是这个模块非内置,需要事先安装。安装方法也很简单,第一步下载预编译的库文件mpy格式,NeoPixel库:

     https://github.com/adafruit/Adafruit_CircuitPython_NeoPixel/releases

第二步就是讲mpy文件拷贝到u盘的lib文件夹下,搞定!如下图所示:

image.png


我们编写一个循环控制RGB三色灯依次显示8种颜色的程序,代码如下:

import time
import board
import digitalio
import neopixel

# RGB灯珠电源控制, GPIO21
power = digitalio.DigitalInOut(board.NEOPIXEL_POWER)
power.direction = digitalio.Direction.OUTPUT
power.value = True
# RGB灯珠 设置
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
pixel.brightness = 0.5

'''颜色循环:8种颜色'''
while True:
    pixel.fill((255,0,0))
    time.sleep(0.5)
    pixel.fill((0,255,0))
    time.sleep(0.5)
    pixel.fill((0,0,255))
    time.sleep(0.5)
    pixel.fill((0,255,255))
    time.sleep(0.5)
    pixel.fill((255,0,255))
    time.sleep(0.5)
    pixel.fill((255,255,0))
    time.sleep(0.5)
    pixel.fill((255,255,255))
    time.sleep(0.5)
    pixel.fill((0,0,0))
    time.sleep(0.5)

保存后自动reload程序执行,运行效果如下:

RGB灯珠闪烁 00_00_00-00_00_30~1.gif

----------------------------------------------------------------------------------------------

l  LCD屏幕显示:

板子上的LCD屏幕,就是 board模块中预先定义的 DISPLAY,引脚情况如下图:

image.png


同样,adafruit为我们提供了封装库 adafruit_display_text,可以从 https://circuitpython.org/libraries 下载最新的bundle文件 adafruit-circuitpython-bundle-10.x-mpy-20251206.zip 中找到这个库,整个目录拷贝到U盘的lib文件夹下,如下图所示:

image.png


 参考大神的代码编写LCD文本显示的代码。使用scale=2 的缩放,屏幕刚好可以输出6行文字,每行显示20个英文字母或数字。相关代码如下:

import time
import board
import displayio
import terminalio
from adafruit_display_text import label

# 1.配置屏幕
display = board.DISPLAY
# 2.显示文本
text = "Hello"
text_group = displayio.Group( scale=2,x=0,y=0,)
for i in range(6): #添加6行
    text_line = label.Label(terminalio.FONT, text=text, color=0xFFFF00,x=0,y=6+11*i)
    text_group.append(text_line)
display.root_group = (text_group)

i=0
while True:
    text_group[i%6].text = "count=%d~012345678901234567890" % i
    i=i+1
    i=i%100
    time.sleep(0.5)

上述代码的效果如下(依次改写每行的文字):

display2 00_00_00-00_00_30.gif


----------------------------------------------------------------------------------------------

好了,今天就先学到这里。明天继续:

       GPIO按钮输入,颜色传感器数据采集,蜂鸣器输入 beep~~beep~~~


                                            zhw   2025.12.8





关键词: 点灯     三色灯     LCD    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]