Arduino ESP32:使用 ledcWrite 函数淡入淡出LED
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arduino ESP32:使用 ledcWrite 函数淡入淡出LED相关的知识,希望对你有一定的参考价值。
Arduino ESP32:使用 ledcWrite 函数淡入淡出LED
使用 ledcWrite 函数淡入淡出LED
实例代码
/*
使用 ledcWrite 函数淡入淡出LED
接线说明:LED 引脚 ==> D18
*/
//使用 16 个通道中的第一个通道(从零开始)
#define LEDC_CHANNEL_0 0
// 为 LEDC 定时器使用 13 位精度
#define LEDC_TIMER_13_BIT 13
// 使用 5000 Hz 作为 LEDC 基频
#define LEDC_BASE_FREQ 5000
// 淡出 LED PIN(替换为内置 LED 的 LED_BUILTIN 常量)
#define LED_PIN 18
int brightness = 0; // LED有多亮
int fadeAmount = 5; // 多少个点使 LED 褪色
// Arduino 喜欢模拟
// 值必须介于 0 和最大值之间
void ledcAnalogWrite(uint8_t channel, uint32_t value, uint32_t valueMax = 255) {
// calculate duty, 8191 from 2 ^ 13 - 1
uint32_t duty = (8191 / valueMax) * min(value, valueMax);
// 向 LEDC 写入任务
ledcWrite(channel, duty);
}
void setup() {
// Setup timer and attach timer to a led pin
ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
ledcAttachPin(LED_PIN, LEDC_CHANNEL_0);
}
void loop() {
// set the brightness on LEDC channel 0
ledcAnalogWrite(LEDC_CHANNEL_0, brightness);
// 下次通过循环更改亮度:
brightness = brightness + fadeAmount;
// 在淡入淡出结束时反转淡入淡出的方向:
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
// 等待20毫秒看调光效果
delay(20);
}
以上是关于Arduino ESP32:使用 ledcWrite 函数淡入淡出LED的主要内容,如果未能解决你的问题,请参考以下文章