Lチカを応用して、10連Lチカ+Lピカをしていきます!
前回のLチカプログラムを少し書き加えて、複数のLEDを光らせてみました!
本記事のゴール
Pythonを使って複数のLEDを制御!
結果が気になる人は、「Contents」の「結果」へと飛んでください!
Contents
準備
使用した部品
使用部品
- ラズベリーパイ zero WH
- Type-Bの充電ケーブル
- ブレッドボード
- ジャンプワイヤー
- LED Bar Graph
- 抵抗(220Ω)×10
今回は10個のLEDを光らせるため、抵抗も10個使用します。
また、LED Bar Graphは初心者キットに付属していたものを使用します。
2PCS LED Display Module 10 Segment Bargraph Light Display Module Bar Graph Ultra Bright Red Yellow Green Blue Colors Multi-color
【Amazonのページへ移動します】
これはLEDがまとまっているだけなので、LEDを10個組み合わせるのと大きな違いはありません。
配線
配線した時の写真です。
部品の数が多く、ごちゃごちゃしていて分かりにくいですね笑
回路図を載せておきます。
10個LEDを光らせるので、部品の数も多くなっています。
ですが、やっていることはLED1個の時と同じです笑
Pythonでプログラム作成・実行
Lチカで作成したプログラムを基にして書いていきます。
とは言ってもやっていることは変わりないので、プログラム自体は簡単です。
簡単ですがPythonに慣れていない自分にとっては多少つまる所もあったので、自身のアウトプットを兼ねて解説していきます。
Pythonで10連Lチカ
プログラムを作成していきます。
まずは完成したコードを見ましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO #Read GPIO library import time #Read time LED_Pin = [17,18,27,22,23,24,25,2,3,8] #Use BCM number LED_time = 0.2 GPIO.setmode(GPIO.BCM) #Set BCM number GPIO.setup(LED_Pin, GPIO.OUT) #Set output BCM number GPIO.output(LED_Pin,1) #Initial Condition for n in range(10): i = n print('LED ON',i) GPIO.output(LED_Pin[i],0) time.sleep(LED_time) if i==9: time.sleep(2.0*LED_time) GPIO.output(LED_Pin[i],1) time.sleep(LED_time) GPIO.cleanup() #Release GPIO |
1~5行目
1 2 3 4 5 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO #Read GPIO library import time #Read time |
Lチカの記事で解説しているのでそちらを見て下さい。
7~8行目
1 2 |
LED_Pin = [17,18,27,22,23,24,25,2,3,8] #Use BCM number LED_time = 0.2 |
LED_PinにはLEDが接続されているBCM番号を入れています。
BCM番号というのはLEDとラズパイが接続されているピンの番号で、ピンを識別するための手段がBCM番号というイメージです。
LED_timeはLEDが光っている時間を表しています。
10~11行目
1 2 |
LED_Pin = [17,18,27,22,23,24,25,2,3,8] #Use BCM number LED_time = 0.2 |
Lチカの記事で解説しているのでそちらを見て下さい。
13行目
1 |
GPIO.output(LED_Pin,1) #Initial Condition |
初めに電圧を加えることで電圧差を無くし、LEDが光らないようにしています。
15~25行目
1 2 3 4 5 6 7 8 9 10 11 |
for n in range(10): i = n print('LED ON',i) GPIO.output(LED_Pin[i],0) time.sleep(LED_time) if i==9: time.sleep(2.0*LED_time) GPIO.output(LED_Pin[i],1) time.sleep(LED_time) |
10個のLEDを光らせたいので、繰り返しを10回させています。
プログラム内の「i」は「LED_Pin」での値を参照するために使用しています。
「GPIO.output(LED_Pin[i],0)」は「LED_Pin[i]」に該当するピンの電圧を0Vにすることを指示しており、これにより電圧差が生じLEDが光ります。
if文は、最後のループで光るLEDが通常の2倍の時間光るために書きました。
こうした方が終了の感覚が視覚的に分かると思ったので笑
「GPIO.output(LED_Pin[i],1)」で電圧差をなくすことでLEDが光るのを止めます。
以上がプログラムの説明になります。
結果:10連Lチカの実行!!
それではプログラムを動かして10連Lチカしましょう!
Pythonで10連Lピカ
さきほど作ったプログラムを使ってもう少し遊んでみます。
とは言っても、一行だけコメントアウトするだけです笑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO #Read GPIO library import time #Read time LED_Pin = [17,18,27,22,23,24,25,2,3,8] #Use BCM number LED_time = 0.2 GPIO.setmode(GPIO.BCM) #Set BCM number GPIO.setup(LED_Pin, GPIO.OUT) #Set output BCM number GPIO.output(LED_Pin,1) #Initial Condition for n in range(10): i = n print('LED ON',i) GPIO.output(LED_Pin[i],0) time.sleep(LED_time) if i==9: time.sleep(2.0*LED_time) #GPIO.output(LED_Pin[i],1) time.sleep(LED_time) GPIO.cleanup() #Release GPIO |
どこをコメントアウトしたか気づきましたか・・・?
24行目の「GPIO.output(LED_Pin[i],1)」をコメントアウトしました。
これにより、一度点灯したLEDはそのまま光り続けます。
つまりLピカですね!!
結果:10連Lピカの実行!!
それではプログラムを動かして10連Lピカしましょう!
まとめ:10連Lチカ+Lピカをやってみた!
今回は複数のLEDを光らせる・・・10連Lチカ+Lピカをしました!
やっていることは単純ですが、ラズパイ初心者の自分としては理解を深めるのに役立ちました。
またPythonも初心者ですが、目的をもってプログラムを書くことで身についています!
ラズパイを買って良かったと心底思います!!

こちらもCHECK
-
-
ラズパイ初心者が電子工作【購入~OS導入】
ラズパイ初心者が、ラズパイと周辺機器を購入し、OSをインストールしたのでその手順について話していきたいと思います。 電子工作をしたいと思っているけど、初心者で実際にどうやれば良いのか分からないという人 ...
続きを見る