About虛擬&實際

@分享虛擬與實際的世界中所遊玩的心得紀錄,從物理化學到生命科學、從人文藝術到現代科技、從虛擬介面到實際生命體。享受的只是一種學習與體驗。若文章內容有誤,歡迎提出以供修改,對文章的回饋,歡迎寄信給我!一起分享,互相學習成長的環境。
@個人簡介在『關於韃靼』
@我是韃靼~我的信箱:chenyuquan at gmail dot com

2013年1月5日 星期六

Arduino_Project04_Color Mixing Lamp

前言:
2013年開始了五天,終於又有空閒可以進行projects囉!今天所做的是Project04-Color Mixing Lamp,這是個非常有趣的實驗,藉由控制給予感測器不同顏色的光,就給予LED相對應的發光顏色。

硬體:

光敏電阻_Photoresistor
三色LED_LED
電阻_220 and 10K ohm

電路實際圖如下:
圖中紅綠藍(RGB)是顏色濾片

Code:
在此Project新學到的指令有:
\t : 等同於keyboard上的tab按鍵
analogWrite : (pin, value), 
    value-0 (always off)~255(always on)

其中有將analogRead讀取到的數值除以”4“以縮減到可以輸入analogWrite裡面。(這樣算起來表示analogWrite是8 bit)。而根據手冊有談到是使用PWM(Pulse Width Modulation)來輸出Duty cycle。而有關Duty clcle則是利用數位輸出”模擬“類比輸出電壓的方式而達成,但是另一款版本(DUE)則已經搭配了類比輸出電壓的位置。Duty cycle可以參考Arduino.cc的介紹,描述的簡潔有力。網址


原本我以為會按什麼就遮掉什麼顏色,不過實際上好像不太是(或者還沒有加上書中所介紹的乒乓球嗎?)。用手遮住藍色,LED燈會變得更藍;遮住紅色會變得更紅;但是綠色的變化比較不明顯!而用小型手電筒照光的話,照藍色感測器會使得LED變得更紅,類似遮住的反應。整理以上的描述如下:

光敏電阻____LED
遮住藍色____變更藍色
照光藍色區域__變紅色

另外下面的影片是實際操作圖:


而身為一個不專業的玩家,當然會有三用電表這種玩意,就測量了下當遮住光敏電阻時,相對應PWM輸出的電壓變化,整理如下:


遮住顏色_原本電壓_遮住電壓

綠色___2.55V__1.33V
藍色___2.89V__1.07V
紅色___3.54V__2.40V

從以上資訊來推測看看,當遮住藍色而輸出PWM電壓減少,相對的就是指藍色的Duty cycle是比較小的(小於50% or less)這樣說起來應該LED要變得更不藍(或者說紅色或綠色),跟理論上好像有點不搭。


再次的檢查電路以及程式碼,終於發現書中(P57)提供的有小錯誤:


const int greenLEDPin = 9;
const int redLEDPin = 11;  --->10
const int blueLEDPin = 10;  --->11

修改後再次測試,成功!!遮住藍色變紅色發光,藍色區域照光變得更藍!!其它以此類推~圓滿達成!

後記:這個Project是使用光敏電阻,不過也有其他更高階的例如“顏色感測器”已經可以直接針對不同顏色的光做反應,而不需要像此專題還需要使用顏色濾片,當然顏色感測器好像也是針對單色光為主(例如紅藍綠三色)!下次的專題任務就是“MOOD CUE”真是令人期待!!

沒有留言:

張貼留言