樓宇中的感應(yīng)燈,在白天的時(shí)候不論是否有聲音都不會(huì)開(kāi)啟;街道的路燈在黑天的時(shí)候會(huì)自動(dòng)開(kāi)啟,這些是由于電路中有感光元件在發(fā)揮作用,這里我們就做一個(gè)光敏電阻和Arduino的互動(dòng)實(shí)驗(yàn)。
準(zhǔn)備實(shí)驗(yàn)需要用到的硬件,如圖所示:
按照下圖中的電路,進(jìn)行實(shí)驗(yàn)硬件的連接
將下列程序復(fù)制到Arduino IDE中,如下圖所示:
int photoresistancePin = 5; //定義變量photoresistance=5,為電壓讀取端口。
int ledPin = 11; //設(shè)置led數(shù)字IO腳
int val = 0; //定義變量i
void setup() {
pinMode(ledPin, OUTPUT); //設(shè)置ledPin腳模式,為輸出
}
void loop() {
val = analogRead(photoresistancePin); //從傳感器讀取值
if(val《=512)
{
/*512=2.5V,想讓傳感器敏感一些的時(shí)候,把數(shù)值調(diào)高,
想讓傳感器遲鈍的時(shí)候把數(shù)值調(diào)低。*/
digitalWrite(ledPin, LOW);//當(dāng)光照強(qiáng)度過(guò)強(qiáng)時(shí)led滅。
}
else
{
digitalWrite(ledPin, HIGH); //當(dāng)光照強(qiáng)度過(guò)低時(shí)led亮。
}
}
使用USB數(shù)據(jù)線(xiàn)連接Arduino UNO 控制器和電腦,選擇正確的板型(Arduino UNO 和)、端口,點(diǎn)擊上傳,無(wú)誤情況下軟件會(huì)顯示如下結(jié)果。
硬件回顧:光敏電阻
光敏電阻器是利用半導(dǎo)體的光電效應(yīng)制成的一種電阻值隨入射光的強(qiáng)弱而改變的電阻器;入射光強(qiáng),電阻減小,入射光弱,電阻增大。光敏電阻器一般用于光的測(cè)量、光的控制和光電轉(zhuǎn)換(將光的變化轉(zhuǎn)換為電的變化)。常用的光敏電阻器硫化鎘光敏電阻器,它是由半導(dǎo)體材料制成的。光敏電阻器的阻值隨入射光線(xiàn)(可見(jiàn)光)的強(qiáng)弱變化而變化,在黑暗條件下,它的阻值(暗阻)可達(dá)1~10M 歐,在強(qiáng)光條件(100LX)下,它阻值(亮阻)僅有幾百至數(shù)千歐姆。光敏電阻器對(duì)光的敏感性(即光譜特性)與人眼對(duì)可見(jiàn)光(0.4~0.76)μm 的響應(yīng)很接近,只要人眼可感受的光,都會(huì)引起它的阻值變化。設(shè)計(jì)光控電路時(shí),都用白熾燈泡(小電珠)光線(xiàn)或自然光線(xiàn)作控制光源,使設(shè)計(jì)大為簡(jiǎn)化。
光敏電阻外形如圖所示:
實(shí)驗(yàn)效果:在白天的情況下,當(dāng)遮擋光敏電阻時(shí),LED點(diǎn)亮,不遮擋光敏電阻時(shí),LED熄滅,如下圖所示,光敏電阻沒(méi)有被蓋住的時(shí)候LED熄滅,當(dāng)光敏電阻被遮蓋住,LED會(huì)點(diǎn)亮。(其中可以改變 if(val《=512) 語(yǔ)句中的判斷值來(lái)改變光敏電阻的靈敏度)
擴(kuò)展實(shí)驗(yàn),使用光敏電阻同樣可以達(dá)到類(lèi)似電位計(jì)調(diào)節(jié)LED亮度的效果,如實(shí)驗(yàn)電位計(jì)控制LED亮度,只需要將代碼修改如下為所示代碼,并正確上傳執(zhí)行即可,上傳無(wú)誤,編譯器如下圖所示。
#define LED 11 //定義LED引腳為10
int val = 0; //儲(chǔ)存?zhèn)鞲衅鞯淖兞繑?shù)值
void setup(){
pinMode(LED, OUTPUT); //設(shè)定LED引腳為輸出狀態(tài)
}
void loop(){
val = analogRead(5); //讀取傳感器的模擬值并儲(chǔ)存
analogWrite(LED,val/4); //設(shè)置LED亮度(PWM輸出范圍0-255)
delay(10); //延時(shí)10毫秒
}
代碼說(shuō)明:程序中,val = analogRead(5);這個(gè)語(yǔ)句是讀取模擬端口A5的值,不是數(shù)字端口5,模擬接口默認(rèn)為輸入端口,不用再寫(xiě)語(yǔ)句。analogWrite(LED,val/4); 這個(gè)語(yǔ)句是設(shè)置LED亮度,val/4是因?yàn)関al讀取出來(lái)的值范圍是0~1023,而上面介紹過(guò)PWM范圍是0~255,所以要將val的值除以4。
擴(kuò)展實(shí)驗(yàn)效果:有遮擋時(shí),LED亮度變亮,無(wú)遮擋時(shí),LED亮度變暗,光線(xiàn)強(qiáng)烈時(shí),LED會(huì)熄滅(有可能只是肉眼看不到LED的亮度了)!下圖所示,為光敏電阻被遮擋,LED顯示最高亮度。
評(píng)論