Python スクリプトでラズベリーパイの入出力ピン(GPIO)を制御
STEP1
Python標準装備のライブラリRPi.GPIOをインポート
インポートした後は"GPIO"というインスタンスが使えるようになる
import RPi.GPIO as GPIO
STEP2
GPIOピンを指定する
指定方法1 GPIO.setmode(GPIO.BCM) #GPIOの番号で指定する
指定方法2 GPIO.setmode(GPIO.BOARD) #コネクタピン番号で指定する
STEP3
I/O端子を出力または入力に設定
①出力に設定
GPIO.setup(ピン番号、GPIO.OUT. initial = GPIO.HIGH)
initial記述はオプションで初期状態をHレベルかLレベルかを指定できる
出力ピンのL/Hを制御
GPIO.output(ピン番号、GPIO.HIGH) #デジタル出力をHレベル
GPIO.output(ピン番号、GPIO.LOW) #デジタル出力をLレベル
②入力に設定
GPIO.setup(ピン番号、GPIO.IN. pull_up_down = GPIO.PUD_UP)
pull_up_down以降はオプション プルアップ(PUD_UP)プルダウン(PUD_DOWN)を指定できる。
信号を取り込むときの記述
value = GPIO.input(ピン番号)
ポーリングでピンの入力レベルの変化を待つ
while GPIO.input(ピン番号) = =GPIO.HIGH:time.sleep(0.01)
whileは他の処理の実行をブロックする。
time.sleepで10msecの待ち時間を挿入し、この間は他の処理に実行権を渡している。
ラズベリーパイの入出力ピンを制御するPythonスクリプト例 sample6.py
GPIOピンの入力信号のレベル変化を検出して割り込み処理ができる。
記述例
GPIO.add_event_detect(ピン番号, GPIO.RISING,callback = my Func, bouncetime = 200)
●立ち上がり(GPIO.RISING)
●立ち下がり(GPIO.FALLING)
●両方(GPIO.BOTH)
bouncetimeはスイッチを押したときのチャタリングを回避する時間(単位msec)。イベント検出後、指定した時間だけ次のイベント検出は行わない。callbackで指定した関数myFuncはイベント検出時に実行する関数。
イベント検出を終了させる記述
GPIO.remove_event_detect
入力割り込み処理記述例
GPIOヘッダーのGPIO17(11ピン)またはGPIO18(12ピン)をLレベルにすると緑または青LEDが5秒点灯して消灯。
12ピンは、入力信号の変化を巡回モニタ(ポーリング)によって検出。緑LED点灯中に12ピンの入力をLレベルに変化させても5秒間点灯する。
11ピンは割り込みで処理される。青LEDが点灯中に11ピンをLレベルに変化させると、割り込み処理が行われて、連続2回(10秒間)点灯する。
GPIO.cleanup() これはプログラム終了時にGPIOピンを入力モードにして、プルアップ/プルダウンなしの状態に戻す記述。
永久ループを[Ctrl] +[C]キーで強制終了のときや、アプリケーション終了時、この解放処理を確実に実行するには、次の例外処理を追加。
try
while True
(繰り返し処理)
except KeyboardInterupt #キー入力でジャンプ
pass
GPIO.cleanup()
RPiGPIOのプログラム実行時、警告 "This channel is already in use" が出るときは、最初の初期化記述に
GPIO.setwarnigs(False)
を追加する。
ご不明の点はご遠慮なくお尋ね下さい。存じ上げていることは丁寧にご案内させていただきます。
TEL 090-3194-4902
TEL 090-3194-4902