//Logo Image
作者:張凱維(2011-12-01);推薦:徐業良(2011-12-01)
附註:本文為元智大學機械系大三機械設計課程Arduino使用教材。

使用光敏電阻搭配Arduino UNO發送控制訊號

「使用紅外線遙控器搭配Arduino UNO發送控制訊號」一文中,討論了如何使用紅外線遙控器搭配Arduino UNO控制自動門電路馬達正反轉。本文將紅外線遙控器換成光敏電阻,說明如何使用光敏電阻搭配Arduino UNO發送控制訊號,讓Arduino感測外在環境的光線變化,控制自動門電路馬達正反轉,使用者亦可使用極限開關、磁簧開關等其他感測器。

1.    軟硬體設定

本文使用的器材如下:

(1)  Arduino UNO開發板,USB傳輸線,以及Arduino IDE軟體開發環境。

(2)  兩組光敏電阻(Light Dependent Resistor, LDR)以及1K電阻。光敏電阻及1K電阻的電路圖及接法如圖12所示。

(3)  手電筒。

(4)  LDRcode(請至portal教材下載區下載)。

1. 兩組光敏電阻以及1K電阻的電路圖

2. 光敏電阻接法

首先利用CheckLDR這支程式確認自行購買的光敏電阻的特性,光線照射後電阻是變小還是變大。在Arduino開發環境中,打開LDRRcode資料夾裡的CheckLDR這支程式(如圖3),上傳至Arduino板上,打開Serial Monitor來讀取光敏電阻值,如圖4所示,以手電筒對著光敏電阻照光,檢查照光後電阻值增大還是減小。

3. CheckLDR Code

4. Serial Monitor讀取光敏電阻值

2.    設定Arduino輸出腳位控制馬達正反轉

Arduino開發環境中,打開LDRcode資料夾裡的LDRcontrol這支程式,可看到程式碼中已預先設定4~1310支數位輸出腳位(DO, Digital Output),可供使用者使用(如圖5)。

使用者可在void loop()裡找到預設的3if迴圈,第二個迴圈為LDR1被照光時所作的輸出控制,if (readLDR1 >= 600)則改變數位輸出腳位狀態;第三個迴圈為LDR2被照光時所作的輸出控制,if (readLDR1 >= 600)則改變數位輸出腳位狀態(如圖6所示)。使用者可在if迴圈中設定要使哪些腳位(A~J)作輸出控制,只需修改腳位指令,由LOW改為HIGH即可,本應用實例中僅使用Digital 4Digital5兩個數位輸出腳位作控制。

編寫完畢後按下Verify 按鈕編譯程式,檢查程式有無錯誤,最後按下Upload *按鈕,將程式上傳至Arduino。這時已準備就緒,可以繼續修改「使用紅外線遙控器搭配Arduino UNO發送控制訊號」一文中的自動門電路範例,改以光敏電阻作控制。

5. 設定Digital Pin

6. 設定腳位輸出

7為修改自動門電路範例的初始狀態電路,將DIGITAL 45腳位各接上五腳繼電器與八腳繼電器的線圈接腳,當使用者以手電筒照光將DIGITAL 4腳位轉成HIGH,使五腳繼電器保持通電,此時五腳繼電器開始動作將接點切換,八腳繼電器不運作,直流馬達開始正轉。而當使用者以手電筒照光將DIGITAL 5腳位轉成HIGH,使八腳繼電器保持通電,此時八腳繼電器開始動作將接點切換,五腳繼電器不運作,則直流馬達開始逆轉。當使用者放開遙控器按鍵,馬達則靜止不動。

7. 修改自動門電路範例

參考資料

[1]  Arduino 官方網站,http://arduino.cc/

[2]  Arduino.TW樂園,http://www.arduino.tw/index.php

[3]  Cooper Maahttp://coopermaa2nd.blogspot.com/

[4]  最簡單的互動設計Arduino一試就上手,孫駿榮/吳明展/盧聰勇著。