古人智慧

Just Do it!
上士聞道,勤而行之;中士聞道,若存若亡;下士聞道,大笑之。不笑,不足以爲道。
~ 道德經 41

搜尋此網誌

Translation

2015年5月10日 星期日

[Banana Pro][RPi.GPIO_BP]用Python來寫GPIO控制程式


本次實驗是用Python來做GPIO控制,做法非常簡單易用。

先確定系統在更新狀態:
root@bpro:/home/regis# apt-get update
root@bpro:/home/regis# apt-get upgrade

再來安裝 git:
root@bpro:/home/regis# apt-get install git
root@bpro:/home/regis# apt-get install python-dev
root@bpro:/home/regis# apt-get install gcc g++ make git-core vim

裝Python的gpio控制模組:
### For Banana Pro
root@bpro:/home/regis# git clone https://github.com/LeMaker/RPi.GPIO_BP -b bananapro
root@bpro:/home/regis# cd RPi.GPIO_BP
root@bpro:/home/regis# python setup.py install
root@bpro:/home/regis# sudo python setup.py install



裝好後:
root@bpro:/home/regis/RPi.GPIO_BP# ls
build debug.sh PKG-INFO RPi source
CHANGELOG.txt LICENSE README.md setup.py test


有一堆測試程式:
root@bpro:/home/regis/RPi.GPIO_BP/test# ls
add_event_detect.py led_read.py pwm_test2_RAW.py
add_event_detect_RAW.py myReadMe pwm_test.py
event_detect.py polling.py serial_test.py
gpio_pull.py polling_RAW.py test_gpio_function.py
info_RPi.GPIO.py pwm.py test.py
led.py pwm_test2.py wait_for_edge.py



安裝好後,先找個簡單的led亮暗的program來測試:
root@bpro:/home/regis/RPi.GPIO_BP/test# nano led.py

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
PIN_NUM = 7
#GPIO.setmode(GPIO.BCM)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN_NUM,GPIO.OUT)
while True:
    GPIO.output(PIN_NUM,True)
    time.sleep(1) 

    GPIO.output(PIN_NUM,False)
    time.sleep(1)


要開始接LED電路和改程式前,先了解pin的定義。
CON6是主要我們要接外面模組的通道,Pin1是從左下角開始算,pin2左上角,然後pin3是在pin1右邊,以此類推。


所以,在GPIO.setmode(GPIO.BOARD)的設定 ,建議用GPIO.BOARD,用板子上pin位置來定義,比較不會接錯。

那LED的接法如下:

在BananaPro的CON6第7根pin接到LED正極,第9根的Ground接到電阻。
請切記,最好是斷電的狀態接電路,不然會有燒燬的風險。

接好後,開機進入:
root@bpro:/home/regis/RPi.GPIO_BP/test# sudo python led.py 
BAPI: revision(2)


如果看到LED每秒交互閃動,恭喜,成功!

或者,也可以直接進入Python:
root@bpro:/home/regis/RPi.GPIO_BP/test# python
Python 2.7.3 (default, Mar 14 2014, 17:55:54) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO as GPIO 
BAPI: revision(2)
>>> PIN_NUM = 7 
>>> GPIO.setmode(GPIO.BOARD)
>>> GPIO.setup(PIN_NUM,GPIO.OUT) 
>>> GPIO.output(PIN_NUM,True)
>>> GPIO.output(PIN_NUM,False) 
>>> 

可以隨自己想法設pin和on & off

參考文章:



沒有留言:

張貼留言