【ラズパイ電子工作】LEDをチカチカ点滅させる方法(for文で回数指定)

【ラズパイ電子工作】LEDをチカチカ点滅させる方法(for文で回数指定)

ラズベリーパイは基板上に「GPIO」と呼ばれる、ラズベリーパイ上で作成したプログラムから信号の入力・信号の出力といった制御をすることができるピンが存在します。

信号の入力とは「スイッチのON/OFF」「温度計で室温の計測」といった、ラズベリーパイの外の情報を入力(インプット)してプログラム上で使用することです。

対して、信号の出力とは「LEDを点灯させる」「モータを回す」といった、ラズベリーパイで制御した結果を外に出力(アウトプット)することです。

この記事では、ラズベリーパイのプログラム(Python)からGPIOピンを用いてLEDを0.5秒の間隔で5回チカチカ点滅させる方法について解説します。

注意
この記事中に記載されている内容はソースコード含めて電気設計人が自己流で行ったものです。一般的な方法とは相違がある可能性がありますので予めご了承ください。

1. 完成イメージ(LEDを0.5秒の間隔で点滅する)

この記事で完成するものは以下のようになります。

10_完成イメージ

ラズベリーパイのGPIOピンをブレッドボードに接続して、プログラム(Python)からLEDを0.5秒の間隔で5回点滅させます。

メモ
5回点滅した後、LEDは消灯します。

2. 使用する部品

今回使用する部品は以下の通りです。

ラズベリーパイ本体(モデル3B+)

20_ラズベリーパイ3B+

『Raspberry Pi 3 Model B+』を使用します。※2019年12月時点で最新はRaspberry Pi 4になります。

ブレッドボード

20_ブレッドボート

LEDや抵抗といった各種部品や(後述する)ジャンパ線などを穴に差し込み、部品間を電気的に接続する板(ボード)です。

電子工作をする上で必須の部品です。

ジャンパ線

20_ジャンパ線

ブレッドボートに差し込み、電子部品の間を電気的に接続します。

↑の写真では両側が「ピン」になっており、ブレッドボートの穴に差し込んで使用します。

LED(発光ダイオード)

20_LED

日常生活でも馴染みがある方も多いLEDは「Light emitting diode」の略で、発光ダイオードと呼ばれています。

電子工作で頻繁に使用するLEDは極性があり、プラスとマイナスを逆に接続しても光りません。プラス側をアノード(Anode)、マイナス側をカソード(Cathode)とも呼びます。

メモ
LEDの足が長い方がプラス側(アノード)、マイナス側(カソード)です。逆に接続しないように注意してください。

カーボン抵抗器

20_抵抗器

LEDなど電子部品は適した電圧と電流が決められており、それ以上の電流を流してしまうと壊れてしまう場合があります。

抵抗は電流の流れを抑えることで、部品に流れる電流を抑える役割を担います。

今回は220Ω(オーム)の抵抗器を使用します。

オススメの電子工作セット

電子工作をするため、これまで解説した部品の他にもスイッチやセンサなど、色々な部品が必要になってきます。個々で購入するには手間がかかるため、最初はセット品を購入することをおススメします。

電気設計人
電気設計人

私は以下のセット品を購入しました!

また、これからラズベリーパイを購入する場合、ラズベリーパイ本体を含めたセット品を購入することをおススメします。

ラズベリーパイ本体を収めるケースや、OSをインストールするためmicroSDカードなど必要なものを個々に購入する手間を省くことができます。

3. 回路図・配線の様子

ラズベリーパイのプログラム(Python)からGPIOピンを用いてLEDを0.5秒の間隔で点滅させる回路を解説します。

回路図

回路図は以下のようになります。

30_回路図

ラズベリーパイの「GPIO 18番ポート」とLEDのプラス側(アノード)を接続します。(オレンジ色のジャンパ線)

LEDのマイナス側(カソード)と抵抗(220Ω)を接続して、抵抗とGNDを接続します。(黒いジャンパ線)

メモ
抵抗器に極性はありませんので、プラスとマイナスは気にしなくてOKです。

配線の様子

配線の様子です。こんな感じになりました。

30_配線の様子

↑では、フラットケーブルでGPIOの全ピンをブレッドボードに接続しています。回路図と実際の配線は異なる部分がありますがご了承ください。

※電気的には「回路図」と同じ意味です。

