LED照明的兴起是平流层,很容易理解为什么。它们的生产成本低廉,比其他照明选项消耗的功率少得多,并且在大多数情况下不会发热,因此可以安全地用于多种用途。
最常见的LED产品之一是灯带。在本文中,我们将介绍如何使用Arduino设置两种最常见的类型。这些项目非常简单,即使您是Arduino的初学者,您也可以做到这一点。
我们还将使用Arduino IDE对其进行控制。尽管您可以使用几乎任何兼容的板(例如NodeMCU),但该项目都使用Arduino Uno。
选择条带
在购买LED条带时,需要注意以下几点:考虑。首先是功能。如果您打算将这些灯条主要用于环境照明,那么简单的 12v RGB LED 灯条( SMD5050 )将是正确的选择。
这些条带中的许多条带红外遥控器来控制它们,尽管在本项目中,我们将使用Arduino代替。花一些时间四处逛逛,在撰写本文时,有可能以每米$ 1的低价获得这些试条。
如果您想要一些更高的技术,请考虑 WS2811 / 12 / 12B 。这些条带(有时称为 Neopixels )具有集成的芯片组,可以单独进行寻址。这意味着它们不仅具有环境照明的功能。
您可以使用它们从头开始构建便宜的LED像素显示器。您甚至可以使用它们制作自己的个人室内暴风云灯。
这些灯条仅需5v即可为其供电。虽然可以直接从Arduino板上直接为少量的电源供电,但通常最好使用单独的5V电源,以免被油炸Arduino散发出臭味。如果您正在寻找可单独编程的LED,那么这些适合您。在撰写本文时,它们的价格为每米4美元左右。
要考虑的另一件事是这些条带可能在哪里使用。这两种类型的灯带都有不同的长度,LED密度(每米的LED数量)和不同的耐候程度。
在查看LED灯带时,请注意清单上的数字。通常,第一个数字是每米的LED数量,字母 IP 后跟数字是其防风雨性能。例如,如果列表中显示 30个IP67 ,则表示每米将有 30 个LED。 6 表示已完全隔绝灰尘,而 7 表示已对其进行了防护,防止其暂时浸入水中。 (了解有关防风雨和IP等级的更多信息。)选择了LED灯条之后,就可以将其与Arduino链接了。让我们从SMD5050开始。
建立连接
要将12v LED灯条连接到Arduino,您将需要一些组件:
在设置电路之前,让我们先谈一下 MOSFET 。
每当您控制电压高于微控制器的电压时,都需要一些电压在这两者之间,以防止您的木板被炸。一种简单的方法是使用MOSFET。通过将脉宽调制( PWM )信号发送到 gate 支路,可以控制在漏极和之间传递多少功率源腿。通过使LED灯带的每种颜色都通过MOSFET,您可以控制LED灯带上每种颜色的亮度。
使用微控制器时,使用逻辑电平组件以确保性能很重要。按照您希望他们的方式工作。确保您的MOSFET是逻辑电平,而不是标准。
像这样设置电路:
大多数LED灯带都带有Dupont连接器,易于连接。至。如果不是,则可能需要将导线焊接到LED灯条上。如果您不熟悉焊接,请不要着急,这是一件容易的事,如果有需要,我们会提供焊接入门指南。
为此,我们将通过USB为Arduino板供电项目。您可以选择使用VIN引脚为电路板供电,但在执行此操作之前,请确保您知道电路板的电源限制。
电路完成后,电路外观应如下所示:
现在您已经连接了所有东西,是时候制作一个简单的Arduino草图来对其进行控制了。打开Arduino IDE。确保在工具>电路板和工具>端口菜单中为电路板选择了正确的电路板和端口号。打开一个新草图并用适当的名称保存它。
此草图将一次将灯光淡化为一种颜色,将其保持点亮几秒钟,然后将其淡出直到再次熄灭。您可以按照此处进行操作,自己制作草图,也可以直接从GitHub下载完整代码。
首先定义要使用哪些引脚来控制MOSFET。
#define RED_LED 6#define BLUE_LED 5#define GREEN_LED 9
下一步,您需要一些变量。创建一个整体的亮度变量,并为每种颜色的亮度创建一个变量。我们将仅使用主亮度变量来关闭LED,因此在此处将其设置为最大亮度值255。
您还需要创建一个变量来控制褪色发生的速度
int brightness = 255;int gBright = 0;int rBright = 0;int bBright = 0;int fadeSpeed = 10;
在您的 setup 功能中,我们将Arduino引脚设置为输出。我们还将调用两个延迟5秒的函数。这些函数尚不存在,但是请放心,我们将介绍它们。
void setup() { pinMode(GREEN_LED, OUTPUT); pinMode(RED_LED, OUTPUT); pinMode(BLUE_LED, OUTPUT); TurnOn(); delay(5000); TurnOff();}
现在创建 TurnOn()方法:
void TurnOn() { for (int i = 0; i < 256; i++) { analogWrite(RED_LED, rBright); rBright +=1; delay(fadeSpeed); } for (int i = 0; i < 256; i++) { analogWrite(BLUE_LED, bBright); bBright += 1; delay(fadeSpeed); } for (int i = 0; i < 256; i++) { analogWrite(GREEN_LED, gBright); gBright +=1; delay(fadeSpeed); } }
这三个 for 循环在 fadeSpeed 值指定的时间内使每种颜色达到其全亮度。
最后,您需要创建 TurnOff()方法:
void TurnOff() { for (int i = 0; i < 256; i++) { analogWrite(GREEN_LED, brightness); analogWrite(RED_LED, brightness); analogWrite(BLUE_LED, brightness); brightness -= 1; delay(fadeSpeed); }}void loop() {}
此方法将我们的亮度变量应用于所有三个彩色图钉,并在一段时间内将其减小为零。为了避免编译错误,我们在这里也需要一个空循环方法。
完成此草图后,请保存它。验证草图并将其上传到您的Arduino开发板。如果出现错误,请再次检查代码中是否有讨厌的拼写错误或分号丢失。
现在,您应该看到LED灯条将每种颜色分别倾斜,保持白色5秒钟,然后均匀地淡出无处:
如果遇到任何困难,请再次检查接线和代码。
该项目是入门的简单方法,但其中包含了一些想法。可以扩展到真正有效的照明。仅需几个组件,您就可以创建自己的日出警报,您可以在进入房间时使用任何按钮或传感器来触发LED,例如:
现在,我们已经涵盖了 SMD5050s ,让我们进入 WS2812B 条带。
好主意
这些条带需要较少的组件来使其运行,并且有关于可以使用的组件的确切值还有一些余地。该电路中的电容器可确保5v LED获得稳定的电源。电阻器确保从Arduino接收到的数据信号不受任何干扰。
您将需要:
按如下图所示设置电路:
请注意,电容器的方向必须正确。您可以通过查找电容器主体上的减号(-)来确定哪一侧连接到接地轨。
这一次,我们将使用5v电源为Arduino供电。尽管这里有一些重要的事情要注意,但这使项目一旦完成就成为独立项目。
首先,请确保在将板连接到电源上之前,您的板可以接收5v电源。几乎所有开发板都通过USB端口以5v的电压运行,但是某些开发板上的电源输入引脚有时会跳过稳压器,而变成烤面包片。
此外,请确保将多个独立的开发板分开电源未连接到Arduino —每当使用外部电源时,都要断开USB电缆。
插入电源后应如下所示:
现在,我们的LED灯带已连接好,让我们继续进行代码。
跳舞灯
为了安全地对我们的电路板进行编程,请从以下位置断开 VIN 线:电源线。您将在稍后重新连接。
将Arduino连接到计算机,然后打开Arduino IDE。检查您在工具>板子和工具>端口菜单中选择的板子和端口号是否正确。
我们将使用 FastLED 库以测试我们的设置。您可以通过单击素描>包括库>管理库并搜索FastLED来添加库。单击安装,该库将添加到IDE。
在文件>示例> FastLED 下,选择 DemoReel100 草图。该草图循环了 WS2812 LED灯带可以完成的各种事情,并且设置起来非常简单。
您需要更改的只是 DATA_PIN 变量,使其与引脚13 和 NUM_LEDS 变量相匹配,以定义您正在使用的灯条中有多少个LED。在这种情况下,我只使用从较长条带上切下的一小行10个LED。
就是这样!将草图上传到板上,断开USB电缆的连接,然后打开5v电源。最后,将Arduino的VIN重新连接到电源线并观看表演!
如果什么都没发生,请检查接线并在演示草图中指定正确的Arduino引脚。
演示草图展示了WS2812试条可以实现的多种可能效果组合。除了从常规的LED灯带升级之外,它们也可以投入实际使用。一个不错的下一个项目将是为媒体中心建立自己的氛围。
尽管这些灯带肯定比SMD5050更实用,但还不要打折标准的12v LED灯带。它们在价格方面是无与伦比的,并且LED灯条的应用很多。
学习使用LED灯条是熟悉Arduino上基本编程的好方法,但是最好的学习方法是修修补补。修改上面的代码,看看可以做什么!如果这一切对您来说太多了,请考虑从适合初学者的Arduino项目开始。
图片来源:mkarco / Shutterstock