這篇文章來源于DevicePlus英語網(wǎng)站的翻譯稿。
使用LED是一種為家庭增添色彩的快捷簡單的方式,可以將LED燈帶應(yīng)用于廚房儲(chǔ)物柜、客廳角落或者任何可能需要額外照明的地方。如果您想要以低廉的價(jià)格制備自己的照明設(shè)備,并且對(duì)照明設(shè)備的顏色和圖案進(jìn)行更多控制操作,那么可以使用Arduino來實(shí)現(xiàn)。
LED燈帶工作原理
LED燈帶有多種形式,但是一般來說,大多數(shù)型號(hào)是一種放置有周期性LED模塊的帶狀板,并且某些模塊之間還有虛線部分,如果需要,您可以在這些虛線的地方對(duì)燈帶進(jìn)行切割。這些位置通常會(huì)標(biāo)有金屬觸點(diǎn),因此您可以添加額外的電路以將多個(gè)燈帶連接在一起。在端口您會(huì)看到有一些可以插入Arduino的電線。
電線的數(shù)量可能會(huì)有所不同,但在本指南中,我們將會(huì)使用包含控制自身電路的燈帶,讓您可以通過使用一根電線對(duì)每個(gè)單獨(dú)的LED進(jìn)行尋址。還有一根額外的電源線和地線,這意味著整個(gè)項(xiàng)目只需要三根電線即可。這種類型的燈帶通常來說都更加方便,所以我們將會(huì)使用該類型燈帶,具體使用的型號(hào)為基于WS2812B的LED燈帶。
LED燈帶可以使用外部庫進(jìn)行控制,例如FastLED 或者Adafruit的Neopixel 庫。在本指南中,我們將使用FastLED庫,這個(gè)庫包含了用于控制各種LED燈帶控制器的函數(shù),從而使設(shè)置顏色或動(dòng)態(tài)模式變得更容易。
請(qǐng)下載此鏈接中的庫,并將其添加到您的草圖中。然后,在您的Arduino IDE中,進(jìn)入Sketch > Include library > Add .ZIP library,并選擇FastLED庫。在File(文件)菜單的Example(示例)部分還提供了一系列的示例草圖,您可以在探索時(shí)查看這些示例。不過現(xiàn)在,我們從一個(gè)簡單的工作作為開始—將每個(gè)LED設(shè)置為相同的顏色。
所需部件
您可以根據(jù)需要購買任意數(shù)量的LED燈帶布置到您的房間,但需要注意的一點(diǎn)是,每個(gè)LED都會(huì)消耗電力。如果使用少量的LED,您可以使用Arduino的5V電源,但是如果是大量LED,您需要使用外部電源。我們僅使用Arduino來完成此項(xiàng)目,但是如果您想要擴(kuò)展項(xiàng)目的話,需要注意電源的選擇。基于以上內(nèi)容,您將需要以下部件:
一個(gè)LED燈帶 | |
電源(用于大燈帶) | |
Arduino Uno | |
Arduino IDE | |
USB數(shù)據(jù)線 | |
電線 |
這個(gè)項(xiàng)目的接線相對(duì)簡單,因?yàn)槲覀冞x擇了可尋址的LED燈帶。但在接線前,我們先了解一下將要使用的代碼。
代碼
由于我們使用的是FastLED庫,所以示例所用的代碼非常簡單。我們將指示Arduino按照順序打開每個(gè)LED,并將其設(shè)置為一種顏色。以下為完整代碼,您可以將其上傳到Arduino Uno。
#include
#define numberOfLEDs 100
#define controlPin 5
CRGB leds[numberOfLEDs];
void setup() {
FastLED.addLeds(leds, numberOfLEDs);},>
void loop() {
for (int thisLED = 0; thisLED < numberOfLEDs; thisLED++) {
leds[thisLED].r = 50;
leds[thisLED].b = 0;
leds[thisLED].g = 0;
FastLED.show();
}
}
現(xiàn)在,我們來看一下這些代碼的內(nèi)容。
#include
#define numberOfLEDs 100
#define controlPin 5
CRGB leds[numberOfLEDs];
第一行用于導(dǎo)入FastLED庫,使您可以在草圖中使用其中的函數(shù)。接下來的兩行用于定義一對(duì)常量,這兩個(gè)常量分別與燈帶上您要控制的LED數(shù)量(如果您愿意的話也可以只控制燈帶上的一部分LED)以及將用于控制LED的Arduino板上的引腳數(shù)量相對(duì)應(yīng)。最后,CRGB一行將會(huì)創(chuàng)建一個(gè)具有上面指定的LED數(shù)量的陣列。
在本示例中,我們使用10個(gè)LED,這個(gè)數(shù)量很小,只用Arduino就可以提供足夠的電源,所以我們就可以只用它來進(jìn)行演示了。
void setup() {
FastLED.addLeds(leds, numberOfLEDs);,>
}
這一行通過使用與LED燈帶對(duì)應(yīng)的控制器芯片組來對(duì)LED進(jìn)行設(shè)置。該行內(nèi)容會(huì)因您所使用的燈帶型號(hào)而異,您可能需要查看FastLED文檔來找到適用的命令。FastLED的Blink草圖中(不同于Arduino IDE的內(nèi)置Blink草圖)包含了對(duì)應(yīng)于各種芯片組的代碼。如果您使用的是WS2812B,那么使用上文中的代碼即可。
void loop() {
for (int thisLED = 0; thisLED < numberOfLEDs; thisLED++) {
leds[thisLED].r = 50;
leds[thisLED].b = 0;
leds[thisLED].g = 0;
FastLED.show();
}
}
在本部分中,for()循環(huán)將遍歷陣列中的每個(gè)LED并將其一一打開。以leds[]開頭的三行通過將紅色、綠色和藍(lán)色值(每個(gè)值最高255)進(jìn)行組合來設(shè)置LED顏色。您可以嘗試調(diào)整這些值來更改LED的顏色。如果把三個(gè)值都設(shè)置為0,LED將會(huì)完全熄滅。
接線
因?yàn)槲覀冞x擇了一個(gè)很簡單的LED燈帶,所以接線工作也變得很簡單。您只需要連接三根電線即可:
● 將LED燈帶上的5V電線連接到Arduino上的5V(僅有幾個(gè)LED)或外部電源(有許多LED)。
● 將LED燈帶上的GND連接到Arduino上的GND。
● 將中間的電線(有時(shí)標(biāo)有DIN)連接到Arduino上的5V。
完成三根電線的連接后,為您的Arduino(和您的LED燈帶,如果您使用了單獨(dú)的電源的話)供電,LED燈將會(huì)被打開。嘗試調(diào)整代碼來更改顏色或編寫更復(fù)雜的動(dòng)態(tài)模式。FastLED庫還附帶一些預(yù)制草圖,您可以參考它們對(duì)更多內(nèi)容進(jìn)行探索。
DevicePlus 編輯團(tuán)隊(duì)
設(shè)備升級(jí)版適用于所有熱愛電子和機(jī)電一體化的人。
審核編輯黃宇
評(píng)論