ラズパイの入門とも言われる、LEDの制御、通称”Lチカ”。
Pythonを使って、Raspberry Pi 4で行った。
#準備するもの
- Raspberry Pi 4 Model B
- ブレッドボード(1台)
- ジャンパー線 オスーオス(4本)
- ジャンパー線 オスーメス(5本)
- 330Ω の抵抗(4つ)
- LED(4個)
#1.LED1個を光らせる
ラズパイがいわば電池の役割を果すので、プログラムをしなくてもLEDを点灯させられます。
####配線
1.ジャンパー線のオスーメスケーブルを”GPIO”の** 1番ピン** (左の上から1番目)につなげる。
2.ブレッドボードに反対側を差し込む。
3.抵抗の片足をジャンパー線と同じ横列に差し込む。
4.LEDの+側を、抵抗の反対の足と同じ横列に差し込む。
※ LEDでは、足が長い方が" + "、短い方は" - "です。
注意してください。
5.別のジャンパー線のオスーメスケーブルをLEDの"-"と同じ横列に差し込む。
6.反対側は”GPIO”の** 6番ピン **(右の上から3番目)につなげる。
#2.LED1個でLチカ
####配線
上記1の配線を少し変ええるだけでできます。
”GPIO”の1番ピンにつながっていたジャンパー線を、11番ピン (左の上から6番目)につなぎ直します。もう1本のジャンパー線はそのままにします。
####プログラム
ラズパイ4では以下のwgetをしないと、LEDを点滅できません。
$ wget https://project-downloads.drogon.net/wiringpi-latest.deb
$ sudo dpkg -i wiringpi-latest.deb #自動的に出るので" EnterKey "を押す
できたら次に…
$ gpio readall
まずは手動制御でLチカさせてみましょう。
$ gpio -g mode 4 out #1回LEDが消える
$ gpio -g write 4 1 #点灯
$ gpio -g write 4 0 #消灯
次に自動で点滅させます。
$ sudo nano led1.py #新しいテキストを作成
その中に、以下を記入
#LED1個でLチカ
import RPi.GPIO as GPIO
import time
PNO = 17 # 抵抗に繋いだ側の、GPIOポート番号
GPIO.setmode(GPIO.BCM)
GPIO.setup(PNO, GPIO.OUT)
for i in range(15):
GPIO.output(PNO, GPIO.HIGH) # 点灯
time.sleep(0.4)
GPIO.output(PNO, GPIO.LOW) # 消灯
time.sleep(0.4)
GPIO.cleanup()
" control " + " X "を押下、" y "を押してEnterで保存完了です。
" for i in range( ): "の"range"には、点滅させる回数を入力します。
" time.sleep( ) "では、点灯時間、消灯時間を入力できます。
例として、上のテキストでは、15回点滅し、0.4秒点灯、0.4秒消灯します。
また、" HIGH "の時は点灯し、" LOW "の時に消灯します。
※ ピン番号とポート番号は別なのでご注意を。
$ python led1.py
で実行します。
#####コマンドの豆知識
$ sudo nano ファイル名 #新規テキスト作成や編集をする時
$ nano ファイル名 #テキストを見るだけの時
$ cp コピーするファイル名 コピーしたファイル名 #ファイルのコピー
$ rm ファイル名 # ファイルの削除
$ python ファイル名 #ファイルのプログラム等を実行
#3.LED2個でLチカ
上記2の配線に、もう1つLEDを追加させて、LEDを交互に点滅させます。
###配線
1.6番ピンに差し込んでいるジャンパー線の反対側をブレッドボードのマイナスレーンに差し込む。
2.抵抗、LEDを上記1と同じようにもう1セット差し込む。
3.ジャンパー線のオスーメスケーブルを”GPIO”の** 13番ピン** (左の上から7番目)につなげる。
反対側をブレッドボードに差し込む。
4.それぞれジャンパー線のオスーオスケーブルをLEDの"-"と同じ横列に差し込む。
反対側はマイナスレーンに差し込む。
###プログラム
$ sudo nano led2.py
#LED2個でLチカ
import RPi.GPIO as GPIO
import time, sys
GPIO.setmode(GPIO.BCM)
PORT_L = 17
PORT_R = 27
GPIO.setup(PORT_L, GPIO.OUT)
GPIO.setup(PORT_R, GPIO.OUT)
while True:
try:
GPIO.output(PORT_L, GPIO.HIGH) # 左点灯
GPIO.output(PORT_R, GPIO.LOW)
time.sleep(0.4)
GPIO.output(PORT_L, GPIO.LOW) # 右消灯
GPIO.output(PORT_R, GPIO.HIGH)
time.sleep(0.4)
except KeyboardInterrupt:
GPIO.cleanup()
sys.exit()
ファイルを保存して・・・
$ python led2.py
で実行します。
このテキストでは回数を決めずにLチカをさせているので、" control " + " C "で終了させます。
#4.LED4個でLチカ
順番に光って を繰り返すLチカをします。
###配線
上記3の配線に、抵抗とLED、ジャンパー線を増やします。
1.抵抗、LEDを上記1と同じようにもう2セット差し込む。
2.ジャンパー線のオスーメスケーブルを”GPIO”の** 15番ピン** (左の上から8番目)につなげる。
反対側をブレッドボードに差し込む。(3個目のLEDへ)
3.”GPIO”の** 19番ピン** (左の上から10番目)にジャンパー線のオスーメスケーブルをつなげる。
反対側をブレッドボードに差し込む。(4個目のLEDへ)
4.それぞれジャンパー線のオスーオスケーブルをLEDの" - "と同じ横列に差し込む。
反対側はマイナスレーンに差し込む。
###プログラム
$ sudo nano led4.py
#LED4個でLチカ
import RPi.GPIO as GPIO
import time, sys
GPIO.setmode(GPIO.BCM)
ports = [17,27,22,10];
for i in ports:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, GPIO.HIGH)
def led_on(no):
for i, port in enumerate(ports):
if no == i:
v = GPIO.HIGH
else:
v = GPIO.LOW
GPIO.output(port, v)
while True:
try:
for i in range(0, 4):
led_on(i)
time.sleep(0.2)
for i in range(3, -1, -1):
led_on(i)
time.sleep(0.2)
except KeyboardInterrupt:
GPIO.cleanup()
sys.exit()
ファイルを保存して・・・
$ python led4.py
で実行します。
上記3と同じように" control " + " C "で終了させてください。
#応用
下記の記事にて、応用として信号機の動きを再現したプログラムを載せています。
ぜひ、トライしていただければ嬉しいです。
ラズパイ4で信号機もどきを作ってみた (Python編)
#参考図書
クジラ飛行机 著
「やさしくはじめるラズベリー・パイ 電子工作でガジェット&簡易ロボットを作ってみよう」
ーマイナビ出版
※ 本記事では上記の図書を参考にRaspberry Pi 4版に改良して使わさせて頂いています。