回胴式遊技機技術研究 J-Slot Amusement Specification

アミューズメント仕様パチスロの日々

ラズベリーパイ入出力制御GPIO(1)

2022-09-18 15:11:20 | 日記

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 
 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ラズベリーパイ推奨プログラ... | トップ | ラズベリーパイ入出力制御GPI... »
最新の画像もっと見る

コメントを投稿