十里堡网站建设,站长查询seo是什么意思,建设银行网站诚聘英才,营销建设网站新年快乐#xff01;
2024#xff0c;我们一起玩儿#xff01; 摘要#xff1a;本文主要介绍如何使用Mixly实现PWM波形的输出。 下面就先用Mixly实现PWM波形的输出。首先打开Mixly软件#xff0c;这次还是先使用C语言来实现。如果你有示波器#xff0c;或者逻辑分析仪
2024我们一起玩儿 摘要本文主要介绍如何使用Mixly实现PWM波形的输出。 下面就先用Mixly实现PWM波形的输出。首先打开Mixly软件这次还是先使用C语言来实现。如果你有示波器或者逻辑分析仪可以先用这两种仪器看一下输出的波形。我在这里的程序设置输出3路PWM信号频率是10KHz占空比分别是25%、50%和75%。使用的PWM占空比分辨率为12位绑定的通道为0、1和2使用的GPIO的输出端口为25、26、27。因为这个只需要设置一次就会不停的输出PWM波形因此先到“控制”功能模块区找到“初始化”功能模块然后再到“输入/输出”功能模块区找到PWM波形输出功能然后按照上面的描述配置相应的参数配置完成后如下图所示 然后将ESP32的25、26、27引脚分别连接到逻辑分析仪的CH1、CH2和CH3采样之后的PWM波形图如下图所示。 逻辑分析仪的通道1、通道2和通道3分别显示了频率为10kHz占空比为25%、50%和75%的PWM信号这证明我们的程序是没有任何问题的成功实现了PWM信号的输出。
接下来看一下Mixly生成程序的源代码吧。如下所示 void setup(){ ledcSetup(0, 10000, 12); ledcAttachPin(25, 0); ledcSetup(1, 10000, 12); ledcAttachPin(26, 1); ledcSetup(2, 10000, 12); ledcAttachPin(27, 2); ledcWrite(0, 1024); ledcWrite(1, 2048); ledcWrite(2, 3072); } void loop(){ }
在源代码中可以看到
ledcSetup()函数实现了LEDC控制器的初始化设置。这个函数有三个参数第一个参数为使用的通道第二个参数为PWM波形的频率第三个参数为PWM波形的占空比分辨率。
ledcAttachPin()函数实现了GPIO引脚与LEDC通道的绑定确定引脚与通道的对应关系。
ledcWrite()函数用于设置通道输出的占空比第一个参数为通道号第二个参数为占空比。注意这个占空比的取值不是0~100而是和占空比分辨率相关对应的是高电平脉冲的数量。对于12位占空比分辨率来说这个比率的取值范围在0~40962的12次方之间。
接下来就可以将程序中PWM通道绑定的GPIO引脚切换为控制智能小车运动的8个ESP32引脚了。一次可以输出4路PWM信号分别绑定到4个轮子的一个驱动端上可以设置成不同的占空比看看这4个轮子的转速是不是就有区别了啊这样就实现了最简单的用PWM波形控制智能小车行驶速度的目的了。
前面介绍了用Mixly生成C语言代码来产生PWM波的方法。接下来介绍一下如何使用MicroPython来实现相同的功能这两者在实现上是有着一些差别的。所以下面再来详细介绍一下首先打开Mixly选择Python ESP32。
在Mixly的Python开发环境中默认所有的代码都执行一次这与C语言的环境是不同的在C语言中setup()函数中的代码在启动阶段被执行一次而loop()函数则会被循环调用。在Python中如果想实现循环调用则需要靠自己编写循环的逻辑代码来实现这一点差别要知晓。
在Python的例子中只以一个引脚为例实现一路PWM信号的输出。这个功能需要使用3个功能控件它们都在“输入/输出”功能模块中。首先是“初始化PWM模拟输出”功能在这个功能中需要指定输出PWM信号的引脚在管脚中输入25。第二步将PWM输出的频率设置为10000最后设置PWM输出的占空比为3276850%。在这里需要注意的就是占空比的设置值是在0~65535之间不再和占空比分辨率这个参数相关Python进行了统一的转换处理。这样处理的好处是开发者不用关注底层的细节了Python将其转换为了统一的设置区间相当于标准化了。而缺点也是显而易见的这样处理势必增加了一些额外的工作量会导致机器执行效率的下降。想想之前的ADC是不是也存在同样的处理
这三个功能设置好的样子如下图所示。 这些功能对应的程序源代码为 import machine pwm25 machine.PWM(machine.Pin(25)) pwm25.freq(10000) pwm25.duty_u16(32768)
在这段代码中首先是生成一个PWM对象的实例pwm25生成这个对象实例的参数则为输出PWM波形的引脚对象。然后是PWM对象调用其freq()方法来设置PWM波形的频率。最后是duty_u16()方法来设置占空比这个方法的后缀u16就表示要在2的16次方的范围内进行设置。如果在Tonny IDE中采用编码来开发则还有别的设置方法。