當(dāng)太陽落山時,您的房子會開始變暗,您可能需要打開幾盞燈才能看清。那么,如果這些燈光可以自動打開不是更方便嗎?使用光敏電阻傳感器和Arduino,您就可以實(shí)現(xiàn)根據(jù)周圍的環(huán)境光線變化對照明燈、百葉窗或者其他任何物件進(jìn)行控制了。
光敏電阻的工作原理
在本項(xiàng)目中,我們的重點(diǎn)在于介紹光敏電阻以及如何將它們整合到您的項(xiàng)目中。光敏電阻是一種電阻器,它會根據(jù)照射的光亮來改變其電阻值。典型的電阻器以恒定的電阻值來阻止電子在電路中的流通,而光敏電阻會在受到更多的光線照射時允許更高的電壓通過電路。反而言之,當(dāng)受到較少的光線照射時,其電阻值會增加。
可以通過Arduino的模擬引腳讀取其電阻值,讀數(shù)范圍在0到1023之間。有了這些信息,您可以使您的項(xiàng)目對明亮的日光、黃昏或沒有光亮的夜晚作出不同的響應(yīng),比如在外面很亮的時候打開百葉窗,或者在天黑的時候打開照明燈。
光敏電阻體積小,價格便宜,而且通常在入門套件和其他傳感器套件里都包含該組件。如果您買過電子套件,可能會發(fā)現(xiàn)其中就有一兩個光敏電阻。為了演示它們是如何工作的,我們將控制兩個LED,當(dāng)有光線時其中一個亮起,沒有光線時另外一個亮起。
所需組件
在本項(xiàng)目中,不需要很多標(biāo)準(zhǔn)電子套件中以外的東西。但是,如果您想要使用光敏電阻控制大型項(xiàng)目則需要注意準(zhǔn)備一些特殊組件。例如,如果您想控制百葉窗,就需要準(zhǔn)備一些伺服,如果您想要控制一盞燈,那么需要使用一個繼電器?,F(xiàn)在,我們將僅介紹如何使用該傳感器。
需要一個Arduino Uno 、Arduino IDE 、兩個LED功能完好,具有不同顏色、光敏電阻以及一個220歐姆電阻。
進(jìn)一步降低通過光敏電阻的阻值,將其降低到更有效的水平
兩個100 歐姆 電阻
防止燒壞LED
如果您沒有一根躺在某個角落里的USB數(shù)據(jù)線,還需要購買USB數(shù)據(jù)線。
在本項(xiàng)目的原型構(gòu)建中使用面包板也會很有幫助。同樣,所有這些材料通常都可以在任何入門電子套件中找到,因此請事先查看您是否已經(jīng)具備這些組件。
代碼
在本項(xiàng)目中,我們將使用Arduino上的一個引腳讀取光敏電阻阻值,并使用兩個引腳來控制兩個獨(dú)立的LED。當(dāng)光敏電阻檢測到高于某個閾值的光線強(qiáng)度時,其中一個LED將會亮起。當(dāng)光線強(qiáng)度低于該閾值時,另一個LED將會亮起。實(shí)現(xiàn)以上功能的全部代碼如下所示:
int redLED = 7;
int blueLED = 8;
int lightValue = 0;
void setup() {
pinMode(redLED, OUTPUT);
pinMode(blueLED,OUTPUT);
Serial.begin(9600);
}
void loop(){
lightValue = analogRead(photoresistorPIN);
Serial.println(“Light value: “);
Serial.println(lightValue);
if(lightValue < 50){
digitalWrite(redLED, HIGH);
}
else{
digitalWrite(blueLED, HIGH);
}
delay(200);
digitalWrite(redLED, LOW);
digitalWrite(blueLED, LOW);
}
這段代碼中有幾個部分需要解釋,我們從要設(shè)置的變量開始。
int redLED = 7;
int blueLED = 8;
int photoresistorPIN = A0;
int lightValue = 0;
在這里,我們將紅色LED分配給引腳7,藍(lán)色LED分配給引腳8。這些可以分配給Arduino上的任何數(shù)字引腳。接下來,我們將光敏電阻分配給A0。該引腳必須分配給六個模擬引腳之一,因?yàn)樗枰x取來自光敏電阻的模擬值。
最后,我們將創(chuàng)建一個名為lightValue的變量來存儲光敏電阻返回的值。
void setup() {
pinMode(redLED, OUTPUT);
pinMode(blueLED,OUTPUT);
Serial.begin(9600);
}
在setup()部分中,前兩行用于將紅色和藍(lán)色LED 引腳分配為輸出引腳。
我們還將初始化串行監(jiān)視器,這樣就可以查看光敏電阻的返回值。這在設(shè)定用于切換兩個LED開關(guān)的閾值時會很有用。
根據(jù)設(shè)置項(xiàng)目時所在房間的環(huán)境光強(qiáng)度,您可以基于自己的需要對閾值進(jìn)行調(diào)整。
void loop(){
lightValue = analogRead(photoresistorPIN);
Serial.println(“Light value: “);
Serial.println(lightValue);
if(lightValue < 50){
digitalWrite(redLED, HIGH);
}
else{
digitalWrite(blueLED, HIGH);
}
delay(200);
digitalWrite(redLED, LOW);
digitalWrite(blueLED, LOW);
}
在loop()部分中,第一行用于讀取光敏電阻的模擬值,并將其分配給lightValue變量。然后該值將會被立即打印到串行監(jiān)視器上。
接下來,如果光傳感器讀取的值低于50,循環(huán)代碼中的一部分代碼將會被啟用,紅色LED燈將會亮起,如果值高于50,則藍(lán)色LED將會亮起。如果50對您的環(huán)境光線來說太低,紅燈一直亮起,那么請使用串行監(jiān)視器為您的項(xiàng)目設(shè)定一個合適的值。
接線
現(xiàn)在您已經(jīng)理解了代碼,接下來請將其上傳到您的Arduino。然后,我們將開始設(shè)置接線—幸運(yùn)的是,這非常簡單,并且很容易將其添加到您的其他項(xiàng)目中。要完成接線設(shè)置,請按照下列步驟操作:
● 將藍(lán)色LED的長端連接到Arduino的引腳8。將LED的短端連接到一個100歐姆的電阻上,然后將該電阻的另一端連接到GND。
● 對紅色LED重復(fù)上一步驟,LED連接到Arduino上的引腳7。
● 將光敏電阻的一端連接到5V引腳,另一端連接到引腳A0。此外,在光敏電阻的第二個端口連接一個220歐姆的電阻,并將該電阻連接到GND。
● 如果需要,將之前的電路與面包板上的正負(fù)軌連接。
完成所有接線后,您可以將Arduino插入電源以啟動項(xiàng)目。在光敏電阻上揮動您的手,將會從藍(lán)色LED亮起切換到紅色LED亮起。如果只有其中一個LED保持亮起的狀態(tài),請嘗試調(diào)整草圖中if()語句中的值,直到傳感器按照預(yù)期方式進(jìn)行工作。當(dāng)您對結(jié)果感到滿意的時候,項(xiàng)目就完成了!
-
led
+關(guān)注
關(guān)注
242文章
23277瀏覽量
660876 -
光敏電阻
+關(guān)注
關(guān)注
4文章
293瀏覽量
48988 -
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
187077
發(fā)布評論請先 登錄
相關(guān)推薦
評論