LoginSignup
11
7

More than 3 years have passed since last update.

Raspberry Pi4 でLチカしてみた (Python編)

Last updated at Posted at 2020-04-19

ラズパイの入門とも言われる、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番目)につなげる。

このような感じで配線します。
IMG_3800.jpg

2.LED1個でLチカ

配線

上記1の配線を少し変ええるだけでできます。

”GPIO”の1番ピンにつながっていたジャンパー線を、11番ピン (左の上から6番目)につなぎ直します。もう1本のジャンパー線はそのままにします。

このような感じで配線します。
IMG_3797.jpg

プログラム

ラズパイ4では以下のwgetをしないと、LEDを点滅できません。

$ wget https://project-downloads.drogon.net/wiringpi-latest.deb 
$ sudo dpkg -i wiringpi-latest.deb #自動的に出るので" EnterKey "を押す

できたら次に…

$ gpio readall

以下のようなGPIO"の各ピンの情報が出れば準備完了です。

まずは手動制御でLチカさせてみましょう。

$ gpio -g mode 4 out #1回LEDが消える
$ gpio -g write 4 1 #点灯
$ gpio -g write 4 0 #消灯

次に自動で点滅させます。


$ sudo nano led1.py #新しいテキストを作成

その中に、以下を記入

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の"-"と同じ横列に差し込む。
  反対側はマイナスレーンに差し込む。

このような感じで配線します。
IMG_3796.jpg

プログラム


$ sudo nano led2.py
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の" - "と同じ横列に差し込む。
 反対側はマイナスレーンに差し込む。

このような感じで配線します。
IMG_3794.jpg

プログラム


$ sudo nano led4.py
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版に改良して使わさせて頂いています。

11
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7