BPI-CanMV-K230D-Zero开发板易于开发的一大特定在于它系统内置了Python,因此不在仅依赖于在LINUX下开发。此外,随着AI智能技术的推进,Python的使用也越来越广泛。
为此,在学习Python编程的基础上通过GPIO来实现LED灯的控制。
在开发板上,仅有的2个可供GPIO控制的器件是RGB_LED和按键,其中RGB_LED的电路如图1所示。
但要点亮WS2812需要较复杂的顺序控制,因此其不适于进行GPIO口的基本测试。

图1 WS2812电路
为此,只好利用开发板所提供的扩展接口,以外挂的方式来进行测试。
在外挂的LED模块由GPIO2来控制的情况下,点亮LED的程序为:
from machine import Pin
from machine import FPIOA
fpioa = FPIOA()
fpioa.set_function(2, FPIOA.GPIO2)
pin = Pin(2, Pin.OUT, pull=Pin.PULL_NONE, drive=7)
pin.value(1)
若关闭LED,则用一下的语句来替代点亮LED的代码。
pin.value(0)
Python程序的编辑与运行的界面,见图2所示。

图2 程序界面
相应的LED控制效果,见图3和图4所示。

图3 关闭状态

图4 点亮状态
如果引入延时处理,则可实现LED的闪烁效果。
为进行延时处理,需导入定时器功能,其产生延时功能的程序如下:
from machine import Timer
import time
tim = Timer(-1)
tim.init(period=100, mode=Timer.ONE_SHOT, callback=lambda t:print(1))
time.sleep(0.2)
为此,实现LED灯闪烁效果的程序如图5所示。

图5 闪烁效果程序
除了GPIO口的输出功能可点亮LED外,还可利用GPIO口的输入功能来控制LED的工作状态。
在将触摸模块与GPIO3相连接的情况下,将该引脚设置为输入模式并输出引脚状态的语句为:
fpioa.set_function(3, FPIOA.GPIO3)
pin = Pin(3,Pin.IN, pull=Pin.PULL_UP, drive=7)
print(pin.value())
实现按键控制LED的程序如图6所示,这样在进行触摸操作时即可改变LED灯的状态,见图7所示。

图6 闪烁程序

图7 按键控制
在使用RGB_LED的情况下,依次将R、G、B引脚连接到GPIO4、GPIO5、GPIO6,则在图8所示程序的控制下,可产生多彩的显示效果。


图8 彩灯程序
在执行程序后,可得到图9至图11的显示效果。

图9 显示青色

图10 显示绿色

图11 显示紫色
当然我们还可以通过PWM来调节彩灯的亮度,以实现色彩的渐变效果,实现呼吸灯效果的程序如图12所示。


图12 呼吸灯程序
效果演示: