楼主: 驴友花雕
|
[ESP8266/ESP32] 最像Arduino Uno的ESP32开发板之WeMos D1 R32 |
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百七十七:Wemos D1 R32 ESP32开发板 项目之五:LED流水灯(四灯) 实验开源代码
|
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百七十七:Wemos D1 R32 ESP32开发板 项目之六:ESP32 触摸测试和 LED 控制 实验开源代码
|
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程) 实验一百七十七:Wemos D1 R32 ESP32开发板 项目之七: ESP32的LED PWM 实现呼吸灯 实验开源代码
|
在硬件方面,ESP32的LED PWM由16个独立通道组成,具有可配置的占空比和波周期。占空比的精度可以配置到16位分辨率。 在代码的第一部分中,我们将指定一些全局配置常量。第一个是为控制LED而产生的PWM信号的频率。我们将使用5000HZ的值。但请注意,频率的最大值尚不清楚,并且在 我们将要使用的功能的头文件中声明最大频率取决于所选的分辨率。 将以比特为单位指定LED PWM通道和PWM占空比的分辨率。同样从头文件中,我们可以看到我们可以选择0到15之间的通道,以及1到16位之间的分辨率。在这里我们将使用通道0和8位的分辨率。
在设置功能中,我们将配置LED PWM功能。首先,我们需要设置我们指定的通道、频率和分辨率。为此,我们调用ledcSetup函数,该函数以相同的顺序接收前面提到的3个参数作为输入。
但是值得注意,通道不是我们控制LED的引脚。因此,我们需要将通道0(我们定义的那个)连接到我们希望生成PWM信号的数字GPIO引脚上。我这里连接的GPIO2引脚。我们调用ledcAttachPin函数,将GPIO引脚的编号和先前定义的PWM通道作为参数传递。
以下是完整的初始化设置,以及一些常量的设置:
也需要将编写代码来控制Arduino主循环中信号的占空比值。但最重要的功能是允许我们指定占空比值的功能。这是ledcWrite 函数,它接收PWM通道(不是GPIO的编号)作为第一个参数。 由于我们定义了8位分辨率,因此我们可以指定0到255(2 ^ 8 -1)之间的占空比值。因此,我们将在两个循环中迭代这些值,一个是递增的,另一个是递减的。 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed