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