这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 活动中心» 板卡试用» 【分享评测,赢取加热台】+称远开发板PWM与串口功能分享

共8条 1/1 1 跳转至

【分享评测,赢取加热台】+称远开发板PWM与串口功能分享

助工
2024-03-26 20:06:14 被打赏50分(兑奖) 打赏

移远EC600S-CN是一款4G LTE CAT1通信模组,支持高速数据传输。

在使用其PWM(脉冲宽度调制)功能时,通常需要按以下步骤操作:

打开PWM通道;设置所需的PWM占空比;可以通过打印或其他方式监控或展示PWM占空比的状态。

具体的操作方法和编程细节需参考移远通信的官方文档或技术支持。

在使用PWM功能时,务必遵循硬件规格和限制,确保设备的安全和性能。

是移远通信Quectel最新推出的4G LTE CAT1通信模组,支持最大下行速率10Mbps和最大上行速率5Mbps。

下面开始我的完成方法:

原理图:

上图是LED连接的IO口,具体的引脚。这里需要注意一下引脚,是对不上号的,请看下面的代码。

下面是MCU引脚接口位:

代码:

# 导入PWM类 from misc import PWM # 导入utime模块用于延时 import utime # 初始化占空比变量 duty = 1 # 外层循环,执行10次整个PWM占空比变化的过程 for i in range(10): # 第一个内层循环,占空比从1增加到100 for i in range(1, 101): # 设置当前占空比 duty = i # 创建PWM对象,设置PWM通道、周期和占空比 pwm = PWM(PWM.PWM0, PWM.ABOVE_10US, duty, 100) # 打开PWM通道 pwm.open() # 等待20毫秒 utime.sleep_ms(20) # 打印当前占空比 print(duty) # 第二个内层循环,占空比从100减少到1 for i in range(100, 0, -1): # 设置当前占空比 duty = i # 创建PWM对象(这里应该使用新的变量名,避免与之前的pwm对象冲突) pwm = PWM(PWM.PWM0, PWM.ABOVE_10US, duty, 100) # 打开PWM通道(这里实际上每次循环都在重新打开同一个通道,可能只需要在循环外部打开一次) pwm.open() # 等待20毫秒 utime.sleep_ms(20) # 打印当前占空比 print(duty) # 关闭PWM通道 pwm.close()


这段代码是用于控制树莓派上的PWM(脉宽调制)功能,以调节LED灯或其他设备的亮度。以下是代码的逐行解释:

from misc import PWM

  • 从misc模块导入PWM类,以便后续使用。

import utime

  • 导入utime模块,它提供了与时间相关的函数。

duty = 1

  • 初始化变量duty为1,该变量表示PWM的占空比,即高电平的时间占整个周期的比例。

for i in range(10):

  • 开始一个循环,将执行10次。

for i in range(1, 101):

  • 在外部循环的内部,有一个内部循环,从1开始到100。

duty = i

  • 将变量i的值赋给duty,以逐步改变PWM的占空比。

pwm = PWM(PWM.PWM0, PWM.ABOVE_10US, duty, 100)

  • 创建一个PWM对象,指定PWM通道为PWM0,脉宽为大于10微秒,占空比为duty,频率为100Hz。

pwm.open()

  • 打开PWM通道。

utime.sleep_ms(20)

  • 使程序暂停20毫秒。

print(duty)

  • 打印当前的占空比值。

  1. for i in range(100, 0,-1):

  • 另一个内部循环,从100开始递减到1。

  1. pwm.close()

  • 在外部循环结束后,关闭PWM通道。

下面是参加示例:

总的来说,代码试图通过循环改变PWM通道的占空比,并打印出相应的值。然而,代码中存在变量命名冲突、资源使用不当和可能的资源泄露问题。

为了修复这些问题,我们可以将变量命名更加清晰,避免在循环中重复创建和打开PWM通道,以及确保所有打开的PWM通道都被正确关闭。下面是一个修改后的示例:

当时是这个代码给了我理解,不过这个代码是PYTHON的。

from misc import PWM import utime # 定义PWM通道和参数 pwm_channel = PWM.PWM0 period = PWM.ABOVE_10US frequency = 100 # 假设频率是100Hz # 打开PWM通道 pwm = PWM(pwm_channel, period, 0, frequency) pwm.open() # 占空比变化范围 duties = list(range(1, 101)) + list(range(100, 0, -1)) # 执行10次PWM占空比变化 for _ in range(10): for duty in duties: # 设置占空比 pwm.set_duty(duty) # 等待20毫秒 utime.sleep_ms(20) # 打印当前占空比 print(duty) # 关闭PWM通道 pwm.close()

串口输出结果:

视频:

https://www.bilibili.com/video/BV1cb4y1V7BK/?spm_id_from=333.999.0.0

移远EC600S-CN PWM print使用需要先打开PWM通道,然后设置PWM占空比,最后打印PWM占空比。这个过程可以用于控制LED或其他设备的亮度,实现PWM调光功能。









院士
2024-03-26 21:52:26 打赏
2楼

乐死我了,原理图的引脚对不上号!

有的时候真的挺无奈的


专家
2024-03-27 07:56:07 打赏
3楼

不错啊


工程师
2024-03-27 11:17:20 打赏
4楼

学习了


高工
2024-03-27 14:03:47 打赏
5楼

谢谢分享


高工
2024-03-27 14:32:49 打赏
6楼

谢谢分享


专家
2024-04-02 00:20:02 打赏
7楼

昨天看STH503RB开发板,发现电路图和CubeMX中单片机的引脚也对不上号。爱也不知道哪个是对的。


高工
2024-04-02 08:43:31 打赏
8楼

谢谢分享


共8条 1/1 1 跳转至

回复

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