今回は、Rasoberry Pi と Python を使って、
ボタンを押している間だけ、LEDを点灯させます。
この記事では以下が学べます。
LED制御 | 配線・プログラミング |
ボタン制御 | 配線・プログラミング |
Python | 電気信号の入力 電気信号の出力 |
やりたいこと
・ボタンを押している間、LEDを点灯させる
システム構成図
やることリスト
上記の「やりたいこと」をみて、
どんな作業が必要か、自分で項目を考えてみてください。
これを考えることで、「プログラミング的思考」が身に付いていきます。
番号 | 作業項目 | 備考 |
1 | やりたいこと・システム構成図の作成 | |
2 | やることリストの作成 | 作業項目の洗い出し |
3 | 部品の準備 | |
4 | LEDを点灯させる | |
5 | ボタンが押されたことを判断する | |
6 | 機能のまとめ | 上記機能を組み合わせて、 やりたいことを作って行きます |
部品の準備
今回のシステムに必要な部品です。
不足している部品があれば購入下さい。
部品名 | 備考 |
Raspberry Pi | 別途、電源・SDカード・HDMIケーブルが必要です。 |
ブレッドボード(※1) | |
ジャンパー線(※1) | オスーメス:4本 |
LED(※1) | LED:1個 |
ボタン(※1) | タクトスイッチ:1個 |
購入に必要な部品を、
Raspberry Pi 関連に記載しています。
※1)「電子工作キット」内に全て含まれています。
ラズパイは、電源を入れただけでは起動しません。
ラズパイの起動手順の記事を参照ください。
LEDを点灯させる
配線図
部品の説明
以下記事「部品の説明」の章で、
ブレッドボード・LED・抵抗 の説明をしています。参照ください。
電流の流れ
ラズパイの16番ピン(GPIO 23) → 抵抗 → LED → ラズパイの6番ピン(Ground)
の順に電流は流れていきます。
プログラム
ピンの制御にRPi.GPIOパッケージを使用する為、以下コマンドでインストールする。
sudo pip3 install rpi.gpio
以下の通り、ディレクトリとファイルを作成する。
この章では、以下赤字のファイルを修正する。
/home/pi/work/led_sw/
└led.py
led.py
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
# LED制御ピンに、GPIO 23 を使用する
LED_GPIO = 23
# GPIO.BCMを設定することで、GPIO番号で制御出来るようになります。
GPIO.setmode(GPIO.BCM)
# GPIO.OUTを設定することで、出力モードになります。
# 出力モードにすることで電圧を ON/OFF することが出来ます。
GPIO.setup(LED_GPIO, GPIO.OUT)
count = 5
# range(5) を使うことで、指定した回数だけ for文の中身を実行します。
for i in range(5):
# GPIO.HIGHを設定することで、電圧を ON し、電流が流れ、LEDが点灯します。
GPIO.output(LED_GPIO, GPIO.HIGH)
time.sleep(1) # 1秒wait
# GPIO.LOWを設定することで、電圧を OFF し、電流が流れず、LEDが消灯します。
GPIO.output(LED_GPIO, GPIO.LOW)
time.sleep(1) # 1秒wait
# ピンの設定を初期化
# この処理をしないと、次回 プログラムを実行した時に「ピンが使用中」のエラーになります。
GPIO.cleanup()
実行
コマンドラインから、先程作成した led.py のディレクトリに移動し、
以下コマンドを実行すると、1秒周期で5回点灯/点滅を繰り返します。
python3 led.py
ボタンが押されたことを判断する
以下記事「ボタンが押されたことを判断する」の章で、
回路図・配線図・部品の説明・プログラム の説明をしています。
参照ください。
機能のまとめ
これまで作成した上記機能を組み合わせて、
「ボタンを押している間、LEDを点灯させる」
を実現します。
配線図
プログラム
以下の通り、ディレクトリとファイルを作成する。
この章では、以下赤字のファイルを修正する。
/home/pi/work/led_sw/
└app.py
app.py
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import time
# LED制御ピンに、GPIO 23 を使用する
LED_GPIO = 23
# SW制御ピンに、GPIO 24 を使用する
SW_GPIO = 24
# GPIO.BCMを設定することで、GPIO番号で制御出来るようになります。
GPIO.setmode(GPIO.BCM)
# GPIO.OUTを設定することで、出力モードになります。
# 出力モードにすることで電圧を ON/OFF することが出来ます。
GPIO.setup(LED_GPIO, GPIO.OUT)
# GPIO.INを設定することで、入力モードになります。
# pull_up_down=GPIO.PUD_DOWNにすることで、内部プルダウンになります。
GPIO.setup(SW_GPIO, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
while True:
try:
# ボタンの値を読み込み
if GPIO.input(SW_GPIO):
# LEDを点灯
GPIO.output(LED_GPIO, GPIO.HIGH)
else:
# LEDを消灯
GPIO.output(LED_GPIO, GPIO.LOW)
time.sleep(0.5) # 0.5秒wait
# Ctrl+Cキーを押すと処理を停止
except KeyboardInterrupt:
# ピンの設定を初期化
# この処理をしないと、次回 プログラムを実行した時に「ピンが使用中」のエラーになります。
GPIO.cleanup()
sys.exit()
実行
コマンドラインから、app.py のディレクトリに移動し、
以下コマンドでプログラムを実行する。
python3 app.py
ボタンを押すと、LEDが光ります!
プログラムを終了する場合は、
Ctrl+Cキー を押すと終了します。
最後に
如何だったでしょうか?
LEDが光った時、
ボタンを押したことを判断出来た時、
お~って、ワクワクしましたよね♪
次は、
LEDの色を変えてみたり、
0.5秒で待っているところを、2秒や0.1秒に変えてみたりすると、
どんな動きになるか、
色々試してみると楽しいですよ。
今後も、Raspberry Pi と Python を使ってワクワクするモノを作って行きます。
楽しみにしていてくださいね。
新しい記事を書くとTwitterでつぶやきます。
あと、下のTwitterアイコンからフォローしてもらうと、
記事を書くモチベーションが上がります♪
フォローお待ちしています。
不明な点があればページTOPの「お問い合わせ」にてご連絡下さい。