4. プログラム(Python)

LEDを0.5秒の間隔で5回点滅させるプログラム(Python)は以下のようになります。

ソースコード

#必要なモジュールをインポート
import RPi.GPIO as GPIO             #GPIO用のモジュールをインポート
import time                         #時間制御用のモジュールをインポート

#ポート番号の定義
Led_pin = 18                        #変数"Led_pin"に18を格納

#GPIOの設定
GPIO.setmode(GPIO.BCM)              #GPIOのモードを"GPIO.BCM"に設定
GPIO.setup(Led_pin, GPIO.OUT)       #GPIO18を出力モードに設定

#for文で5回繰り返す
for i in range(5):
    GPIO.output(Led_pin, GPIO.HIGH)     #GPIO18の出力をHigh(3.3V)にする
    time.sleep(0.5)                     #5秒間待つ
    GPIO.output(Led_pin, GPIO.LOW)      #GPIO18の出力をLow(0V)にする
    time.sleep(0.5)                     #5秒間待つ

GPIO.cleanup()                      #GPIOをクリーンアップ

極端に言うと、GPIOの18番ポートの電圧をプログラム(Python)から「High(3.3V)にしてLEDを点灯」と「Low(0V)にして消灯」をfor文で5回繰り返すプログラムです。

プログラムの解説

#必要なモジュールをインポート
import RPi.GPIO as GPIO             #GPIO用のモジュールをインポート
import time                         #時間制御用のモジュールをインポート

2行目と3行目で、LEDを0.5秒の間隔で点滅させるために必要な「モジュール」を宣言します。

#ポート番号の定義
Led_pin = 18                        #変数"Led_pin"に18を格納

変数”Led_pin”に18を格納します。後からGPIOのポート番号を変更する場合はここを変更します。

#GPIOの設定
GPIO.setmode(GPIO.BCM)              #GPIOのモードを"GPIO.BCM"に設定
GPIO.setup(Led_pin, GPIO.OUT)       #GPIO18を出力モードに設定

GPIOの設定を行います。

GPIO.setmode(GPIO.BCM)は、GPIO.setmode()を用いてGPIOをポート番号で扱う方法に設定します。

GPIO.setup(Led_pin, GPIO.OUT)は、GPIO.setup()を用いてGPIO 18番ポートを出力モードに設定します。

#for文で5回繰り返す
for i in range(5):
    GPIO.output(Led_pin, GPIO.HIGH)     #GPIO18の出力をHigh(3.3V)にする
    time.sleep(0.5)                     #5秒間待つ
    GPIO.output(Led_pin, GPIO.LOW)      #GPIO18の出力をLow(0V)にする
    time.sleep(0.5)                     #5秒間待つ

「for文」と「range()関数」を用いて繰り返し処理の回数を指定します。

Python
for 変数 in range(繰り返す回数):
    繰り返し処理を行うコード

↑の「繰り返す回数」に”5”を指定することにより、繰り返し処理を5回としています。繰り返す回数を変更する場合はここを変更します。

GPIO.output(Led_pin, GPIO.HIGH)は、GPIO 18番ポートの電圧をHigh(3.3V)にします。ここでLEDは3.3Vが印加され点灯します。

time.sleep(0.5)は、何もせずに0.5秒間待ちます。この処理を行うために2行目でtimeモジュールをインポートしています。

GPIO.output(Led_pin, GPIO.LOW)は、GPIO 18番ポートの電圧をLow(0V)にします。ここでLEDは消灯します。

for文の中(14~17行目)でGPIO 18番ポートを、High(3.3V)⇒0.5秒待つ⇒Low(0V)⇒0.5秒待つ処理を5回繰り返します。

5. おわりに

ラズベリーパイのGPIOピンを用いてプログラム(Python)からLEDを0.5秒の間隔で5回点滅させる方法を解説しました。

while文を使用して、LEDを無限に点滅する方法については以下のページで解説しておりますので、宜しければご覧ください。

【ラズパイ電子工作】LEDをチカチカ点滅させる方法(while文で無限ループ) 【ラズパイ電子工作】LEDをチカチカ点滅させる方法(while文で無限ループ)

まだまだラズベリーパイ初心者の私ですが、以下の参考書が大変参考にさせて頂いております。

2冊とも初学者にも易しい内容になっており、ゼロからラズベリーパイを始める方にもオススメできる参考書です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です