網頁最後修改時間:2018/08/02
PiFae Digital 在樹莓派作業系統的環境設定與軟體安裝是一連貫的步驟,請從"七部曲設置 PiFace Digital 擴充板" 開始。
Step 4: 使用 Python 控制 PiFace 擴充卡
不管是直接使用樹莓派還是用 VNC viewer 登入 LXDE 桌面環境,打開終端機程式,輸入下面指令開啟 PiFace 仿真器軟體,我們要先作輸出測試
輸出測試:
在仿真軟體按下 "Override Enable" 按鈕,就可以控制 PiFace 的輸出
每一個輸出都有相對應的 LED 指示燈告訴你哪裡做了輸出,其中 "Output Pin 1" 和 "Output Pin 2" 按下時會另外帶動繼電器的線圈使其激磁 ( "噠" 的一聲 ) 並切換繼電器的輸出端動作,你可以使用電表 (歐姆檔) 去量測,更容易了解繼電器的動作 (如果之前沒接觸過的話)
試著按下仿真器的 "Output Pin #" 測試 PiFace 各個輸出接點,若按下的按鈕與我一樣,就會看到跟下圖一樣的 LED 燈號輸出
看到這邊,跟大家介紹一個真實的與 minicraft 結合的 PiFace 應用 ( 原文介紹在下方 ),
reallife redstone - raspberry pi + piface + minecraft
This is my most recent project with a pi. with a piface this was the most natural thing to do...
The minecraft server is running a mod written for bukkit,the mod is publishing any change in the redstone to.
The pi is running an mqtt server, with a script to push notifications on mqtt out to the pins, and from the input pins over to update the levers in the minecraft mod. happy crafting....
( from:http://www.element14.com/community/groups/raspberry-pi/blog/2013/01/14/reallife-redstone--raspberry-pi-piface-minecraft )
輸入測試:
要進行輸入測試,請先將仿真器上面的 "Keep input updated" 打勾,並且設定輸入讀取的間隔時間
在 PiFace 板子的有四個按鈕 ( S1 - S4 ),分別代表下面圖示紅色的四個位置 (由右至左),可作外部輸入也可作為按鈕狀態輸入。
當按下 S1 時,仿真器會亮起相對應的圖示,剩下沒有按鈕的部分將會在最後介紹各部份時講解偵測輸入的接法。
Python 撰式撰寫流程:
輸出以及輸入都確認沒問題後,接著要說明如何使用 Python 寫程式。
首先,Python 一開頭要引入 piface.pfio 模組,使用之前要先呼叫 init() 函式
下面是 PiFace Python 函式庫幾個介面控制的主要函式:
簡單的 Python 範例程式:
1.) 控制繼電器 1 開啟或關閉
照著下面的指令輸入,輸入完畢後連按兩次 Enter 程式就會開始執行,就可以觀察到繼電器與 LED 的動作
2.) 控制 LED 亮滅
下面的程式可以直接存成檔案執行 (sudo python 檔案名稱),或直接使用終端機執行,要注意 Python 的縮排限制,輸入完畢後連按兩次 Enter 程式就會開始執行
你會看到 LED 1 一亮一滅,繼電器 噠 ! 噠 !,"Ctrl + C" 中斷 Python 程式執行
3.) 讀取輸入狀態
下面指令輸入完畢後,連按兩次 Enter 程式就會開始執行,按下 S1 按鈕,就會看到按鈕的狀態,按下是 1 放開是 0
不管是直接使用樹莓派還是用 VNC viewer 登入 LXDE 桌面環境,打開終端機程式,輸入下面指令開啟 PiFace 仿真器軟體,我們要先作輸出測試
pi@raspberrypi ~ $ piface/scripts/piface-emulator
VNC viewer + PiFace Emulator |
在仿真軟體按下 "Override Enable" 按鈕,就可以控制 PiFace 的輸出
PiFace Emulator 介面 |
每一個輸出都有相對應的 LED 指示燈告訴你哪裡做了輸出,其中 "Output Pin 1" 和 "Output Pin 2" 按下時會另外帶動繼電器的線圈使其激磁 ( "噠" 的一聲 ) 並切換繼電器的輸出端動作,你可以使用電表 (歐姆檔) 去量測,更容易了解繼電器的動作 (如果之前沒接觸過的話)
執行 PiFace 輸出控制 |
試著按下仿真器的 "Output Pin #" 測試 PiFace 各個輸出接點,若按下的按鈕與我一樣,就會看到跟下圖一樣的 LED 燈號輸出
PiFace Emulator 控制 Raspberry Pi + PiFace |
看到這邊,跟大家介紹一個真實的與 minicraft 結合的 PiFace 應用 ( 原文介紹在下方 ),
reallife redstone - raspberry pi + piface + minecraft
This is my most recent project with a pi. with a piface this was the most natural thing to do...
The minecraft server is running a mod written for bukkit,the mod is publishing any change in the redstone to.
The pi is running an mqtt server, with a script to push notifications on mqtt out to the pins, and from the input pins over to update the levers in the minecraft mod. happy crafting....
( from:http://www.element14.com/community/groups/raspberry-pi/blog/2013/01/14/reallife-redstone--raspberry-pi-piface-minecraft )
輸入測試:
要進行輸入測試,請先將仿真器上面的 "Keep input updated" 打勾,並且設定輸入讀取的間隔時間
每 500 ms 更新輸入狀態一次 |
在 PiFace 板子的有四個按鈕 ( S1 - S4 ),分別代表下面圖示紅色的四個位置 (由右至左),可作外部輸入也可作為按鈕狀態輸入。
PiFace 觸動開關的位置 |
當按下 S1 時,仿真器會亮起相對應的圖示,剩下沒有按鈕的部分將會在最後介紹各部份時講解偵測輸入的接法。
S1 按下時,仿真器上的圖示 |
Python 撰式撰寫流程:
輸出以及輸入都確認沒問題後,接著要說明如何使用 Python 寫程式。
首先,Python 一開頭要引入 piface.pfio 模組,使用之前要先呼叫 init() 函式
import piface.pfio
下面是 PiFace Python 函式庫幾個介面控制的主要函式:
- digital_read(pin_number) 回傳所讀取的輸入接腳 ( pin_number ) 訊號,0 或 1
- digital_write(pin_number, state) 設定輸出接腳 ( pin_number ) 狀態 0 ( Low )或 1 ( High );當設定為 1 時會點亮 LED 並使得 開集極 ( open-collector ) 可以沉入電流 ( sink current )
- digiral_write_pullup(pin_number, state) 設定輸入接腳 ( pin_number) 提升電阻狀態為 0 或 1;狀態 1 表示提升電阻致能
簡單的 Python 範例程式:
1.) 控制繼電器 1 開啟或關閉
照著下面的指令輸入,輸入完畢後連按兩次 Enter 程式就會開始執行,就可以觀察到繼電器與 LED 的動作
pi@raspberrypi ~ $ python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import piface.pfio as pfio >>> pfio.init() >>> pfio.digital_write(1, 1) # LED 1 亮,繼電器 1 激磁 >>> pfio.digital)write(1, 0) # LED 1 滅,繼電器 1 不激磁
2.) 控制 LED 亮滅
下面的程式可以直接存成檔案執行 (sudo python 檔案名稱),或直接使用終端機執行,要注意 Python 的縮排限制,輸入完畢後連按兩次 Enter 程式就會開始執行
pi@raspberrypi ~ $ python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from time import sleep >>> import piface.pfio as pfio >>> pfio.init() >>> while True: ... pfio.digital_write(1,1) ... sleep(1) ... pfio.digital_write(1,0) ... sleep(1) ... Traceback (most recent call last): File "<stdin>", line 5, in <module> KeyboardInterrupt >>>
你會看到 LED 1 一亮一滅,繼電器 噠 ! 噠 !,"Ctrl + C" 中斷 Python 程式執行
3.) 讀取輸入狀態
下面指令輸入完畢後,連按兩次 Enter 程式就會開始執行,按下 S1 按鈕,就會看到按鈕的狀態,按下是 1 放開是 0
pi@raspberrypi ~ $ python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from time import sleep >>> import piface.pfio pfio File "<stdin>", line 1 import piface.pfio pfio ^ SyntaxError: invalid syntax >>> import piface.pfio as pfio >>> pfio.init() >>> while True: ... pfio.digital_read(1) ... sleep(1) ... 0 0 0 1 1 1 0 0 1 0 0 Traceback (most recent call last): File "<stdin>", line 3, in <module> KeyboardInterrupt >>>
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !