Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
77
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@masato

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
77
Help us understand the problem. What are the problem?