跟着Arduino示例学ESP8266---LED灯渐变(1.5)

主要功能:演示如何使用模拟输出使 LED 淡入淡出。


这个示例展示了如何使用 analogWrite() 函数来实现LED的渐变效果。 analogWrite() 函数利用脉宽调制(PWM)技术,通过快速地调整数字引脚的开启和关闭比例,来实现LED的亮度渐变。

学习内容:

  • 如何通过GPIO口输出不同等级的模拟信号

1.所需硬件

  • ESP8266

2.电路图

自行搭建的话可以参考下面的电路图

3.代码解读

analogWrite()是一个函数,通常用于控制模拟信号输出,例如用于PWM(脉冲宽度调制)的Arduino引脚。该函数可用于Arduino板上的某些引脚,如数字引脚3、5、6、9、10和11。

analogWrite()函数接受两个参数:

  • pin:表示要输出模拟信号的引脚号码。
  • value:表示要输出的模拟信号的值,范围在0到255之间。0表示完全关断,255表示完全通电。

analogWrite()函数通过改变输出引脚上PWM的占空比来模拟模拟信号的持续时间和幅度。占空比为50%时,表示输出信号的平均电压为输入电压的一半。

作为PWM,analogWrite()函数非常适合用于控制电机速度、LED亮度和产生音频信号等应用场景。

        在 setup() 里,声明引脚输出状态。

pinMode(led, OUTPUT);

        而在循环代码中,则是使用的函数需要两个参数:一个参数告诉函数要写入哪个引脚,另一个参数指示要写入的 PWM 值。

        为了淡化 LED 关闭和打开,逐渐将 PWM 值从 0(一直关闭)增加到 255(一直亮起),然后再次回到 0 以完成循环。在下面的程序中,PWM 值是使用名为 的变量设置的。每次通过循环时,它都会增加变量的值。

/*
  Fade

  This example shows how to fade an LED on pin 9 using the analogWrite()
  function.

  The analogWrite() function uses PWM, so if you want to change the pin you're
  using, be sure to use another PWM capable pin. On most Arduino, the PWM pins
  are identified with a "~" sign, like ~3, ~5, ~6, ~9, ~10 and ~11.

  This example code is in the public domain.

  https://www.arduino.cc/en/Tutorial/BuiltInExamples/Fade
*/

int led = LED_BUILTIN;         // the PWM pin the LED is attached to
int brightness = 0;  // how bright the LED is
int fadeAmount = 5;  // how many points to fade the LED by

// the setup routine runs once when you press reset:
void setup() {
  // declare pin 9 to be an output:
  pinMode(led, OUTPUT);
}

// the loop routine runs over and over again forever:
void loop() {
  // set the brightness of pin 9:
  analogWrite(led, brightness);

  // change the brightness for next time through the loop:
  brightness = brightness + fadeAmount;

  // reverse the direction of the fading at the ends of the fade:
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }
  // wait for 30 milliseconds to see the dimming effect
  delay(30);
}

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值