使用电位器的直流电压来控制LED的亮度,LED的亮度由PWM进行控制,这个任务在MicroPython中非常简单。

# Raspberry Pi Pico LED PWM Test
# led-pwm.py
 
# POT - Pico GPIO 26 ADC0
 
# RED LED - Pico GPIO 19
 
# EETree Info&Tech 2021
# https://www.eetree.cn
 
 
import machine
import utime
 
led_red = machine.PWM(machine.Pin(19))
potentiometer = machine.ADC(26)
 
led_red.freq(1000)
 
while True:
    led_red.duty_u16(potentiometer.read_u16())
 

在这个脚本中需要注意的一个关键项目是我们定义 “led_red “的方式。我们将其定义为 “PWM”,而不是输出。电位器的定义与上一个脚本中的方式完全相同。

现在我们已经给输出赋予了 “PWM “的属性,它继承了许多其他参数。其中之一是PWM频率,我们将其设置为1000Hz。

在true循环中,我们不断地从电位器中获取无符号的16位值,并将其传递给LEDs占空比,也方便地指定为无符号的16位整数。

这就说明了两者保持相同的编号方案的价值,不需要将模拟值,真的是0到4095,映射到占空比,真的是0到100。

运行程序,你应该可以顺利地控制红色LED段的亮度。

控制板载LED的波形是PWM运行。

from machine                import Pin,PWM
import time
 
pwm = PWM(Pin(25))
 
pwm.freq(1000)
 
duty = 0
direction = 1
 
for _ in range(16*255):
    duty += direction
 
    if duty > 255:
        duty = 255
        direction = -1
    elif duty < 0:
        duty = 0
        direction = 1
 
    pwm.duty_u16(duty*duty)
    time.sleep(0.001)

PWM是软件PWM,它可以设置在任意管脚上。初步测试过Pin0, 15, 16等等。都具有相类似波形。