2014年7月24日 星期四

Using LiveCode on Raspberry Pi – Demo 1 : PIR sonsor & LED (Traditional Chinese)

      (You can see this article in english here : http://hedgehao.blogspot.tw/2014/07/raspberry-pi-has-26-gpio-pins-on-it-it_24.html)
      Raspberry Pi擁有26GPIO腳位(新版的Raspberry Pi Model +新增至40個腳位)GPIO的腳位可以用來控制LED燈泡各種感應器馬達等等,這篇文章中我將要分享PIR這個動作感應器配合LED燈泡來做回應,當偵測到動作時燈泡會亮起,當動作結束後燈泡會熄滅。


      可以參考這個Demo影片:http://youtu.be/ZLLmuAAM7Cc
      在LiveCode的程式碼中,我設定了2秒的等待時間(這個等待時間是參考一些網路上的教學文章),所以在影片當中可以看到揮動手的時候燈泡並沒有馬上的反應,而會有一段延遲時間,這個程式碼是公開發佈的,大家可以自行修改這個等待時間,或許能夠找出最適合的延遲時間。
      以下是這個範例的電路圖:
      這個電路圖並不完全和影片和照片中的相同,為了呈現的方便我將他簡化了。首先將PIR sesnor接上RPi,將PIR的電源(紅色線)接上RPi 5V腳位,接地(黑色線)接到RPi 的接地腳位,訊號線(黃色線)接到RPiGPIO18腳位,訊號線必須接到18腳位,因位程式中設定的是控制18這個腳位。
      再來是LED的部分,在LED負極接上一個電阻,電阻的另一端接到RPiGND腳位,LED的正極接到GPIO4腳位,一樣是程式中設定控制的腳位。

      這次Demo的範例程式提供兩個LiveCode External,可以在這裡下載:

      下載完後將檔案解壓縮,執行”haoRPiDemo1.rev”
      如果你試圖移動三個檔案的位置,必須依照下列步驟從新設定external位置:把”haorpiled.so””haorpipir.so”兩個external放到適合的資料夾中,例如“/home/pi/haopir”。接著打開壓縮檔中的範例程式” haoRPiDemo1.rev”,將StackExternal屬性設定為兩個External存放的路徑位置,或是透過屬性面板的External Reference來設定。

存檔之後重新開啟LiveCode(確保External有被載入到Stack)
執行時先按下按鈕”setup”來開啟GPIO的控制連線,如果沒有出錯的話Message Box應該顯示出”OK”的字樣,接著就可以按下按鈕”Start Detect”開始偵測,如果PIR偵測到動作的話LED就會亮起,若動作停止了,LED燈就會熄滅。
再來談談程式碼,程式碼的部分非常簡單,以LED為例,首先利用” haoRPiLEDOpen()”來做基本的設定工作,接著可以使用”haoRPiLEDLight()”“haoRPiLEDDark()”來控制LED燈泡的亮、暗。以PIR來說可以透過”haoRPiPIRReadMotion()”來讀取PIR的資料,讀取的資料中1代表針測到動作0代表動作停止,當LiveCode讀到資料後會送出” PIRSensorDidReadValue”這個訊息到目前顯示的卡(current card)上。最後當程式結束前,記得將GPIO的控制連線關閉,使用“haoRPiPIRClose()” “haoRPiLEDClose()”
這邊提到的所有函式(Function)LiveCode都定義為Function而不是Command,如果執行的過程中沒有出錯,每個函式應該會回傳“OK”的字樣。

以上就是這次的Demo,感謝收看,如果發現有任何Bug請通知我 J

1 則留言: