概述
我們喜歡一些好的LED閃爍下一個人,但經過多年的LED焊接,我們需要一些涼爽的東西才能使我們興奮。當然有RGB LED,它們也很有趣,但是之后又會怎樣呢?好吧,我們得到了答案: LED燈條!這些是柔性電路板,上面焊接有全彩LED。他們從裝飾房間,汽車,自行車,服裝等中省去了很多LED布線工作。我們攜帶的也防水(雖然不是全部)。
LED燈帶有兩種基本類型, “模擬”類和“數字”類。模擬型燈帶將所有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文章
23857瀏覽量
674799
發布評論請先 登錄

氛圍燈的發展歷程和應用場景
Melexis推出MLX80142雙RGB LED驅動芯片
零知開源——玩轉WS2812B燈條模塊

寵物屋體驗控制電機、RGB全彩LED燈與溫濕度傳感器

評論