2022-03-23 22:20:15 +01:00

43 lines
1.3 KiB
C

#include <stdio.h>
#include "esp_err.h"
#include "esp_log.h"
#include "driver/ledc.h"
#include "ledController.h"
esp_err_t init_led_driver(led_disp_config_t configs[], uint8_t config_nb){
ledc_timer_config_t ledc_timer = {
.speed_mode = LEDC_LOW_SPEED_MODE,
.timer_num = LEDC_TIMER_0,
.duty_resolution = LEDC_TIMER_10_BIT,
.freq_hz = 5000,
.clk_cfg = LEDC_AUTO_CLK
};
ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
for(int i=0; i < config_nb; i++){
ESP_LOGI("led setup", "conf n %i, gpio %i, duty %i", i, configs[i].output, configs[i].intensity);
ledc_channel_config_t ledc_channel = {
.speed_mode = LEDC_LOW_SPEED_MODE,
.channel = i,
.timer_sel = LEDC_TIMER_0,
.intr_type = LEDC_INTR_DISABLE,
.gpio_num = configs[i].output,
.duty = configs[i].intensity,
.hpoint = 0
};
ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
}
return ESP_OK;
}
esp_err_t update_led_status(led_disp_config_t configs[], uint8_t config_nb, uint16_t co2){
for(int i=0; i < config_nb; i++){
uint16_t duty = (co2>configs[i].min && co2<configs[i].max)?configs[i].intensity:0;
ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, i, duty));
ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, i));
}
return ESP_OK;
}