まめりうむ

WindowsからMacへ乗り換るためのネタをまとめたり好きなことをまとめたり。

*

RPi.GPIOの基本的な使い方

      2014/12/16

スポンサーリンク

Raspberry Piの汎用入出力コネクタ(GPIO)をPythonで操作するためのライブラリはいくつかあるようですが、わたしはRaspberry Piクックブックで紹介されていたRPi.GPIOを使っています。

このライブラリの使い方をカンタンにまとめておきます。

基本的な流れ

RPi.GPIOを使用する基本的な流れは次のとおりです。

  1. RPi.GPIOのインポート
  2. ナンバリング設定
  3. GPIOピンの設定
  4. GPIOピンの操作
  5. 終了処理

では、それぞれもう少し詳しく見ていきます。

1. RPi.GPIOのインポート

import RPi.GPIO as GPIO

ここは当たり前なのでスルーでw

2. ナンバリング設定

RPi.GPIOではRaspberry PiのGPIOの各ピンを指定するための方法が2つ用意されています。

1つは

GPIO.setmode(GPIO.BOARD)

とする方法で、もう1つは

GPIO.setmode(GPIO.BCM)

とする方法です。

この違いを説明する前に、まずはコチラのページをご覧下さい。

このページにはRaspberry Pi各モデルのGPIOのピン番号と役割が書かれています。

私が使っているModel B+を例にすると

  • 左下の1番ピンは3.3Vの電源
  • 左上の2番ピンは5V電源
  • 右下の39番ピンはGND
  • 右上の40番ピンはGPIO21

となっています。

ナンバリング設定で

GPIO.setmode(GPIO.BOARD)

を選んだ場合、これ以降にGPIOピンを選択するにはピン番号(左下から右上までの連番)で指定することになります。

一方

GPIO.setmode(GPIO.BCM)

を選んだ場合、ピン番号ではなく役割に記載されたGPIOの数字で指定することになります。

例えば、ピン番号3番のGPIO02を使用する場合

  • GPIO.setmode(GPIO.BOARD)なら3
  • GPIO.setmode(GPIO.BCM)なら2 と指定することになります。

GPIO.BOARDで指定した方がRaspberry Pi各モデル間のズレを吸収しやすいようですが、実際ネットでコード見てるとGPIO.BCMで指定している方が多い気がします。

なぜなんでしょう…w

なお、これ以降のコードは

GPIO.setmode(GPIO.BCM)

で、GPIO04の7番ピンを使うという設定で進めます。

2. GPIOピンの設定

ナンバリング設定をしたら、実際に使用するGPIOピンの設定をします。

GPIOを出力として使う場合は

channel = 4
GPIO.setup(channel, GPIO.OUT)

こんな感じ。ちなみに

channel2 = 5
channels = [channel, channel2]
GPIO.setup(channels, GPIO.OUT)

みたいにGPIOピンのリストで設定することも可能です。

一方、入力として使う場合は

channel = 4
GPIO.setup(channel, GPIO.IN)

という感じで指定します。

setupメソッドは他にも設定できる項目があるので、詳細は次回に。

3. GPIOピンの操作

出力として使うGPIOは

GPIO.output(channel, GPIO.HIGH) # True , 1 も同義
GPIO.output(channel, GPIO.LOW) # False, 0 も同義

というoutputメソッドを使用します。

Raspberry PiのGPIOはデジタル入出力のみ可能なので、0か1の2値で操作することになります。

ちなみに、入力として使うGPIOは

input_val = GPIO.input(channel)

というinputメソッドで値を読み取ることが出来ます。

4. 終了処理

GPIOの操作が終わったらcleanupメソッドで終了します。

GPIO.cleanup()

特定のGPIOピンのみ終了する場合は

GPIO.cleanup(channel)

という感じで引数を指定することも可能です。

対話型シェルで弄ってる時はつい忘れてしまいます、コレw


この流れが基本となります(多分)。

 - これから始めるRaspberry Pi ,

スポンサーリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  関連記事

RPi.GPIO.setupメソッドについてもう少し

前回の記事でRPi.GPIOライブラリを使用する基本的な流れがわかったんですが、 …

秋月電子にRaspberry Pi 2が入荷されてました

先日友達に誘われて秋月電子の八潮店に行ってきました。 出かける前に秋月電子の通販 …

Raspberry Piのインストール時にひとつ大ポカをしました

届いてます、Raspberry Pi。 OSのインストールと最低限必要そうなソフ …

+350円で性能6倍のRaspberry Pi 2 Model B

Raspberry Piに新モデルが出ましたね。 「Raspberry Pi 2 …

Raspberry PiでLEDチカチカ

Raspberry Piにリモート接続できるようになってからは念願の電子工作的な …

Raspberry Piで学ぶ電子工作を読みました

Raspberry Piを買った時、一緒にRaspberry Piクックブックも …

Raspberry PiのOSインストールから基本的な設定まで

Raspberry Piを買ってからOSのインストール〜ネットワーク経由で操作出 …

Raspberry Piに興味津々

この前本屋さんで面白そうなPythonの本がないか探してたんですが、その時初めて …