光敏電阻(Photo-sensitive resistor)的電阻值與光線有關,照射於感光面的光線亮度增加時,電阻值會變小,亮度減少時電阻值會加大,其原理是光線照射於半導體,原本穩定的電子受到激發而成為自由電子,常見的材料為硫化鎘(Cds)或硒化鎘(CdSe),因而常用 Cds 代表光敏電阻。

亮度感應器
由於光敏電阻會因為光照而使得電阻發生改變,若對光敏電阻施以電壓,兩端的電壓就會因為光照發生的電阻值改變,使得壓降也跟著變化,我們可以利用這個特性來製作亮度感應器。

如上圖的電路設計,輸出腳位的電壓值會是 5 * R2/(R1 + R2)
,一般光敏電阻的電阻變化,大概是在 10M Ω(黑暗)到 1K Ω(置於陽光下)左右(如果直接以強光接近照射,電阻值還會更低一些),如果要精確地量測照度與電阻的關係,可以用專用照度計來量得照度與電阻之間的關係。
在這邊就簡單一點,我在目前室內合適的亮度下,量得的光敏電阻值約為 3KΩ 上下,按照上圖的話,輸出腳位的電壓值會是在 3.8 V 左右,接到 Ardunio 的類比輸入腳位,應當可以量得 800 左右的數值,你可以如下設計電路:

只要設計一個簡單的小程式,就是陽春的照度計了 … XD

當然,這邊的照度值不是公定的照度單位,只是從類比輸入腳位量得的值,僅供亮度的相對參考,試著增強或遮擋至光敏電阻的光線,你就會看到數值會有不同的變化:

如果亮度感應器的敏感度設計的好一些,搭配自走車,就可以做個簡單的循跡車了。
簡易光線追蹤器
如果會實作簡單的亮度感應器,那麼就可以用多個亮度感應器,來實作簡單的光線追蹤了,例如,可使用兩個亮度感應器,偵測左右兩邊的亮度差異,如果兩邊亮度差異在一定範圍內,例如 50 以內,兩邊 LED 就同時亮,表示亮度差不多,若左邊比右邊的亮度高 50 以上,就亮左邊,反之就是亮右邊的 LED,你可以如下設計電路:

程式的撰寫則可以如下:

因為我手邊僅有的兩個光敏電阻規格不同,同樣的光源下,測出來的值不太一樣,左邊那顆比右邊那顆約少了 150 左右,因此,在程式中我做了些修正 … XD
這邊是使用 LED 來反映光線的強弱,如果你手邊有馬達的話,想得出來可以做什呢?如果加上雷射筆,能不能做出光線豎琴呢?