这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【分享评测,赢取加热台】+称远开发板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 跳转至

回复

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