Arduino - 渐变 LED

此示例演示了如何使用 analogWrite() 函数渐变 LED。AnalogWrite 使用脉冲宽度调制 (PWM),以不同的开启和关闭比率快速打开和关闭数字引脚,以创建渐变效果。

所需组件

您将需要以下组件 −

  • 1 × 面包板
  • 1 × Arduino Uno R3
  • 1 × LED
  • 1 × 330Ω 电阻
  • 2 ×跳线

步骤

按照电路图,将组件连接到面包板上,如下图所示。

面包板上的组件

注意 − 要找出 LED 的极性,请仔细观察。两条腿中较短的一条,朝向灯泡的扁平边缘,表示负极。

LED

电阻等组件需要将其端子弯曲成 90° 角,以便正确安装面包板插座。您还可以将端子剪短。

Resistors

草图

在您的计算机上打开 Arduino IDE 软件。使用 Arduino 语言编码将控制您的电路。单击新建打开新的草图文件。

草图

Arduino 代码

/*
淡入淡出
此示例显示如何使用 analogWrite() 函数淡入淡出引脚 9 上的 LED。

analogWrite() 函数使用 PWM,因此如果您想更改正在使用的引脚,请务必使用另一个支持 PWM 的引脚。在大多数 Arduino 上,PWM 引脚用"~"符号标识,例如 ~3、~5、~6、~9、~10 和 ~11。
*/

int led = 9; // LED 所连接的 PWM 引脚

int brightness = 0; // LED 的亮度

int fadeAmount = 5; // LED 的亮度

// 按下重置键时,设置例程运行一次:

void setup() {
    // 将引脚 9 声明为输出:
    pinMode(led, OUTPUT);
}

// 循环例程永远运行:

void loop() {
    // 设置引脚 9 的亮度:
    analogWrite(led, bright);
    // 更改下次循环的亮度:
    brightness = bright + fadeAmount;
    // 在淡入淡出结束时反转淡入淡出的方向:
    if (brightness == 0 || bright == 255) {
        fadeAmount = -fadeAmount ;
    }
    // 等待 30 毫秒以查看调光效果
    delay(300);
}

需要注意的代码

将引脚 9 声明为 LED 引脚后,代码的 setup() 函数中无需执行任何操作。您将在代码主循环中使用的 analogWrite() 函数需要两个参数:一个参数告诉函数要写入哪个引脚,另一个参数指示要写入什么 PWM 值。

为了使 LED 逐渐熄灭和亮起,请逐渐将 PWM 值从 0(完全熄灭)增加到 255(完全亮起),然后再增加到 0,以完成循环。在上面给出的草图中,使用名为亮度的变量设置 PWM 值。每次循环时,它都会增加变量 fadeAmount 的值。

如果亮度处于其值的任一极端(0 或 255),则 fadeAmount 会更改为其负值。换句话说,如果 fadeAmount 为 5,则将其设置为 -5。如果为 -5,则将其设置为 5。下次循环时,此更改也会导致亮度改变方向。

analogWrite() 可以非常快速地更改 PWM 值,因此草图末尾的延迟控制淡入淡出的速度。尝试更改延迟的值,看看它如何改变淡入淡出效果。

结果

您应该会看到 LED 亮度逐渐变化。