SMART LLC

Raspberry PiでLEDを点滅させる方法(RPi.GPIO編)

公開日:2015/03/14

LED回路とオームの法則と抵抗器の実践編。
Raspberry PiでGPIOを制御してLEDを点滅させる方法をメモする。

ユニバーサル基板とブレッドボード

今度こそブレッドボードが届いたのでユニバーサル基板と並べてみる。

実物を見れば間違えることはない。
悔やまれる。

1つのLEDを点灯させる場合

点滅させる前に、まずは単純に電気を通して点灯させてみる。

最初にRaspberry PiのGPIOポート1番ピン(+3.3V)からブレッドボードの+列につなぐ。
次に+列から抵抗器、LED、-列とブレッドボード上でつなぐ。
最後にブレッドボードの-列からRaspberry PiのGPIOポート6番ピン(GND)につなげばLEDが点灯する。
1番ピンは常に電圧がかかっているため、外すまで点灯しっぱなし。

2つのLEDを点灯させる場合

2つのLEDを直列につないで点灯させてみる。

ただLEDを1つ増やすと電圧が足りなくなって点灯しなくなる。
1番ピン(+3.3V)ではなく2番ピン(+5V)からブレッドボードにつないでやると点灯する。

LEDの明るさを調整する場合

抵抗器を3つにしてみる。

抵抗器の数で電流をコントロールしてやればLEDの明るさを調整できる。

LEDを点滅させる場合

2つのLEDを別々に制御してみる。

LEDを点滅させる場合、GPIOで電圧を制御することになる。
今回は7番ピン(GPIO)と40番ピン(GPIO)を使用。
それぞれ終端は6番ピン(GND)と39番ピン(GND)。

配線ができたらプログラム。
今回はRPi.GPIOなるOS付属のPythonモジュールを使う。
他にもWiringPiてのが有名そうだけどインストールするのが面倒( ゚д゚)

まずは7番ピンのLEDだけを点滅させるプログラム。

#!/usr/bin/env python

import RPi.GPIO as gpio
import time

channel=7

gpio.setmode(gpio.BOARD)
gpio.setup(channel,gpio.OUT)

i=0
while i<5:
	gpio.output(channel,gpio.HIGH)
	time.sleep(1)
	gpio.output(channel,gpio.LOW)
	time.sleep(1)
	i+=1
gpio.cleanup()

「nano led.py」とかでファイル作って中身書いたら「sudo python led.py」で実行。
Python素晴らし(∩´∀`)∩
インポートするのはGPIO制御用にRPi.GPIOと時間制御用にtimeの2つ。
ピン番号は何度も使うので変数channelに代入。
setmode()関数でピン番号で指定するのかGPIOポート番号で指定するのか設定する。
ピン番号ならBOARD、GPIOポート番号ならBCM。
今回はピン番号で指定するのでBOARDを設定。
setup()関数ではどのピンを、入力と出力どっちに使うのか設定する。
入力ならIN、出力ならOUT。
今回は出力になるのでOUTを設定。
出力の場合はオプションで初期値を設定できるけどとりあえず省略。
準備ができたらoutput()関数で制御できるようになる。
電気を通すならHIGH、通さないならLOW。
1、0でもTrue、Falseでも可。
sleep()関数は待機時間を秒数で指定する。
つまりこの場合は点灯と消灯を1秒ずつ5回繰り返せば成功。
最後にcleanup()関数でGPIOを解放してやること。
これがないと次に同じピンを使う時に警告メッセージが出た。

2つのLEDを交互に点滅させるプログラム。

#!/usr/bin/env python

import RPi.GPIO as gpio
import time

chan_list=[7,40]

gpio.setmode(gpio.BOARD)
gpio.setup(chan_list,gpio.OUT)

i=0
while i<5:
	gpio.output(chan_list,(gpio.HIGH,gpio.LOW))
	time.sleep(1)
	gpio.output(chan_list,(gpio.LOW,gpio.HIGH))
	time.sleep(1)
	i+=1
gpio.cleanup()

2つのピン番号を配列変数chan_listに代入。
setup()関数でもoutput()関数でも配列変数をそのまま渡す。
ピンごとに点灯させたい場合、output()関数の第2パラメータをカッコしてカンマ区切りで指定すればOK。
この場合は7番ピンのLEDが先に点灯して、交互に5回ずつ点灯すれば成功。

はー腰痛い_(:3 」∠)_

SHARE