我们先来看一下什么是rgb灯。
全彩 LED 灯, 实质上是一种把红、绿、 蓝单色发光体集成到小面积区域中的 LED 灯,控制时对这三种颜色的灯管输出不同的光照强度,即可混合得到不同的颜色,其混色原理与光的三原色混合原理一致。简单来说就是led会有三个引脚,分别对应着red颜色,green颜色,blue颜色。通过改变它们的占空比,以来达到显示不同的颜色。就像调色板一样,通过红绿蓝三种基础色来调出不同的颜色。
接下来说一下所用到的一些esp32的api,我把它封装在了三个函数里面。
//配置gpio的pwm的初始化
//无形参
//无返回值
void ledp_Init(void)
{
ledc_timer_config_t ledc_timer =
{
.duty_resolution = LEDC_TIMER_8_BIT, // resolution of PWM duty
.freq_hz = 5000, // frequency of PWM signal
.speed_mode = LEDC_MODE, // timer mode
.timer_num = LEDC_TIMER, // timer index
.clk_cfg = LEDC_AUTO_CLK, // Auto select the source clock
};
ledc_timer_config(&ledc_timer);
}
//gpio输出不同占空比的pwm(带缓冲时间)
//LEDC_NUM:输出的引脚,LEDC_DUTY:占空比,LEDC_FADE_TIME:缓冲时间
//无返回值
void ledp_fade_Output(int LEDC_NUM, uint32_t LEDC_DUTY, int LEDC_FADE_TIME)
//void ledp_fade_Output()
{
ledc_channel_config_t ledc_channel =
{
.