使用脉冲宽度调制(PWM)技术,使用汞柱板来控制LED亮度
扫描二维码
随时随地手机看文章
控制LED亮度是电子和嵌入式系统中的一个基本概念,在可调光照明,显示背光,甚至电机速度控制中起着关键作用。我们使用脉宽调制(PWM)来实现平滑和精确的亮度调节,而不仅仅是开关LED。
PWM的工作原理是快速切换LED在ON和OFF状态之间的高频。亮度是通过改变占空比来控制的,占空比代表了信号在每个周期中保持高电平的时间百分比。
当以足够高的频率切换时,人眼无法感知在开和关状态之间的快速切换。相反,由于视觉的持续,LED的亮度呈现为连续的平均值,造成变暗的错觉。
在本教程结束时,您将学习:
✅PWM是什么以及它如何控制亮度。
✅如何使用水星板上的analogWrite()函数。
我们开始吧
•设置环境-如果您还没有在Arduino®上添加水星板,现在是这样做的好时机。
•插入USB电缆水星板和连接它您的笔记本电脑。
•请参阅下面的代码
•当Arduino终端显示“Connecting…”时,长按FLASH按钮启动上传过程。
这里到底发生了什么?
速成班:了解Arduino®环境中的GPIO控制
对于Arduino®编码环境的新手,让我们分解使用数字GPIO(通用输入/输出)引脚和analogWrite()函数控制LED亮度的基础知识。
Arduino中的analogWrite()函数用于在支持的数字引脚上生成脉冲宽度调制(PWM)信号。与digitalWrite()不同,digitalWrite()只是将引脚设置为HIGH或LOW,而analogWrite()通过改变方波的占空比来允许中间输出电平。
这里,“亮度”表示用户输入所需的LED亮度。
在水银开发板上,高电平是3.3V,低电平是0V。analogWrite()函数使输出能够在两个极端之间实现可感知的电压。
analogWrite()函数接受两个输入:引脚和占空比。在Mercury Board上,内置LED连接到引脚D7 (GPIO 2)。通过将占空比设置为0到255之间的值[0 = 0%占空比,255 = 100%占空比],我们可以平滑地调节LED的亮度。
因此,要将LED亮度设置为50%,代码如下:
为了使其更具交互性,我们可以引入Serial.parseInt();允许用户输入控制LED亮度。这将使用户能够输入[0,255]之间的亮度水平,水星板将读取并使用相应地调整LED的亮度。
***声明***
以上提到的一切大体上都是正确的;然而,在使用ESP-12F模块的水星板上,ESP-12F模块上的默认内置LED以反向配置连接。这意味着当GPIO 2 (D7)设置为HIGH时,LED关闭,当GPIO 2设置为LOW时,LED打开。
因此,PWM的行为也被反转。当PWM值设置为0时,LED以全亮度发光,当PWM值设置为255时,LED完全关闭。否则,概念理解保持不变。
为了解释这种倒置的LED行为,我们需要在代码中做一个小的调整,如下所示:
这里,“亮度”表示用户输入所需的LED亮度。
本文编译自hackster.io