CodeZine(コードジン)

特集ページ一覧

オームの法則覚えてますか? 電子工作の基礎を身につけ、Raspberry PiでLEDを光らせよう

ラズベリーパイをつかったセンサープログラミング超入門 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2015/12/25 14:00
目次

プログラミングによるLED制御

 Raspberry Piとブレッドボードの配線ができたら、Raspberry Piの電源を入れます。ここでは、GPIOに接続されたLEDを、Pythonのプログラムから制御します。

プログラムの作成

 TeraTermを起動し、ネットワーク上のRaspberry Piにアクセスします。ホスト名は、セットアップの際に指定した任意の名前に.localを付加したものにします。筆者の場合は、ホスト名を「asapi」にしたので、次のようにアクセスします。

  • ホスト名:asapi.local
  • サービス:ssh(22番ポート)
RaspberryPiへの接続
RaspberryPiへの接続

 ユーザ名とパスフレーズを聞かれるダイアログが表示されるので、以下の認証情報を入力します。

  • ユーザ名:pi
  • パスフレーズ:<セットアップで設定したパスワード>
RaspberryPiのユーザ認証
RaspberryPiのユーザ認証

 認証に成功すると、次のようにRasbianのメッセージが表示されます。

RaspberryPiのログイン
RaspberryPiのログイン

 ホームディレクトリで次のコマンド実行し、「led」という名前のディレクトリを作成します。

リスト1 ディレクトリの作成
$ pwd
/home/pi
$ mkdir led
$ cd led

 作成したディレクトリで、次のプログラム「led.py」を作成します。

リスト2 led.py
# coding: utf-8
# 1.ライブラリのインポート
import RPi.GPIO as GPIO
import time

# 2.ピン番号の割り当て設定
GPIO.setmode(GPIO.BOARD)

# 3.ピン番号を変数LEDにセット
LED = 40

# 4.出力設定
GPIO.setup(LED, GPIO.OUT)

# 5.点滅/点灯を3回繰り返す
for i in range(3):

    print 'Count=' + str(i)

    # ハイレベルを出力し、5秒待機
    GPIO.output(LED, GPIO.HIGH )
    print 'LED High'
    time.sleep(5)

    # ローレベルを出力し、5秒待機
    GPIO.output(LED, GPIO.LOW)
    print 'LED Low'
    time.sleep(5)

# 6.GPIOの解放
GPIO.cleanup()

 プログラムの説明をします。

1. ライブラリのインポート

 RPi.GPIO は、Raspberry PiのGPIOをPythonで操作するためのライブラリです。このライブラリを使うため、インポートします。また、LED点灯/消灯の待機時間を指定するためtimeライブラリもインポートします。

2. ピン番号の割り当て設定

 プログラムで制御したいGPIOのピンを指定する方法を選択します。ピンの指定はGPIO.setmodeメソッドで行います。引数にGPIO.BOARDを指定したときはピン番号での指定となります。また、引数にGPIO.BCMを指定したときは、ピン名のGPIOの番号で指定します。

3. ピン番号を変数LEDにセット

 今回は、ピン番号40(GPIO21)に配線し、ピン割り当てをGPIO.BOARDにしましたので、変数LEDに40をセットします。

 なお、GPIO.setmode(GPIO.BCM)でピン割り当てを指定した場合、21となります。

4. 出力設定

 GPIOの出力をセットします。GPIO.setupメソッドの引数に、ピン番号と出力を表すGPIO.OUTを指定します。

5. 消灯/点灯を3回繰り返す

 for文を使って処理を3回繰り返す制御構文を記述します。4で設定したGPIOの出力に対して、次の制御命令を記述します。Raspberry PiのGPIOはデジタル信号のみの制御になりますので、0または1のいずれかの命令になります。

GPIOの出力制御
メソッド LEDの状態 説明
GPIO.output(LED, GPIO.HIGH ) 消灯 ハイレベル(True/1)
GPIO.output(LED, GPIO.LOW) 点灯 ローレベル(Fase/0)

 消灯および点灯後5秒間待機するためtime.sleep()メソッドを実行します。引数には、待機する時間を秒で指定します。

6. GPIOを解放

 使用したGPIOを開放するため、GPIO.cleanup()メソッドを実行します。プログラムの終了時は必ず実行するようにしてください。

 Pythonは、インデントでブロック構造を表現します。また#以降はコメント行になります。RPi.GPIOライブラリの詳細については、以下の公式サイトを参照して下さい。

LEDの点滅点灯の確認

 作成したプログラム、および電子回路の配線に誤りがないかを確認したら、次のコマンドを実行してLEDが5秒ごとに点灯するかを確認してください。Lowの状態のときに、LEDが点灯すれば問題なく動作しています。

リスト3 LEDの消灯/点灯
$ sudo python codezine.py
Count=0
LED High
LED Low
Count=1
LED High
LED Low
Count=2
LED High
LED Low

おわりに

 今回の記事では、Raspberry PiのGPIOとブレッドボードで作成した電子回路を使って、LEDを制御するためのプログラミングを行いました。GPIOのしくみやブレッドボードの使い方、GPIOを制御するためのPythonライブラリをご紹介しました。

 次回は、温度センサー(DS18B20)をつかって室温を測定するための電子回路の作成とプログラミングを紹介したいと思います。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:ラズベリーパイをつかったセンサープログラミング超入門

著者プロフィール

  • WINGSプロジェクト 阿佐 志保(アサ シホ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5