ESP32入门「08」:Arduino-ESP32 LEDC API 详解
发布网友
发布时间:2024-10-02 17:01
我来回答
共1个回答
热心网友
时间:2024-10-04 06:54
本文详细介绍了ESP32芯片的LED控制(LEDC)及其API。LEDC主要用于控制LED,也可产生PWM信号用于其他设备的控制。ESP32 SoC拥有6到16个通道(具体数量因SoC型号而异),可以生成独立的波形,例如用于驱动RGB LED设备。
LEDC通道分为两组,高速通道和低速通道。高速通道模式在硬件中实现,可自动且无干扰地改变PWM占空比。低速通道模式下,PWM占空比需由软件驱动器改变。每组通道可使用不同的时钟源。LED PWM控制器可在无需CPU干预的情况下自动改变占空比,实现亮度和颜色渐变。
设置LEDC通道运行在高速模式或低速模式,需进行配置。可选步骤之一是在渐变终端设置中断。
Arduino-ESP32 LEDC API中的`ledcSetup()`函数用于启动LEDC,指定通道、频率、分辨率。成功配置返回频率,失败返回0。
`ledcAttachPin()`函数用于设置LEDC引脚的通道。`ledcAttachChannel()`函数用于设置LEDC引脚的频率、分辨率和通道。`ledcWrite()`用于设置LEDC引脚的占空比,`ledcRead()`用于获取引脚配置的占空比,`ledcReadFreq()`用于获取配置的频率。
`ledcWriteTone()`和`bledcWriteNote()`函数用于将LEDC引脚设置为给定频率上的PWM音调和特定音符。`ledcDetach()`用于将引脚与LEDC分离。`ledcChangeFrequency()`用于设置引脚频率,`ledcOutputInvert()`用于设置反相输出,`ledcFade()`用于设置和启动淡入淡出,`ledcFadeWithInterrupt()`和`ledcFadeWithInterruptArg()`用于通过中断设置和启动淡入淡出。
`analogWrite()`函数用于在引脚上写入模拟值(PWM波),兼容Arduino的analogWrite功能。`analogWriteResolution()`和`analogWriteFrequency()`用于设置模拟写入引脚的分辨率和频率。
以下示例展示了LEDC API的应用:
示例1:软件淡入淡出(已验证)
代码位于:文件 -> 示例 -> ESP32(ESP32 S3 Dev Module示例) -> AnalogOut -> LEDCSoftwareFade。
示例2:淡入淡出(未验证)
示例3:RGB写入(未验证)
本文部分信息来自ESP32 Arduino Core's documentation和Arduino-ESP32 LEDC API。API函数带有[- ]的在文档中有声明;带有[* ]标记的可能在不同ESP32 for Arduino版本中引发编译错误。更多教程和专栏更新敬请期待。
欢迎知友们参与讨论,提供优化建议和批评意见。