DiFi第十一課光敏電阻
光敏電阻:利用光電導效應的一種特殊的電阻,簡稱光電阻,又名光導管。它的電阻和光線的強弱有直接關係。光強度增加,則電阻減小;光強度減小,則電阻增大。(摘自維基百科)
一、讀取光敏電阻(類比腳A0)的資料:
類比腳A0用來接受類比電壓輸入,接收後顯示的值為1~1024,輸入端GND(低電位)時值為1,輸入端3.3V(高電位)時值為1024
拿一條麵包線,一端接類比腳A0當作訊號輸入,一端接板子上寫[PhotoR](上圖標j)的插孔,上圖標示[J]就是 [光敏電阻 ]
再拿一條麵包線,一端接數位腳D7,一端接板子上寫[LEDG]的插孔(上圖標d),由數位腳位D7來控制輸出高電位(3.3V)或低電位(0V),燈滅或亮。
光敏電阻接收到不同的光強度時,電阻值改變,電壓也會改變,類比腳A0也就讀到不同的電壓資料。光亮(光強度最高)時為高電位顯示1024,遮光(光強度減弱)時,光敏電阻的電阻值減少,數值變小。
因為DiFi板子設計關係,建議剪一條厚紙板當作遮光物,方便操作。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
使用[說讀取類比腳位A0]指令,理論上螢幕上就會出現1到1024的數值
實際上因為亮度遮光的關係,我的螢幕上只出現三百多到1024的數值。
程式下載: 讀光敏電阻.sb2
二、變大變小隨我變
使用光敏電阻調整腳色(人物、圖片)大小。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
將大小設定為類比腳位A0得到的值。
理論上因為讀到的值為1到1024,所以轉換時要將得到的值除以10.24,才是正確的百分比。
實際上因為亮度關係,您可以自行調整比例。
程式下載:讀光敏變大小.sb2
三、光敏電阻調整LED亮度
光強度不同,LED亮度也跟著改變。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
[腳位7模式設為OUTPUT]:設定腳位7模式為輸出。
重複執行,讀取A0的值,改變亮度。
設定腳位7類比輸出(讓LED亮綠色),輸出的模擬電壓大小由A0來決定。
類比腳位A0讀到的值為1到1024,腳位7的類比輸出值為0到255,因此需要做公式轉換。
增加一個[說讀取類比腳位(A)0]積木,可以顯示公式轉換結果,驗證公式是否正確。
用厚紙板在光敏電阻上揮動,改變光敏電阻接收到的光強度,就會改變電阻值,讓LED亮度改變。
程式下載:調整LED亮度.sb2
四、自動控制路燈
用LED模擬,晚上(天黑)路燈自動打開,天亮路燈自動熄滅
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
[腳位7模式設為OUTPUT]:設定腳位7模式為輸出。
增加一個說的指令,來看看光強度和光敏電阻的接收情形。
用運算指令 [ < ] 來判斷天空多暗才要啟動路燈亮起來。
當光強度減弱,光敏電阻的電阻值減少,類比腳位A0讀到的值減少到判斷標準,就讓路燈(LED)亮起來。
測試時,用厚紙板靠近光敏電阻,改變光敏電阻接收到的光強度(天黑了),達到標準時路燈(LED)就亮起來。
程式下載:自動控制路燈.sb2
五、打擊樂
當遮蔽光敏電阻時,電腦就發出一個聲音,一群人輪流遮蔽光敏電阻,讓電腦完成彈奏鼓聲。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
[腳位7模式設為OUTPUT]:設定腳位7模式為輸出。
一開始腳位7數位輸出1,讓LED熄滅。(共陽極LED)
重複執行,讀取A0的值,做動作。
用運算指令 [ < ] 來判斷是否有人動作。
當有用厚紙板遮蔽光敏電阻時,A0的值小於900,就彈奏鼓聲,並讓LED亮綠色。
可以選擇發出不同的[鼓聲]
程式下載:打擊樂.sb2
延伸:
各組選擇不同的鼓聲,配合節奏,大家一起彈奏(遮光),就可以完成打擊樂了。
六、演奏歌曲
當遮蔽光敏電阻時,電腦就發出一個聲音,一群人輪流遮蔽光敏電阻,讓電腦完成歌曲演奏。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
[等待1秒]:預設INPUT是低電位,但是DiFi板子上的光敏電阻照到光應該是高電位,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
先設定樂器種類,上圖的1是 鋼琴。
然後將歌曲音符編排好,加上偵測動作的[等待…]指令
用運算指令 [ < ] 來判斷是否有人動作。
當有厚紙板遮蔽光敏電阻時,A0的值小於900,就彈奏一個音符。(實際值請自行調整)
這樣就可以依序將歌播完。
因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。
如果想要變換樂器,只要更改[樂器種類]就可以了。
程式下載:演奏歌曲.sb2
延伸:
1.學生自由創作不同的音樂
2.增加一條麵包線連接數位腳位8和蜂鳴器,使用蜂鳴器來演奏樂曲。
七、應用:
製作方法:
http://mingshiuan.blogspot.com/2012/12/arduino.html
PS:他們用[紅外線感應器]當感應器,用[光敏電阻]應該也可以有效果。
———————————-
相關連結:
DiFi 課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/100870/660551
WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433