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的主要内容,如果未能解决你的问题,请参考以下文章

esp32能不能在arduino上断点调试

Arduino ESP32使用外部中断

ESP32 Arduino使用内部霍尔传感器

Arduino方式开发ESP32笔记:使用Preferences保存数据

ESP32使用Arduino环境,安装编译下载安装库

ESP32使用Arduino环境,安装编译下载安装库