注目キーワード
  1. Photoshop
  2. Python
  3. Raspberry Pi
  4. Arduino

ラズパイでRGBフルカラーLEDを制御してみる

ここでは「Raspberry Pi」と「フルカラーLED」を使ってLEDの点滅制御の方法を紹介します。

 

この記事を読むことで

フルカラーLEDの基礎知識

ラズパイでフルカラーLEDを3色別々に制御する方法

 

を知ることができるので

 

taku

電子工作が趣味の方

ロボットなどの機体にフルカラーLEDを搭載したい方

は是非挑戦してみてください。

 

それでは早速始めていきましょう!

 

フルカラーLED制御の準備

まずはフルカラーLEDを制御するための下準備をしていきます。

 

LEDの制御に使用する部品

まずはサクッとLED制御に使用する部品を紹介していきます。

 

使用する電子部品

ブレッドボード

ジャンパー線(より線 or 単芯線)

抵抗、可変抵抗

RGBフルカラーLED

raspi-3led-02

今回はラズパイのGPIOピンに接続したいので、メス-オスのジャンパー線(より線)を使用します。

抵抗については、LEDを過電流で壊さない抵抗値の抵抗なら何でも構いません。

また、可変抵抗を用意するとLEDの明るさを任意に変えることも可能です。

 

これだけ揃っていれば、問題ありません。

 

ラズパイ側の準備

続いて、ラズパイ側の下準備をします。

既にGPIOピンの入出力を使って電子工作をしている方は飛ばしてください。

 

まず、GPIOピンを制御するためのライブラリをラズパイ側へインストールします。

GPIOピンを制御するためのライブラリは有名どころで

RPi.GPIO

WiringPi

pigpio

があります。

 

その他、GPIO制御ライブラリ一覧は「FabShop」さんのこちらのサイトが勉強になります。

FabShop:改訂Raspberry Piで使えるPythonのGPIO制御ライブラリ一覧表

 

今回はこの中から扱いやすい「RPi.GPIOライブラリ」を使用するので、さっそくpipでインストールします。

 

sudo pip install RPi.GPIO

とコマンドを入力してRPi.GPIOライブラリをインストールしましょう。

 

インストールができたら、GPIOピンが反応しているかを

gpio readall

コマンドで確認をします。

raspi-3led-03

このように各GPIOピンのピン番号リストが表示されていれば、問題ありません。

 

もし「gpio readall」コマンドを実行して

Oops – unable to determine borad type… model: 17

と表示されたら

wget https://project-downloads.drogon.net/wiringpi-latest.deb

sudo dpkg -i wiringpi-latest.deb

を実行してみてください。

この後に「gpio readall」コマンドを打つと、上図のような実行結果が表示されると思います。

これでラズパイ側の下準備は完了です。

 

フルカラーLEDの基礎知識

続いて、RGBフルカラーLEDの各ピンについて確認しておきます。

raspi-3led-01

RGBフルカラーLEDには4本のピンがあり、その内

一番長いピンが「アノードコモン/カソードコモン」の共通ピン

一番短いピンが緑色のLEDに対応したピン

になります。

これは忘れやすいので、この二つだけ覚えておけばよっぽど大丈夫かと思います。

 

また、アノードコモンとカソードコモンかはLEDによって異なるのでこちらも注意が必要で

アノードコモン:+側共通 ➡ 電源が共通

カソードコモン:-側共通 ➡ GNDが共通

と覚えておきましょう。

 

この判別は実際にLEDの回路を組んでみれば分かるもので

アノードコモンの場合

各GPIOピンが出力の役割

共通ピンが入力(Vin)の役割

をするので、共通ピン(一番長いピン)をラズパイの3.3 / 5Vのピンに繋げる必要があります。

 

カソードコモンの場合

各GPIOピンが入力の役割

共通ピンが出力(GND)の役割

をするので、共通ピンをラズパイのGNDピンに繋げる必要があります。

 

手持ちのフルカラーLEDがどちらのタイプかをチェックしてからプログラムを実行するようにしましょう。

 

フルカラーLEDを制御する

では下準備やRGBフルカラーLEDの基礎知識を確認したので、実際に回路とプログラムを作成していきます。

 

フルカラーLEDの回路

まずはフルカラーLEDとラズパイを使って回路をブレッドボード上で組んでいきます。

 

今回使用したRGBフルカラーLEDは「カソードコモン」なので、下図では「橙色のジャンパー線➡ラズパイGND」へ接続しています。

raspi-3led-04

あとは左から順にラズパイのGPIOピン「16、20、21」へ接続して、回路の完成です。

 

フルカラーLEDの点滅プログラム

回路が組めたら、ラズパイ側でPythonプログラムを書いていきます。

3led_test.py

import RPi.GPIO as GPIO
import time
import sys

# GPIOピンの定義
r_pin = 16
b_pin = 20
g_pin = 21

pin = [r_pin, b_pin, g_pin]    # ピン番号を配列へ格納
pin_num = len(pin)    # ピン番号の数を取得

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

for i in range(pin_num):
    GPIO.setup(pin[i], GPIO.OUT)    # 各ピンを出力モードへ
 
while True:
    try:
        print("\n" + "赤色")
        GPIO.output(pin[0], True)    # GPIO.HIGH or Trueで点灯
        time.sleep(1)
        GPIO.output(pin[0], False)    # GPIO.LOW or Falseで消灯
        time.sleep(1)

        print("\n" + "青色")
        GPIO.output(pin[1], True)    # GPIO.HIGH or Trueで点灯
        time.sleep(1)
        GPIO.output(pin[1], False)    # GPIO.LOW or Falseで消灯
        time.sleep(1)

        print("\n" + "緑色")
        GPIO.output(pin[2], True)    # GPIO.HIGH or Trueで点灯
        time.sleep(1)
        GPIO.output(pin[2], False)    # GPIO.LOW or Falseで消灯
        time.sleep(1)

    except KeyboardInterrupt:
        GPIO.cleanup()
        print("\n" + "RGBフルカラーLEDのテストプログラムを終了します。")
        sys.exit()

 

ラズパイでPWMサーボを制御するときも同じことが言えますが、GPIOピンを配列でまとめておくと、定義式の一箇所を変えるだけで様々なピンへの対応が可能なのでオススメです。

 

これを

sudo python 3led_test.py

と実行して動作確認をしてみると(3倍速)

raspi-3led-05

フルカラーLEDが点滅して、赤➡青➡緑と色が変わっていることが確認できますね。

 

あとは好きな色を好きな秒数分に設定して、機体の眼球に組み込んであげると3色に光る目の出来上がりです。

ということで、RGBフルカラーLEDの制御方法でした。

 

お疲れ様でした。

raspi-3led-top-thumbnail
学びに関する情報をチェック!