Raspberry Piを使ってLEDの点滅(Lチカ)を制御してみる

スポンサーリンク

image1

前回の Raspberry Piを使ってLEDを点灯してみる に引き続き点滅(Lチカ)に挑戦します。

はじめる前に

今回、Raspberry Piを使ってLEDの点滅(Lチカ)を試すに際して下記を用意します。
※前回の Raspberry Piを使ってLEDを点灯してみる で使用したものと同じです。

・Raspberry Pi(Rassberry Pi B+を用意)
・電圧が2VのLED(赤)
・330Ωの抵抗(1本)
・ブレッドボード(1つ)
・ジャンプワイヤー(オス-メスとオス-オス)をそれぞれ6本ほど
それぞれの写真は下記。

Raspberry Pi
IMG_3841

LED(赤)
IMG_3876

330Ωの抵抗
IMG_3873

ブレッドボード
IMG_3874

ジャンプワイヤー(オス-メス)
IMG_3875

ジャンプワイヤー(オス-オス)
FullSizeRender

Raspberry Piとブレッドボードを接続する

それではRaspberry PiのGPIOポートとブレッドボードを接続してLEDを点灯しましょう。
配線は前回の Raspberry Piを使ってLEDを点灯してみる とほぼ同じです。

目指す完成回路図

とりあえずの完成図

ping-pongv1 (1_1)_ブレッドボード

前回の Raspberry Piを使ってLEDを点灯してみる と違う箇所は実は一点だけ。
Raspberry Piからブレッドボードへの挿しこみ元を 3V3 から GPIO25 に変更するだけです。
※必要な抵抗の計算は、こちらに書きました。

Raspberry Pi側の接続

Lチカを制御するために、差し込み元は GPIO25 にします。IMG_3883

ブレッドボード側の接続

上の完成図にあわせてジャンプワイヤーを接続していきます。
前回の Raspberry Piを使ってLEDを点灯してみる と変わりは無いです。
IMG_3885

LEDの点灯を試す

実際にLEDをブレッドボードに突き刺しても、、、

IMG_3884

はい。点滅しません。
これは正しい挙動なのでご安心を。

RPi.GPIOパッケージを使って点灯を制御

点滅は、RPi.GPIOを使って制御していきます。これからはRaspberry Piも推奨しているPythonという言語を使ってプログラミングしてきます。

まずは、適当な場所に好きなファイル名をつけて.py(pythonファイル)を作成します。

touch ltica.py

新しいファイル、ltica.pyの出来上がり。

引き続き vimコマンドで編集モードに変更。

vim ltica.py

もしも vimコマンドが無い場合は、インストールもしくは直接GUIでltica.pyを開いて編集する方法もあり。

編集モードに移行後、下記ソースを入力。

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT)

try:
 while True:
  GPIO.output(25, GPIO.HIGH)
  time.sleep(0.5)
  GPIO.output(25, GPIO.LOW)
  time.sleep(0.5)
except KeyboardInterrupt:
 GPIO.cleanup()

一行一行見ていきます。

1行目の import RPi.GPIO as GPIO では、RPi.GPIOパッケージを読み込んでRaspberryを操作できるようにしています。
2行目の import time の時間に関するモジュールを読み込んで、時間操作を可能とするようにします。

4行目の GPIO.setmode(GPIO.BCM) を指定することにより、ピンナンバーではなくGPIOの番号で指定することが可能になります。逆にピンナンバーを指定したい場合は、GPIO.setmode(GPIO.BOARD)と指定することで可能です。
※25の場合、GPIO番号は25でピンナンバーは22になります。詳しくはコチラの表を御覧ください。

5行目の GPIO.setup(25, GPIO.OUT) では、どのGPIO番号から出力するかの指定です。今回の場合はGPIO番号は25なので第一引数には25を設定します。

7行目〜14行目がLEDの点滅処理です。
7行目と13行目の try: except KeyboardInterrupt: は例外処理です。KeyboardInterruptは ctl+cが押された時に走る処理です。

8行目の while True: で無限ループを開始させます。
9行目の GPIO.output(25, GPIO.HIGH) でLEDのランプをONに
10行目の time.sleep(0.5) で0.5秒間処理を停止。
11行目の GPIO.output(25, GPIO.LOW) でLEDのランプをOFFに
12行目の time.sleep(0.5) で0.5秒間処理を再度停止。
14行目の GPIO.cleanup() で上記で設定したGPIOの設定をリセットします。
※もしも GPIO.cleanup() が無い場合は、「RuntimeWarning: This channel is already in use, continuing away. Use GPIO.setwarnings(False) to disable warnings.」と出て怒られますので必ず処理の最後に入れましょう。

入力が終わったら保存します。

保存後は下記のコマンドを入力して ltica.py を実行します。

python ltica.py

すると、、、

image1
※クリックして画像を表示すると点滅(Lチカ)のGIFアニメを表示できます。

という感じで、プログラミング通りにLEDをチカチカ、通称Lチカできちゃいました。次はもう少し複雑な回路とプログラミングをしてみたいと思います。

Raspberry Piを使って「複数」のLEDの点滅(Lチカ)を制御してみる に挑戦しました。

[おまけ] GPIOピンを使った点滅(Lチカ)の原理

前回の Raspberry Piを使ってLEDを点灯してみる では3V3ピンに挿してLEDを点灯させましたが、今回はGPIOのピンに挿して点滅させました。一体どのようにして点滅を可能にしているのでしょうか。
結論から言うと、「GPIOは、BCM2835(Raspberry Pi B+の場合)というSOCに接続されている為、プログラミングにより点滅制御ができるから」です。
pythonで指定したGPIO.HIGH(True)とGPIO.LOW(False)は、それぞれ3.3Vと0Vの意味です。

参考文献

・時刻データへのアクセスと変換:http://docs.python.jp/2/library/time.html
・Raspberry Piで学ぶ電子工作(金丸隆志 著)

スポンサーリンク
スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク