光敏電阻是非常有趣的一種零件,它是一種依照光度而改變自己電阻值的元件,也因為如此,許多和光與亮度有關的實習,都需要使用光敏電阻。在這一單元中,我們就來做做一些簡單的電路,來觀察光敏電阻的特性,也會做一個由光線的明亮度來決定是否點亮LED的小程式。

同樣的,也有專門為Arduino設計的模組,如下所示:

它已經幫我們設計好電路,我們要做的只是把它和Arduino連接在一起就好了。不過,在這一單元單,我們將使用的是單純的光敏電阻來做實驗,它的價格便多了,一個不到台幣10元。把它插到麵包板上看起來像是下面這個樣子:

我們不在這邊探究它的特性,同學們只要知道只要亮度不一樣,它的電阻值就會不一樣,而且光線愈強,它的電阻值就會愈小。還有,它是被動元件,要能夠偵側到它上面的變化,和可變電阻一樣,也是需要把它連接到電源上。不過,有一點要特別注意的是,當它的電阻愈小的時候,流過它的電流就會愈大,有可能會因為電阻值太小而導致板子燒毀,因此在使用之前,也是需要加上限流電阻,而我們是從限流電阻和光敏電阻的連接點處接出導向,連向Arduino上的輸入連接端,在此以A2為例,以下是我們的電路圖:

如上圖所示,5V接到光敏電阻,然後光敏電阻的另外一端連接到電阻以及A2輸入端,然後電阻的另外一頭則是連接到GND,實際連接電路如下所示:

接好電路之後,就可以使用analogRead(A2)讀取到在光敏電阻上的輸入值。但是得到輸入值之後,我們要如何得知到底是多少呢?Arduino IED有一個序列埠監控視窗可以讓我們觀察程式中變數的內容,先來看程式的部份:

沒錯,程式就這麼簡單。這時候可以開啟在Arduino上工具選單中的序列埠監控視窗,然後你使用手電筒(手機的就可以了啦)或是在光敏電阻上用手遮一下光線,就可以看到數值的變化。如果看到亂碼的話,別忘了右下角的baud數字要改為9600,同時也要確定選用的是沒有行結尾的選項。

可以看到的是,數值的變化量和你使用的限流電阻值有關,此外,我們這種接法會在光敏電阻的電阻值愈小時,觀察到的數值愈大,同學們可以想想看是為什麼喔。接下來,同學們要做的是,觀察數值的變化,然後找出一個臨界值,用來當做是待會兒要點亮接在第13支接腳的LED之依據。修改後的程式如下所示:

在這裡使用了另外一個C程式語言的流程控制語法if/else,在if後面一定要加上小括號,在小括號中指定了要檢查的條件,如果成立就執行以下第一個大括號之間的內容,如果不成立的話,就執行else底下大括號的內容。

所以,如上述的程式所設計的內容,如果從A2拿到的值小於10,就點亮第13針腳的LED,否則就把它熄滅,然後等待0.5秒之後再檢查一次。同學們可以想像,如果第13支針腳所在的位置驅動的是一盞路燈的話,那就是一個可以依天色而自動明滅的電燈了。以下是執行的示範影片:

 

 

(918)