Light Sensor Block 光感應

收集光線強度,光線強度並沒有明確的單位,越高代表越強光。

大家可以親身測試,一般室內光線的強度大約為60-100左右,當你用電筒直接照射時可以高達過千的光強度。

除了我們最直接能想到的用法之外,光強度還可以充當light gate。意思是,我們平時可以直接以光長期照射light sensor,但當光源與sensor之間有物體存在並擋光線時(光強度=0),將會自動執行反應的動作。

例如,一個信箱的入口裝上類此裝置,在信封放入時必定會阻擋光線令sensor讀數轉變,我們便可以設定不同的反應(例如發聲等等)。

上面的例子對於初學者來說或者有點困難,今天我們就先試最簡單的用法吧。

例子:

做一個裝置,在屋間黑間會自動開啟燈飾和轉動風車;當天亮時,便會自動關閉。

類似的東西我們已經做過很多次了,但這次我們會一些新技巧。這次希望做到的是:

  1. Robo靜止不動
  2. 房間裡沒有光線時,啟動會轉色和會轉動的裝置
  3. 當光線足夠時,Robo返回靜止不動的樣子

第一步 Robo靜止不動

我們先不做這一步,因為所謂的「靜止不動」取決於我們使用了什麼output。

如果你不明白其中的意思,請繼續看下去。

第二步 房間裡沒有光線時,啟動會轉色和會轉動的裝置

如果只是用光強度來控制的話,那麼這個裝置有可能在我們不想它開啟地自己開啟,做成不便。因此,我們會使用Operators中的「and」來做這個編程(用意是故意讓大家學習新的block)。

Operators中的「and」代表只有2個六角形中的條件同時被滿足,才會執行下一個動作。

我們這裡便用了最簡單的button,當成另一個輸入指令

當光強度 < 20(黑暗房間的約數),同時按下 Button 時,執行下一動作。

使用If block,至於下面的轉色部份相信不用多講了。

第三步 當光線足夠時,Robo返回靜止不動的樣子

這裡使用Repeat until比較方便,編程會一直不停的運作直到光強度大於20。到了這裡,我們完成了嗎?你可以加入Events block然後試用,你會發現根本不會停止。

原因是,我們並沒有設定「靜止狀態」。我們使用了哪些output?是燈和摩打。

請留意左邊的編程小點,當我們設定某些條件之後,它會在達成時跳回「上一個動作」。

那麼,我們希望整個Robo回到靜止,我們必須在「上一個動作」要把所有output的靜止block都拉出來。你可以試試只拉Set led to而不拉出Set speed to 0,那麼只有燈會關上而摩打會不停地轉動,這是很多人犯的錯誤。對了,別忘了為整個編程加上forever。