开发平台:Arduino
开发板:Beetle ESP32 C6
功能:PWM使用
Beetle ESP32 C6与PWM(脉冲宽度调制)的结合使用,可以实现对连接到开发板的设备的精确控制,比如LED灯的亮度调节。PWM通过改变脉冲信号的占空比来控制输出,从而实现对电压、电流等参数的精确调节。 在Beetle ESP32 C6上使用PWM,你可以编写代码来设置特定GPIO口为PWM输出模式,并设定PWM的频率和占空比。这样,连接到这些GPIO口的设备(如LED灯)就可以根据设定的PWM参数进行工作。 照片: PWM控制器设置
定时器配置通过调用函数并传递包含以下配置设置的数据结构来设置计时器:
速度模式 计时器编号 PWM信号频率 PWM占空比的解决
代码:
-
- // 使用12位精度为LEDC定时器
- #define LEDC_TIMER_12_BIT 12
-
- // 使用5000 Hz作为LEDC的基础频率
- #define LEDC_BASE_FREQ 5000
-
- // 渐变LED的引脚(对于内置LED,可以替换为LED_BUILTIN常量)
- #define LED_PIN 15
-
- int brightness = 0; // LED的亮度
- int fadeAmount = 5; // 每次循环LED亮度变化的数量
-
- // 类似于Arduino的analogWrite函数
- // value的值必须在0和valueMax之间
- void ledcAnalogWrite(uint8_t pin, uint32_t value, uint32_t valueMax = 255) {
- // 计算占空比,4095来自于2的12次方减1
- uint32_t duty = (4095 / valueMax) * min(value, valueMax);
-
- // 将占空比写入LEDC
- ledcWrite(pin, duty);
- }
-
- void setup() {
- // 设置定时器并将定时器附加到LED引脚
- ledcAttach(LED_PIN, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT);
- }
-
- void loop() {
- // 设置LEDC通道0的亮度
- ledcAnalogWrite(LED_PIN, brightness);
-
- // 为下一次循环更改亮度:
- brightness = brightness + fadeAmount;
-
- // 在渐变结束时反转渐变的方向:
- if (brightness <= 0 || brightness >= 255) {
- fadeAmount = -fadeAmount;
- }
- // 等待30毫秒以查看渐变效果
- delay(30);
- }
复制代码
视频:
ab94891084acef166db75d5dd3cfc749.zip
|