Arduino ESP32:使用 ledcWrite 函数淡入淡出LED

Arduino ESP32:使用 ledcWrite 函数淡入淡出LED


  • 📌Arduino esp32有关LEDC功能介绍原文档:https://espressif-docs.readthedocs-hosted.com/projects/arduino-esp32/en/latest/api/ledc.html
  • 📍有关Arduino ledc API功能函数在相关篇里进行了一一介绍《Arduino ESP32:PWM驱动LED的ledcWrite功能
  • 🔖功能说明:esp32 使用 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 褪色

// 值必须介于 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);//通道,频率,精度(1-14)
  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);
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值