Raspberry Pi と Python を使って 【ボタン押で、LED点灯】

electric

今回は、Rasoberry Pi と Python を使って、
ボタンを押している間だけ、LEDを点灯させます。

この記事では以下が学べます。

LED制御配線・プログラミング
ボタン制御配線・プログラミング
Python電気信号の入力
電気信号の出力

やりたいこと

・ボタンを押している間、LEDを点灯させる

システム構成図

やることリスト

上記の「やりたいこと」をみて、
どんな作業が必要か、自分で項目を考えてみてください。
これを考えることで、「プログラミング的思考」が身に付いていきます。

番号作業項目備考

やりたいこと・システム構成図の作成
やることリストの作成作業項目の洗い出し
部品の準備
LEDを点灯させる
ボタンが押されたことを判断する
機能のまとめ上記機能を組み合わせて、
やりたいことを作って行きます

部品の準備

今回のシステムに必要な部品です。
不足している部品があれば購入下さい。

部品名備考
Raspberry Pi別途、電源・SDカード・HDMIケーブルが必要です。
ブレッドボード(※1)
ジャンパー線(※1)オスーメス:4本
LED(※1)LED:1個
ボタン(※1)タクトスイッチ:1個

購入に必要な部品を、
Raspberry Pi 関連に記載しています。
※1)「電子工作キット」内に全て含まれています。

ラズパイは、電源を入れただけでは起動しません。
ラズパイの起動手順の記事を参照ください。

LEDを点灯させる

配線図

部品の説明

以下記事「部品の説明」の章で、
ブレッドボード・LED・抵抗 の説明をしています。参照ください。

Raspberry Pi と Python を使った【 Lチカ 】(LED点灯/消灯)
このサイトを立ち上げて最初の電子工作の記事です。やはり、電子工作の最初の一歩と言えば、「Lチカ」ですよね~。ということで、私も最初の記事は「Lチカ」にします。楽しそうだったら作ってみて♪やりたいこと・Raspberry...

電流の流れ

ラズパイの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

ボタンが押されたことを判断する

以下記事「ボタンが押されたことを判断する」の章で、
回路図・配線図・部品の説明・プログラム の説明をしています。
参照ください。

Raspberry Pi と Python を使って【天気予報】を喋らせる
今回は、ボタンを押したら、地元の天気予報を喋ってもらおうと思います。楽しそうだったら作ってみて♪この記事では以下が学べます。ボタン制御スピーカー出力PythonWebAPI(外部情報取得)音声合成(発話)やりた...

機能のまとめ

これまで作成した上記機能を組み合わせて、
「ボタンを押している間、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の「お問い合わせ」にてご連絡下さい。

タイトルとURLをコピーしました