ESP32 呼吸灯

//1. ESP32 ESP-IDF-v4.1 下面是一个呼吸灯的整理,可以直接使用,欢迎参考。

#include <stdio.h>

#include "freertos/FreeRTOS.h"

#include "freertos/task.h"

#include "driver/ledc.h"

#include "esp_err.h"

 

#define LEDC_HS_TIMER          LEDC_TIMER_0

#define LEDC_HS_MODE           LEDC_HIGH_SPEED_MODE

#define LEDC_HS_CH0_CHANNEL    LEDC_CHANNEL_0

#define LEDC_HS_CH0_GPIO       (2)

#define LEDC_TEST_DUTY         (4000)

#define LEDC_TEST_FADE_TIME    (3000)

 

void app_main(void)

{

    //1. PWM: 定时器配置

    ledc_timer_config_t ledc_timer = {

        .duty_resolution = LEDC_TIMER_13_BIT, // resolution of PWM duty

        .freq_hz = 5000,                      // frequency of PWM signal

        .speed_mode = LEDC_HS_MODE,           // timer mode

        .timer_num = LEDC_HS_TIMER,            // timer index

        .clk_cfg = LEDC_AUTO_CLK,              // Auto select the source clock

    };

    ledc_timer_config(&ledc_timer);

 

    //2. PWM:通道配置

    ledc_channel_config_t ledc_channel= {

        .channel    = LEDC_HS_CH0_CHANNEL,

        .duty       = 0,

        .gpio_num   = LEDC_HS_CH0_GPIO, //这里是SDK带的呼吸灯案例,你看下能看懂不,我现在给你修改个引脚,你的灯就用上了, 2表示你板子上的那个灯 2引脚的那个

        .speed_mode = LEDC_HS_MODE,

        .hpoint     = 0,

        .timer_sel  = LEDC_HS_TIMER   

    };

    ledc_channel_config(&ledc_channel);

    

    //3.PWM:使用硬件渐变

    ledc_fade_func_install(0);

 

    //4. 输出PWM信号控制灯

    while (1) {

        //灯:由灭慢慢变亮

        printf("1. LEDC fade up to duty = %d\n", LEDC_TEST_DUTY);

        ledc_set_fade_with_time(ledc_channel.speed_mode,

                ledc_channel.channel, LEDC_TEST_DUTY, LEDC_TEST_FADE_TIME);

        ledc_fade_start(ledc_channel.speed_mode,

                ledc_channel.channel, LEDC_FADE_NO_WAIT);

        vTaskDelay(LEDC_TEST_FADE_TIME / portTICK_PERIOD_MS);

 

        //灯:由亮慢慢变灭

        printf("2. LEDC fade down to duty = 0\n");

        ledc_set_fade_with_time(ledc_channel.speed_mode,

                ledc_channel.channel, 0, LEDC_TEST_FADE_TIME);

        ledc_fade_start(ledc_channel.speed_mode,

                ledc_channel.channel, LEDC_FADE_NO_WAIT);

        vTaskDelay(LEDC_TEST_FADE_TIME / portTICK_PERIOD_MS);

    }

}

 

//参考文档:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/peripherals/ledc.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值