search
LoginSignup
81

More than 5 years have passed since last update.

posted at

updated at

Raspberry PiでPythonのRPi.GPIOを使ってLチカする

以前Raspberry PiでNode.jsのJohnny-Fiveを使ったLチカのサンプルを書きました。今回はPythonのRPi.GPIOパッケージをインストールしてLチカしてみます。

RPi.GPIO

RPi.GPIOパッケージはRaspberry PiのGPIOを操作するときに使います。pipやapt-getからインストールできます。

pipの場合

$ sudo pip install rpi.gpio

apt-getの場合

$ sudo apt-get install python-rpi.gpio

GPIO.BOARDとGPIO.BCM

RPi.GPIOのサンプルを見ているとGPIOのピン番号を指定する方法が2種類あります。何が違うのか調べているとWhat is the difference between BOARD and BCM for GPIO pin numbering?に説明がありました。

  • GPIO.BOARD: PIN番号
  • GPIO.BCM: GPIO番号

今回LEDのアノードを配線するPIN 11は、Raspberry Pi Model Bの場合GPIO 17になります。GPIO番号はモデルごと違う場合があるので、PIN番号で指定するGPIO.BOARDを使った方がよいみたいです。

This channel is already in use

RPi.GPIOのプログラムを実行するとThis channel is already in useの警告がでる場合があります。これは以前GPIO.setup()を実行してポートのセットアップをした後、クリアしていないときに発生します。

$ sudo python led-blink.py
led-blink.py:8: RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
  GPIO.setup(PIN,GPIO.OUT)

プログラムの最後にポートのクリアを行います。

GPIO.cleanup()

ブレッドボード配線

抵抗器は1K(茶黒赤金)を用意しました。LEDを配線します。

raspi-led.png

サンプルプログラム

~/python_apps/led-blink.py
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time

COUNT = 3
PIN = 11
GPIO.setmode(GPIO.BOARD)
GPIO.setup(PIN,GPIO.OUT)

for _ in xrange(COUNT):
    GPIO.output(PIN,True)
    time.sleep(1.0)
    GPIO.output(PIN,False)
    time.sleep(1.0)

GPIO.cleanup()

GPIOを操作する場合はroot権限が必要になります。プログラムを実行すると3回、1秒間隔でLチカします。

$ sudo python led-blink.py

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
81