BasicUsage

Anonymous Ben Croston

RPi.GPIO モジュールの基礎

モジュールのimport

RPi.GPIOモジュールをimportするには(注: RPiは Raspberry Piの略):

import RPi.GPIO as GPIO

これにより、以降のプログラムコードで単に GPIO として参照できるようになる.

importし、かつそれが成功したかどうかを調べるには次のようにする:

try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("
RPi.GPIOのimportエラー!  おそらくこれがエラーになるのは、これを使用するには管理者権限が必要だからである。管理者権限を得るには、コード実行において 'sudo' コマンドを使うこと")

ピンの番号

RPi.GPIOにおけるRaspberry PiのIOピンの番号の付け方には二通りある。 一つは BOARD 番号を使う方法で、これはRaspberry Piのボードのピン配置を 使う方法である。この利点はRPiのボードの版の違いによらず常に動く、 つまりコードを書き換えたり配線を変える必要がない。

もう一つの方法はBCM番号である。これは低レベルの方法、つまりBroadcom SOCのチャネル番号を使う方法である。これを使う場合には、チャネル番号が RPiボードのどのピンに対応するか、常に気をつけていなければならない。 Raspberry Piのボードの版によっては動かないこともある。

どちらの方法を使っているかを指定するには(必ず書かなければならない):

GPIO.setmode(GPIO.BOARD)
  # もしくは
GPIO.setmode(GPIO.BCM)

(例えば、他のPythonモジュールによって)どちらのピン番号付けが設定されているか を調べるには:

mode = GPIO.getmode()

この結果は GPIO.BOARD か GPIO.BCM 、もしくは None となる。

警告

同じRaspberry PiのGPIOに対して複数のコードや回路を走らせることは可能である。 この結果として、RPi.GPIOがデフォルト(input)以外の値に設定されているこ とが検知されたら、コードを走らせようとすると警告を受けるようになっている。 この警告は次のようにすれば表示させないことが可能:

GPIO.setwarnings(False)

チャネルの設定

使用するチャネル(注:ここではピンと思って良い)を input(入力)かoutput(出力)に設定する必要がある。 入力に設定するには:

GPIO.setup(channel, GPIO.IN)

(ここで channel はBOARD か BCMのどちらかで設定したピン番号付けによるピン番号)

More advanced information about setting up input channels can be found here.

チャネルを出力に設定するには:

GPIO.setup(channel, GPIO.OUT)

(ここで channel はBOARD か BCMのどちらかで設定したピン番号付けによるピン番号)

次のように、初期値を指定してチャネルを出力に設定することもできる:

GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH)

複数のチャネルの設定

複数のチャネルを一遍に設定することができる(ただし0.5.8版以降). その例:

chan_list = [11,12]    #  好きなだけたくさんのチャネルを追加可能
                       # リストではなく、次のようにタプルを使用しても良い:
                       #   chan_list = (11,12)
GPIO.setup(chan_list, GPIO.OUT)

入力(Input)

GPIOピンの値を読み込むには:

GPIO.input(channel)

(ここで channel はBOARD か BCMのどちらかで設定したピン番号付けによるピン番号)。 これは0 / GPIO.LOW / False もしくは IO.HIGH / True を返す.

出力(Output)

GPIOピンを出力に設定するには:

GPIO.output(channel, state)

(ここで channel はBOARD か BCMのどちらかで設定したピン番号付けによるピン番号)

出力ピンの状態は 0 / GPIO.LOW / False もしくは 1 / GPIO.HIGH / True である。

複数のチャネルへの出力

一遍に複数のチャネルに出力することが可能 ( 0.5.8 版以降). その例:

chan_list = [11,12]                             #      リストではなくタプルでもよい
GPIO.output(chan_list, GPIO.LOW)                # 全てのピンを GPIO.LOW にセット
GPIO.output(chan_list, (GPIO.HIGH, GPIO.LOW))   # まず HIGH に設定し、次に LOWに設定する

片付け(Cleanup)

どのプログラムの終了時においても、使った資源(リソース)を片付ける ことはよい習慣である。これは RPi.GPIOにおいても当てはまる。 すべてのチャネルをプルアップ(HIGH)でもpull down (LOW)でもない入力状態 に戻すことで、例えばピンをショートすることによるボードへの破損を防ぐ ことができる。 ここでは使用したGPIOチャネルの「片付け」だけが行われることに注意。 GPIO.cleanup()はまた、使用したモードをリセットすることにも注意.

コードの最後で「片付け」するには:

GPIO.cleanup()

全部のピンを「片付ける」のではなく、いくつかのピンはそのままにしておく、 ということも可能である。その場合には、次のように「片づけ」するピンを タプルかリストで指定する:

GPIO.cleanup(channel)
GPIO.cleanup( (channel1, channel2) )
GPIO.cleanup( [channel1, channel2] )

RPiボード情報と RPi.GPIO のバージョン

自分が使っているRPiについての情報を調べる:

GPIO.RPI_INFO

Raspberry Piボードのバージョンを調べるには:

GPIO.RPI_INFO['P1_REVISION']
GPIO.RPI_REVISION    (これは廃止される予定)

RPi.GPIOのバージョンを調べるには:

GPIO.VERSION

Related

Wiki: Examples
Wiki: Inputs
Wiki: Outputs

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks