[ESP8266/ESP32]Beetle ESP32 C6 +PWM

705浏览
查看: 705|回复: 0

[ESP8266/ESP32] Beetle ESP32 C6 +PWM

[复制链接]
开发平台:Arduino
开发板:Beetle ESP32 C6
功能:PWM使用

Beetle ESP32 C6与PWM(脉冲宽度调制)的结合使用,可以实现对连接到开发板的设备的精确控制,比如LED灯的亮度调节。PWM通过改变脉冲信号的占空比来控制输出,从而实现对电压、电流等参数的精确调节。
在Beetle ESP32 C6上使用PWM,你可以编写代码来设置特定GPIO口为PWM输出模式,并设定PWM的频率和占空比。这样,连接到这些GPIO口的设备(如LED灯)就可以根据设定的PWM参数进行工作。
照片:
Beetle ESP32 C6 +PWM图1
Beetle ESP32 C6 +PWM图2
PWM控制器设置
Beetle ESP32 C6 +PWM图3

定时器配置

通过调用函数并传递包含以下配置设置的数据结构来设置计时器:


  • 速度模式

  • 计时器编号

  • PWM信号频率

  • PWM占空比的解决


代码:
  1. // 使用12位精度为LEDC定时器  
  2. #define LEDC_TIMER_12_BIT  12  
  3.   
  4. // 使用5000 Hz作为LEDC的基础频率  
  5. #define LEDC_BASE_FREQ     5000  
  6.   
  7. // 渐变LED的引脚(对于内置LED,可以替换为LED_BUILTIN常量)  
  8. #define LED_PIN            15  
  9.   
  10. int brightness = 0;    // LED的亮度  
  11. int fadeAmount = 5;    // 每次循环LED亮度变化的数量  
  12.   
  13. // 类似于Arduino的analogWrite函数  
  14. // value的值必须在0和valueMax之间  
  15. void ledcAnalogWrite(uint8_t pin, uint32_t value, uint32_t valueMax = 255) {  
  16.   // 计算占空比,4095来自于2的12次方减1  
  17.   uint32_t duty = (4095 / valueMax) * min(value, valueMax);  
  18.   
  19.   // 将占空比写入LEDC  
  20.   ledcWrite(pin, duty);  
  21. }  
  22.   
  23. void setup() {  
  24.   // 设置定时器并将定时器附加到LED引脚  
  25.   ledcAttach(LED_PIN, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT);  
  26. }  
  27.   
  28. void loop() {  
  29.   // 设置LEDC通道0的亮度  
  30.   ledcAnalogWrite(LED_PIN, brightness);  
  31.   
  32.   // 为下一次循环更改亮度:  
  33.   brightness = brightness + fadeAmount;  
  34.   
  35.   // 在渐变结束时反转渐变的方向:  
  36.   if (brightness <= 0 || brightness >= 255) {  
  37.     fadeAmount = -fadeAmount;  
  38.   }  
  39.   // 等待30毫秒以查看渐变效果  
  40.   delay(30);  
  41. }
复制代码
视频:
下载附件ab94891084acef166db75d5dd3cfc749.zip



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail