新DiFi第11課光敏電阻
光敏電阻:利用光電導效應的一種特殊的電阻,簡稱光電阻,又名光導管。它的電阻和光線的強弱有直接關係。光強度增加,則電阻減小;光強度減小,則電阻增大。(摘自維基百科) (註)
一、讀取光敏電阻(類比腳A0)的資料:
類比腳A0用來接受類比電壓輸入,接收後顯示的值為1~1024,輸入端GND(低電位)時值為1,輸入端3.3V(高電位)時值為1024
使用Jump直接將A0和[PhotoR](光敏電阻)接上。
光敏電阻接收到不同的光強度時,電阻值改變,電壓也會改變,類比腳A0也就讀到不同的電壓資料。光亮(光強度最高)時為高電位顯示1024,遮光(光強度減弱)時,光敏電阻的電阻值減少,數值變小。
因為新DiFi板子設計關係,建議剪一條厚紙板當作遮光物,方便操作。
預設INPUT是低電位,但是有光亮時應該是高電位1024,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
使用[說讀取類比腳位A0]指令,理論上螢幕上就會出現1到1024的數值
實際上因為亮度遮光的關係,我的螢幕上只出現六十幾到1024的數值。
程式下載: 讀光敏電阻.sb2
二、變大變小隨我變
使用光敏電阻調整腳色(人物、圖片)大小。
預設INPUT是低電位,但是有光亮時應該是高電位1024,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
將大小設定為類比腳位A0得到的值。
理論上因為讀到的值為1到1024,所以轉換時要將得到的值除以10.24,才是正確的百分比。
實際上因為亮度關係,您可以自行調整比例。
程式下載:讀光敏變大小.sb2
三、光敏電阻調整LED亮度
光強度不同,LED亮度也跟著改變。
使用Jump直接將A0和[PhotoR](光敏電阻)、D7和LEDG兩兩接上。
由數位腳位D7來控制類比輸出電壓,控制LED燈的亮度。
預設INPUT是低電位,但是有光亮時應該是高電位1024,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
重複執行,讀取A0的值,改變亮度。
設定腳位7類比輸出(讓LED亮綠色),輸出的類比電壓大小由A0來決定。
類比腳位A0讀到的值為1到1024,腳位7的類比輸出值為0到255,因此需要做公式轉換。
增加一個[說讀取類比腳位(A)0]積木,可以顯示公式轉換結果,驗證公式是否正確。
用厚紙板在光敏電阻上揮動,改變光敏電阻接收到的光強度,就會改變電阻值,讓LED亮度改變。
程式下載:調整LED亮度.sb2
四、自動控制路燈
用LED模擬,晚上(天黑)路燈自動打開,天亮路燈自動熄滅。
預設INPUT是低電位,但是有光亮時應該是高電位1024,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
增加一個說的指令,來看看光強度和光敏電阻的接收情形。
用運算指令 [ < ] 來判斷天空多暗才要啟動路燈亮起來。
當光強度減弱,光敏電阻的電阻值減少,類比腳位A0讀到的值減少到判斷標準,就讓路燈(LED)亮起來。
測試時,用厚紙板靠近光敏電阻,改變光敏電阻接收到的光強度(天黑了),達到標準時路燈(LED)就亮起來。
程式下載:自動控制路燈.sb2
五、打擊樂
當遮蔽光敏電阻時,電腦就發出一個聲音,一群人輪流遮蔽光敏電阻,讓電腦完成彈奏鼓聲。
預設INPUT是低電位,但是有光亮時應該是高電位1024,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
重複執行,讀取A0的值,做動作。
用運算指令 [ < ] 來判斷是否有人動作。
當有用厚紙板遮蔽光敏電阻時,A0的值小於900,就彈奏鼓聲,並讓LED亮綠色。
可以選擇發出不同的[鼓聲]
程式下載:打擊樂.sb2
延伸:
各組選擇不同的鼓聲,配合節奏,大家一起彈奏(遮光),就可以完成打擊樂了。
六、演奏歌曲
當遮蔽光敏電阻時,電腦就發出一個聲音,一群人輪流遮蔽光敏電阻,讓電腦完成歌曲演奏。
預設INPUT是低電位,但是有光亮時應該是高電位1024,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
[等待1秒]:預設INPUT是低電位,但是DiFi板子上的光敏電阻照到光應該是高電位,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
先設定樂器種類,上圖的1是 鋼琴。
然後將歌曲音符編排好,加上偵測動作的[等待…]指令
用運算指令 [ < ] 來判斷是否有人動作。
當有厚紙板遮蔽光敏電阻時,A0的值小於900,就彈奏一個音符。(實際值請自行調整)
這樣就可以依序將歌播完。
因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。
如果想要變換樂器,只要更改[樂器種類]就可以了。
程式下載:演奏歌曲.sb2
延伸:
1.學生自由創作不同的音樂
2.增加JUMP連接數位腳位8和蜂鳴器,改成使用蜂鳴器來演奏樂曲。
七、飛天小女警遊戲
光敏電阻接收到不同的光強度時,電阻值改變,電壓也會改變,類比腳A0也就讀到不同的電壓資料,當手靠近或離開光敏電阻時會遮住光敏電阻的光,改變類比腳A0的值,運用這個特性偵測距離使飛天小女警移動位置。
當手靠近感測器,飛天小女警往下移動,當手遠離感測器,飛天小女警往上移動。
主要有三個人物角色。
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
[等待1秒]:預設INPUT是低電位,但是DiFi板子上的光敏電阻照到光應該是高電位,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
先將角色移到固定位置。
重複執行,角色移到X固定的座標,Y座標隨著光敏電阻讀到的值做改變(註),看起來就像在上下飛行。
切換造型,讓角色有變化。
其他兩個角色也是同樣的方式。
再搭配建築物、樹、雲等背景的移動和造型變化,看起來就像在飛行一樣了。
註:Y座標值會因使用環境而改變,請視環境亮度自行調整。
檔案下載:飛天小女警(光敏電阻).sb2
延伸:
1.加上計分、計時功能。
2.加上會移動的幸運星星,碰到幸運星星就加分。
3.碰到障礙物扣分
八、飛天小貓遊戲
類似上面飛天小女警遊戲,主角改成飛天小貓,加上會移動的幸運星星及子彈,碰到幸運星星就加分,碰到子彈就生命值減一,生命值零時就結束遊戲。
光敏電阻接收到不同的光強度時,電阻值改變,電壓也會改變,類比腳A0也就讀到不同的電壓資料,當手靠近或離開光敏電阻時會遮住光敏電阻的光,改變類比腳A0的值,運用這個特性偵測距離使飛天小貓移動位置。
當手靠近感測器,飛天小貓往下移動,當手遠離感測器,飛天小貓往上移動。
1.舞台
設定一開始的[得分]及[生命值]變數,播放背景音樂,檢查[生命值]為0就結束遊戲。
2.飛天小貓
[腳位A0模式設為INPUT]:設定類比腳位A0模式為輸入。
[等待1秒]:預設INPUT是低電位,但是DiFi板子上的光敏電阻照到光應該是高電位,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)。
先將角色移到固定位置。
重複執行,角色移到X固定的座標,Y座標隨著光敏電阻讀到的值做改變(註),看起來就像在上下飛行。
再搭配建築物、樹、雲等背景的移動和造型變化,看起來就像在飛行一樣了。
註:Y座標值會因使用環境而改變,請視環境亮度自行調整。
3.建築物
4.樹
5.雲
6.子彈
7.無敵星星
檔案下載:飛天小貓.sb2
九、應用:
製作方法:
http://mingshiuan.blogspot.com/2012/12/arduino.html
PS:他們用[紅外線感應器]當感應器,用[光敏電阻]應該也可以有效果。
—————————————
http://www.token.com.tw/big5/pdf/resistor/b5_cds_resistor_pgm.pdf
———————————-
相關連結:
新DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/104089/678192
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