search
LoginSignup
7

More than 1 year has passed since last update.

posted at

updated at

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

ラズパイの入門とも言われる、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版に改良して使わさせて頂いています。

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
What you can do with signing up
7