這篇文章來源于DevicePlus英語網(wǎng)站的翻譯稿。
調(diào)光器只是另一種類型的電位器。我們已經(jīng)探索過如何使用一個調(diào)光器來控制伺服,本指南將展示如何使用它來控制LED。由于LED(像大多數(shù)燈一樣)在通過它們的功率過大時會被燒壞,本文將能夠幫助您了解如何校準電位計以限制 Arduino的電壓輸出。
LED在大多數(shù)項目中用于測試電路或指示某些部件是否正常工作。但是,在本項目中,我們想直接控制LED的亮度。我們將通過兩種方式來展示如何使用電位計直接控制通過LED的電壓,以及如何使用Arduino的編程來對其進行間接控制。
首先,我們需要了解LED的工作原理。當電流通過LED時,它會發(fā)光。通過LED的電流量將決定它的亮度,但電流過大會燒壞LED。這就是為什么大多數(shù)使用LED的項目需要一個220歐姆的電阻來阻礙電流流通。
電位計也是一種電阻可變的電阻器。表盤轉(zhuǎn)的幅度越大,它給電路增加的電阻就越大。在接線環(huán)節(jié)的第一部分,我們將展示如何在不使用Arduino的情況下直接降低LED的亮度。然后,我們將調(diào)光器添加到電路中,以通過草圖對亮度進行多的控制。
所需組件
我們在這里所進行的項目的兩個版本都很簡單,所以您可能已經(jīng)具有所需的大部分組件了,尤其是如果您曾經(jīng)購買過基本的電子設備套件的話。無論哪種版本,您都需要以下組件以及電源:
Arduino Uno | |
Arduino IDE | |
一個面包板 | |
一個220 歐姆 電阻 | |
一個電位計 任何電位計都可以,但是如果您有滑塊電位計可以使用該電位計,因為在將燈光調(diào)暗時該電位計比表盤式更加自然 |
Arduino和IDE僅用于該電路的第二種版本。但是,我們將使用它為第一個版本的面包板供電。您還可以使用類似這樣的電源模塊來添加與 Arduino供電效果相同的電源。請注意,如果您使用其他電源(例如9V電池),第一個電路可能無法正常工作,并且可能會燒壞您的LED。
接線
我們將要使用的第一個接線模型完全不需要Arduino,所以我們首先對第一個模型進行接線。使用該電路,您將能夠看到電位計是如何直接影響其電阻的。首先,使用面板板將以下組件接線:
● 首先,將電源線和地線分別連接到面包板側(cè)面的導軌和Arduino上的5V和GND引腳。
● 將電源軌連接到電位計的一側(cè)引腳。
● 將電位計上的中心引腳連接到LED的長引腳。
● 將LED的短引腳連接到220歐姆電阻。
● 將電阻的另一端連接到接地軌。
為您的Arduino或電源模塊供電,LED將亮起?,F(xiàn)在,您可以滑動電位計,電路的電阻將發(fā)生變化,從而調(diào)整流經(jīng)LED的電流,使光線變得更亮或更暗。
這樣就用一種小規(guī)模電路展示了大多數(shù)調(diào)光電路的工作原理。電路中加入220歐姆電阻,防止電流過載燒壞LED燈。連接好電阻后,電位計將會在可調(diào)范圍內(nèi)對電流進行進一步限制。
然而,直接修改電路中的電流并不是調(diào)節(jié)燈光亮度的唯一方法。為了展示另一種方案,我們將擴展電路以讀取電位計的電阻,并使用草圖為LED分配一個值(我們將在下一節(jié)解釋)。
完成第一個版本的電路后,請進行以下更改:
● 將LED的長端插入Arduino上的引腳6(而不是之前電路中電位計的中心引腳)。
● 將電位計的中心引腳連接到Arduino的引腳A0。
● 將電位計的第三個引腳連接到接地軌(第一個引腳仍然連接到電源軌)。
在該電路中,電位計的電阻不直接影響LED的亮度,而是被Arduino讀取為模擬值。然后,可以在草圖中對該值進行縮放和調(diào)整,我們將在下文中進行說明。
代碼
首先,這是您可以直接上傳到Arduino中的完整代碼。它的功能幾乎與原始電路相同,只是添加了更多的軟件控制。
int blueLED = 6;
int dimmerPIN = A0;
int dimmerValue = 0;
int ledValue = 0;
void setup() {
pinMode(dimmerPIN, INPUT);
pinMode(blueLED,OUTPUT);
Serial.begin(9600);
}
void loop(){
dimmerValue = analogRead(dimmerPIN);
ledValue = map(dimmerValue, 0, 1023, 0, 255);
analogWrite(blueLED, ledValue);
}
大部分代碼都是相當基礎的——變量聲明、分配引腳等等,但是我們需要注意loop()部分中的三行。
dimmerValue = analogRead(dimmerPIN);
ledValue = map(dimmerValue, 0, 1023, 0, 255);
analogWrite(blueLED, ledValue);
這里的第一行用于從引腳A0讀取電位計的值,該值的測量范圍為0到1023。我們可以將此值轉(zhuǎn)換為用于控制LED的引腳6的輸出。該代碼的第二行用于將電位計的值重新映射到0到255的范圍內(nèi)(PWM引腳的輸出范圍)。最后一行代碼用于將該值寫入引腳6。
但是,我們可以通過調(diào)整第二行的最后兩個數(shù)字來設置最小或最大亮度。第二個0用于設施最小亮度級別(在這種情況下將完全熄滅)。提高此級別之后,即使您將調(diào)光器調(diào)到最低,燈光也會保持您所設置的最低級別的亮度。同樣,此行中的255是設置的最高級別。如果您想降低最大亮度級別—畢竟LED可以變得非常亮—降低這個數(shù)字可以保證即使一直將亮度調(diào)高燈光也不會變得太亮。
在此特定示例中,將0到5V范圍內(nèi)的值(取決于您設置的限制)寫入LED引腳輸出,并且使用220歐姆電阻進一步限制通過LED的電流。當您處理更大、更復雜的燈光設備(如LED燈條、燈泡或任何電壓高于Arduino可以輸出的5V電壓的設備)時,請牢記這一點。
DevicePlus 編輯團隊
設備升級版適用于所有熱愛電子和機電一體化的人。
審核編輯黃宇
-
led
+關注
關注
240文章
23062瀏覽量
657061 -
調(diào)光器
+關注
關注
4文章
144瀏覽量
23310
發(fā)布評論請先 登錄
相關推薦
評論