[树莓派 PICO(基于MicroPython)]基础教程03-PWM脉冲宽度调制(实现板载LED呼吸灯)

最近入手了pico学习。

目录

  • 〇、总的参考
  • 一、函数说明
  • 二、硬件准备
  • 三、程序-PWM脉冲宽度调制(实现板载LED呼吸灯)

〇、总的参考

视频参考 【微雪课堂】PICO系列教程3——PWM(脉冲宽度调制)
另附其github,课程中所用代码皆在其中。
博文参考树莓派 PICO基础教程(基于MicroPython)

下面让我们开始PWM的学习吧!ε≡٩(๑>₃<)۶

一、函数说明

machine.PWM(pin):
	#PWM对象构造函数
	#其作用是指定GPIO重新初始化,并设置为PWM输出
	#参数pin即为之前学习中的Pin对象,用于指定GPIO,该对象会被重新初始化
PWM.deinit():
	#PWM反初始化函数
	#其作用为清空初始化,并停止PWM输出
PWM.freq([value]):
	#PWM输出频率设置函数
	#根据参数value自动计算分频器参数和TOP寄存器参数
	#注意value数值应符合PWM频率计算公式,过大或过小都会导致分辨率变小
PWM.duty_u16([value]):
	#PWM占空比设置函数
	#value数值应在0-65536间
	#根据参数value自动计算出相对应的数值并赋予CC寄存器
	#当计数器数值小于CC寄存器时,PWM输出高电平,反之输出低电平
PWM.duty_ns([value]):
	#设置一个周期输出高电平的时长
	#参数value为高电平时间,单位为ns

二、硬件准备

pico,1个

三、程序-PWM脉冲宽度调制(实现板载LED呼吸灯)

PWM脉冲宽度调制主要参考【微雪课堂】PICO系列教程3——PWM(脉冲宽度调制)
代码:

#本程序实现了PWM初始输出占空比为0%增速至100%,然后开始递减,递减至0%开始递增,如此循环往复


from machine import Pin, PWM
	#与之前相比,多导入了PWM类
import utime

LED  = PWM(Pin(25))
	#将GPIO25即板载LED,设置为PWM输出

LED.freq(10000)
	#将PWM输出频率设置为1KHz

LED_duty = 0
LED_direction = 1

while True:
    LED_duty += LED_direction
		#即LED_duty = LED_duty + LED_direction
		#将LED_duty加上LED_direction并重新赋予给LED_duty
    if LED_duty >= 100:
		#若LED_duty大于等于100
        LED_duty = 100
			#LED_duty被设置为100
        LED_direction = -1
			#LED_direction被设置为-1
    elif LED_duty <= 0:
		#若LED_duty小于等于0
        LED_duty = 0
			#LED_duty被设置为0
        LED_direction = 1
			#LED_direction被设置为1
    LED.duty_u16(int(LED_duty * 655.36))
		#使用duty_u16函数以一定比例将LED_duty设置为占空比
    if LED_duty%5 == 0:
		#并在LED_duty能被5整除时,输出LED_duty的数值
        print(LED_duty)
			#之所以输出LED_duty数值,是为了后面使用thonny的绘图器功能
    utime.sleep(0.01)

实验现象:
①软件现象:在Thonny的Shell上可以看到,数值在不断变化:
[树莓派 PICO(基于MicroPython)]基础教程03-PWM脉冲宽度调制(实现板载LED呼吸灯)_第1张图片
右键,选择“显示绘图器”,可以看到图形的形象变化:
[树莓派 PICO(基于MicroPython)]基础教程03-PWM脉冲宽度调制(实现板载LED呼吸灯)_第2张图片

[树莓派 PICO(基于MicroPython)]基础教程03-PWM脉冲宽度调制(实现板载LED呼吸灯)_第3张图片
②硬件现象:板载LED缓慢灯亮,缓慢灯灭,仿佛呼吸一般,如此反复。

补充: 简单的呼吸灯代码,参见这位的博文树莓派Pico入门教程,开发环境的配置和程序的编写 在2.4:
[树莓派 PICO(基于MicroPython)]基础教程03-PWM脉冲宽度调制(实现板载LED呼吸灯)_第4张图片

你可能感兴趣的:(pico,python,pico,python,树莓派)