通过esp32实现不同颜色和不同亮度的rgb灯

本文介绍了如何通过ESP32微控制器调控RGB灯的色彩和亮度。利用ledc_timer_config配置占空比和频率,ledc_channel_config设定通道和引脚,结合ledc_set_fade_with_time实现平滑渐变效果。通过ledp_Init、ledp_pwm_Output、ledp_red_Output、ledp_green_Output和ledp_blue_Output等函数,实现了对RGB灯的精细化控制,例如调节亮度和显示橙色灯光。
摘要由CSDN通过智能技术生成

我们先来看一下什么是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 = 
        {
   
            .
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值