1.7. 彩虹灯

1.7.1. 模块介绍

Trailbreaker的Solder_Led_1B模块上有一个RGB三色发光二极管,亮度范围和典型值为1500mcd@20mA红,6000mcd@20mA绿,3000mcd@20mA蓝

*实物图:

../_images/rgb1.jpg

1.7.2. 编程学习

打开main.py文件开始编写代码:

导入Pin,Timer库:

from pyb import Pin,Timer

注解

导入Pin和Timer库可以控制板载的引脚和时钟。

开始初始化引脚,时钟以及亮度,启用时钟对应的通道,并设置PWM模式,代码为:

rgb=[Pin(i, Pin.OUT_PP) for i in ['Y1','Y2','Y3']]#初始化引脚
tm3=Timer(3,freq=100)#初始化时钟
tm8=Timer(8,freq=100)
tm4=Timer(4,freq=100)
intensity_red=0#初始化亮度
intensity_gre=33
intensity_blu=66
red=tm3.channel(1,Timer.PWM,pin=Pin.cpu.C6)#启用时钟3的1通道,设置为pwm模式
gre=tm8.channel(2,Timer.PWM,pin=Pin.cpu.C7)
blu=tm4.channel(3,Timer.PWM,pin=Pin.cpu.B8)

设置完毕后,编写函数实现彩虹灯的效果,代码如下:

while True:#rgb变色
        while intensity_red<99:
                red.pulse_width_percent(intensity_red)
                intensity_red=(intensity_red+1)%100
                pyb.delay(10)
        while intensity_gre<99:
                gre.pulse_width_percent(intensity_gre)
                intensity_gre=(intensity_gre+1)%100
                pyb.delay(10)
        while intensity_blu<99:
                blu.pulse_width_percent(intensity_blu)
                intensity_blu=(intensity_blu+1)%100
                pyb.delay(10)
        while intensity_red>0:
                red.pulse_width_percent(intensity_red)
                intensity_red=(intensity_red-1)%100
                pyb.delay(10)
        while intensity_gre>0:
                gre.pulse_width_percent(intensity_gre)
                intensity_gre=(intensity_gre-1)%100
                pyb.delay(10)
        while intensity_blu>0:
                blu.pulse_width_percent(intensity_blu)
                intensity_blu=(intensity_blu-1)%100
                pyb.delay(10)