概述
我们喜欢一些好的LED闪烁下一个人,但经过多年的LED焊接,我们需要一些凉爽的东西才能使我们兴奋。当然有RGB LED,它们也很有趣,但是之后又会怎样呢?好吧,我们得到了答案: LED灯条!这些是柔性电路板,上面焊接有全彩LED。他们从装饰房间,汽车,自行车,服装等中省去了很多LED布线工作。我们携带的也防水(虽然不是全部)。
LED灯带有两种基本类型, “interwetten与威廉的赔率体系 ”类和“数字”类。模拟型灯带将所有LED并联连接,因此它就像一个巨大的三色LED;您可以将整个条设置为所需的任何颜色,但不能控制各个LED的颜色。它们非常易于使用且相当便宜。
数字式条带的工作方式不同。它们为每个LED都有一个芯片,要使用灯带,您必须将数字编码的数据发送到芯片。但是,这意味着您可以单独控制每个LED!由于芯片的额外复杂性,它们更加昂贵。
您可以在Adafruit商店的仪表处购买防水的模拟型RGB LED灯条!
本教程仅适用于模拟RGB LED灯条!
威廉希尔官方网站 规格:
每段宽10.5毫米(0.41英寸),厚3毫米(0.12英寸),长100毫米(3.95英寸)
清晰的防水成型
背面有3M胶条
每个条段最大12V @ 60mA抽奖
每个段3个共阳极RGB LED
LED波长:630nm/530nm/475nm
没有微控制器或芯片控制器(仅适用于“模拟”!)
(我们正在努力从制造商那里获得英文数据表!)
原理图
模拟类型RGB LED灯带放在卷轴上,由10厘米长的3-LED截面制成。它们很容易在每个部分的边界处切割,有一点切割痕迹区域,并且可以焊接一些铜片。部分中的每个LED均为“ 5050”三色类型,其中包含红色,绿色和蓝色LED。这意味着每个部分实际上总共有9个LED-三个红色,三个绿色和三个蓝色。 LED串联排列,如下图所示:
电流消耗
由于存在三个串联的LED,因此无法通过5V电源驱动这些LED。 LED灯带上标有“ + 12V”以标记阳极,这是我们建议的最大电压。我们发现,如果您对它们稍微调光就可以了,那么即使9VDC也能很好地工作。
每3个LED的每段从12V电源消耗大约,每串LED的电流为20mA。指示灯因此,对于每个段,红色LED的最大电流为20mA,绿色LED的最大电流为20mA,蓝色LED的最大电流为20mA。如果您的LED灯条为全白色(所有LED都点亮),每段为60mA。
要查找每米的总最大电流,我们将 60mA x 10 (十段)相乘每米30/LED每米带的每米)= 0.6安培每米或 60mA x 20 (每米60/LED每米带的20米每节) b》每米1.2安培。再次,这是假定您将同时打开所有LED并以12V供电。如果要在颜色之间进行PWM渐变,则可能要绘制其中的1/2。尽管如此,您仍然需要有相当不错的电源才能运行此条带,所有这些LED都加起来!
接线
连接到插排非常简单,您需要将四根导线焊接到铜排上。我们将白色用于+ 12V,然后将红色,绿色和蓝色导线用于相应的LED颜色。
切掉条带一端的防水包覆成型。这些条带是对称的,因此无论使用哪一端都没有关系。
刮掉橡胶以露出铜垫。
将一些焊料融化到焊盘上以进行镀锡,并且还可以烧掉残留在橡胶上的任何东西。
焊接四根线上。我们使用的是绞合线,比实芯线更柔软,可能是更好的选择。
为保护电线并保持一定的防水性,可以使用热收缩。
用法
由于这些LED灯带非常简单,因此我们可以轻松地将它们与任何微控制器一起使用。我们建议使用PWM调光威廉希尔官方网站 来控制条带。由于每个“ LED”引脚最终可能需要一个或更多的Amp接地,因此需要!不要尝试将引脚直接连接到您的日常微控制器,否则它们会烧坏和/或无法工作。
您可以使用任何功率NPN或N沟道MOSFET,请确保晶体管能够通过根据需要提供尽可能多的电流。例如,由于我们每米每通道消耗约0.2Amp的电流,因此如果您有5米长的条带,则每个晶体管需要通过多达1安培的电流。获取功能强大的“ TO-220”软件包,而不是笨拙的小家伙。确保它们看起来像这样:
对于基本的低成本用途,我们建议使用N沟道MOSFET(例如IRLB8721)-它们非常流行且价格便宜,并且可以使用3.3V或5V逻辑。如果您看不到这些,TIP120也不错,但是晶体管中的电压损耗比MOSFET中的损耗大,这就是为什么我们建议首先使用它们的原因(热量损耗少,光更多!)
此图显示了与N沟道MOSFET,其中栅极为引脚1,漏极为引脚2,源极为引脚3
IRLB8721 可以处理最高 16A电流连续电流-至少有750个LED,如果不将它们全部放在明亮的白色上,则为1500个LED。您可能需要散热片,具体取决于连续/总体功耗/损耗
对于需要超过1 Amp的较长插排,请将电源直接连接到插排,然后将电源和地线连接回Arduino。
此图显示了与功率NPN晶体管(例如TIP120)的连接,其中Base是引脚1,集电极是引脚2,发射极是引脚3。除了这次我们在PWM输出引脚和基极之间有100-220欧姆的电阻外,它非常相似。
对于需要超过1A的较长插排,将电源直接连接到插排,然后将电源和地线重新连接到Arduino。 div》
连接9-为Arduino提供12V电源,以便 Vin 提供电源高压LED灯带。如果需要,也可以仅使用一条单独的电线连接到提供约+ 12V的电源。确保将电源的接地端连接至Arduino/MOSFET的接地端。
TIP120可以承受高达 5 Amps 的连续电流-因此,至少有250个LED,如果不这样做,不能全部使用500个明亮的白色LED。
Arduino代码
一旦连接好条带,就可以使用PWM输出轻松控制条带的颜色,对于Arduino,您可以使用 analogWrite(),位于引脚3、5、6、9、10或11上(适用于使用Atmega328或168的经典Arduino)。 analogWrite(pin,0)将关闭该LED, analogWrite(pin,127)将其打开一半,而 analogWrite(pin,255) 将其完全打开。这是一些执行简单颜色旋转的示例代码。
如果您想使用其他引脚,请在AnalogWrite()上查看此页面,以了解哪些型号支持哪些引脚上的AnalogWrite()
下载:文件
复制代码
// color swirl! connect an RGB LED to the PWM pins as indicated
// in the #defines
// public domain, enjoy!
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define FADESPEED 5 // make this higher to slow down
void setup() {
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);
}
void loop() {
int r, g, b;
// fade from blue to violet
for (r = 0; r 《 256; r++) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from violet to red
for (b = 255; b 》 0; b--) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from red to yellow
for (g = 0; g 《 256; g++) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
// fade from yellow to green
for (r = 255; r 》 0; r--) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from green to teal
for (b = 0; b 《 256; b++) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from teal to blue
for (g = 255; g 》 0; g--) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
} // color swirl! connect an RGB LED to the PWM pins as indicated
// in the #defines
// public domain, enjoy!
#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3
#define FADESPEED 5 // make this higher to slow down
void setup() {
pinMode(REDPIN, OUTPUT);
pinMode(GREENPIN, OUTPUT);
pinMode(BLUEPIN, OUTPUT);
}
void loop() {
int r, g, b;
// fade from blue to violet
for (r = 0; r 《 256; r++) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from violet to red
for (b = 255; b 》 0; b--) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from red to yellow
for (g = 0; g 《 256; g++) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
// fade from yellow to green
for (r = 255; r 》 0; r--) {
analogWrite(REDPIN, r);
delay(FADESPEED);
}
// fade from green to teal
for (b = 0; b 《 256; b++) {
analogWrite(BLUEPIN, b);
delay(FADESPEED);
}
// fade from teal to blue
for (g = 255; g 》 0; g--) {
analogWrite(GREENPIN, g);
delay(FADESPEED);
}
}
CircuitPython代码
您可以将模拟RGB LED灯条与CircuitPython的内置模拟/PWM输出模块一起使用。就像使用CircuitPython调暗LED的亮度一样,您可以使用PWM输出来控制条带的红色,绿色和蓝色LED的亮度。
就像连接到Arduino一样,您需要使用晶体管来缓冲和控制发送到LED灯条的较高电流(您的电路板)本身无法提供所有电流!)。确保按照使用页面将LED灯带通过功率晶体管连接到板上,如图所示。本指南假定接线相同,板脚5连接到灯条的红色LED,板脚6连接到绿色,板脚3连接到蓝色。如使用页面上所述,也请确保使用功能强大的12V外部电源,该电源具有足够的电流来驱动所有LED。
以下是将Metro M0 Express接线到MOSFET的示例,该MOSFET驱动一个LED条:
Fritzing来源
注意:请确保使用板上的PWM输出引脚!并非所有的数字输入/输出都支持PWM输出。查看电路板的指南和引脚排列以确认。通常,具有PWM功能的输出在电路板上的丝网上会在其旁边有一条点或波浪状的信号线。
也要非常小心,以确保您的电路板可以由12伏电压供电!如果使用与LED灯条相同的12伏电源驱动电路板,则需要确保将12伏电源连接到电路板上的相应引脚,以便将其正确调节至电路板所需的逻辑电平。特别要注意使用Feather和12伏电源,在Metro/Arduino板上没有Vin线路,因此以更高的电压(例如12伏)为它们供电会比较棘手,您会损坏板。 不要用12V的电源为羽毛,小装饰品或Gemma供电,否则可能会损坏电路板,请改用Metro电路板!
现在请连接到电路板的串行REPL,以便您使用CircuitPython 》》》 提示。
通过运行以下命令导入必要的 pulseio 和 board 模块:
下载:文件
复制代码
import board
import pulseio import board
import pulseio
然后为每个LED连接(红色,绿色,蓝色)创建PWM输出:
下载:文件
复制代码
red = pulseio.PWMOut(board.D5)
green = pulseio.PWMOut(board.D6)
blue = pulseio.PWMOut(board.D3) red = pulseio.PWMOut(board.D5)
green = pulseio.PWMOut(board.D6)
blue = pulseio.PWMOut(board.D3)
类似于模拟量I/O指南提到您可以更改每个PWM输出的占空比以控制LED的亮度。较大的占空比意味着LED的开启时间更长,并且看起来更亮。请记住,占空比是一个从0(0%/未打开)到65535(100%/一直打开)的值。
要将条带设置为100%的紫色红色,0%绿色和50%蓝色可以运行:
下载:文件
复制代码
red.duty_cycle = 65535 # 100% red
green.duty_cycle = 0 # 0% green
blue.duty_cycle = 32767 # 50% blue red.duty_cycle = 65535 # 100% red
green.duty_cycle = 0 # 0% green
blue.duty_cycle = 32767 # 50% blue
就像模拟I/O指南中提到的那样,尽管创建转换函数可能会更容易占空比值相对于数值的百分比,并使用它来简化代码。以下是定义和使用该函数设置相同紫色的方法:
下载:文件
复制代码
def duty_cycle(percent):
return int(percent / 100.0 * 65535.0)
red.duty_cycle = duty_cycle(100) # 100% red
green.duty_cycle = duty_cycle(0) # 0% green
blue.duty_cycle = duty_cycle(50) # 50% blue def duty_cycle(percent):
return int(percent / 100.0 * 65535.0)
red.duty_cycle = duty_cycle(100) # 100% red
green.duty_cycle = duty_cycle(0) # 0% green
blue.duty_cycle = duty_cycle(50) # 50% blue
下面是使用CircuitPython控制LED灯条并在不同颜色之间淡入淡出的完整示例就像上一页中的类似Arduino代码一样。将其另存为开发板的根文件系统上的 main.py ,它将在开发板启动时淡化条带的颜色:
下载:Project Zip 或 main.py | 在Github上查看
复制代码
import time
import board
import pulseio
RED_PIN = board.D5 # Red LED pin
GREEN_PIN = board.D6 # Green LED pin
BLUE_PIN = board.D3 # Blue LED pin
FADE_SLEEP = 10 # Number of milliseconds to delay between changes.
# Increase to slow down, decrease to speed up.
# Define PWM outputs:
red = pulseio.PWMOut(RED_PIN)
green = pulseio.PWMOut(GREEN_PIN)
blue = pulseio.PWMOut(BLUE_PIN)
# Function to simplify setting duty cycle to percent value.
def duty_cycle(percent):
return int(percent / 100.0 * 65535.0)
# Fade from nothing up to full red.
for i in range(100):
red.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Now fade from violet (red + blue) down to red.
for i in range(100, -1, -1):
blue.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from red to yellow (red + green)。
for i in range(100):
green.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from yellow to green.
for i in range(100, -1, -1):
red.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from green to teal (blue + green)。
for i in range(100):
blue.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from teal to blue.
for i in range(100, -1, -1):
green.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
import time
import board
import pulseio
RED_PIN = board.D5 # Red LED pin
GREEN_PIN = board.D6 # Green LED pin
BLUE_PIN = board.D3 # Blue LED pin
FADE_SLEEP = 10 # Number of milliseconds to delay between changes.
# Increase to slow down, decrease to speed up.
# Define PWM outputs:
red = pulseio.PWMOut(RED_PIN)
green = pulseio.PWMOut(GREEN_PIN)
blue = pulseio.PWMOut(BLUE_PIN)
# Function to simplify setting duty cycle to percent value.
def duty_cycle(percent):
return int(percent / 100.0 * 65535.0)
# Fade from nothing up to full red.
for i in range(100):
red.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Now fade from violet (red + blue) down to red.
for i in range(100, -1, -1):
blue.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from red to yellow (red + green)。
for i in range(100):
green.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from yellow to green.
for i in range(100, -1, -1):
red.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from green to teal (blue + green)。
for i in range(100):
blue.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
# Fade from teal to blue.
for i in range(100, -1, -1):
green.duty_cycle = duty_cycle(i)
time.sleep(FADE_SLEEP)
责任编辑:wv
-
led
+关注
关注
242文章
23277浏览量
660872
发布评论请先 登录
相关推荐
评论