大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

ラズパイでRGBフルカラーLEDを使おう(1)

著者:國松亜紗子
公開日:2019/06/03
最終更新日:2019/06/03
カテゴリー:技術情報

こんばんは。國松です。

今まではLEDを使うときは赤色のLEDしか使ってきませんでした。少し赤色にも飽きてきたので違う色にしたいところです。そこで今回はフルカラーLEDを使っていきたいと思います。フルカラーLEDはひとつのLEDで色んな色を出せるお得なLEDです。

参考書籍

.やさしくはじめるラズベリー・パイ 電子工作でガジェット&簡易ロボットを作ってみよう【クジラ飛行机(著)】

 

用意するもの

・Raspberry Pi 3 Model B+

・ブレッドボード

・330Ωの抵抗×3

RGBフルカラーLED×1

・光拡散キャップ(これがないと色が綺麗に見えない)

(ラズパイとの接続)

RGBフルカラーLED

フルカラーLEDの中にはR(赤),G(緑),B(青)の3色のLEDが入っています。RGB(光の三原色の掛け合わせで)フルカラーを実現します。

4本の端子のうち3本はそれぞれの色のLEDに繋がっています。1本はカソードで各LED共通です(コモンカソード)。今回はコモンカソードのフルカラーLEDを使用しますが共通の端子がアノードのもの(コモンアノード)もあります。

フルカラーLEDを赤、緑、青と光らせる

#ライブラリのインポート
import RPi.GPIO as GPIO
import time, sys

#ポート番号の指定
RED = 17
GREEN = 27
BLUE = 22

#GPIOポートの初期化
GPIO.setmode(GPIO.BCM)
ports = [RED, GREEN, BLUE]
for port in ports:
    GPIO.setup(port, GPIO.OUT)

try:
    while True:
        GPIO.output(RED,1)
        GPIO.output(GREEN,0)
        GPIO.output(BLUE, 0)
        time.sleep(1)
        GPIO.output(RED,0)
        GPIO.output(GREEN,1)
        GPIO.output(BLUE,0)
        time.sleep(1)
        GPIO.output(RED,0)
        GPIO.output(GREEN,0)
        GPIO.output(BLUE,1)
        time.sleep(1)
except KeyboardInterrupt:
    pass
GPIO.cleanup()

動画は映りが悪くLEDの色の変化がわかりにくいのですが、実際には赤、緑、青の色にしっかりと変化していました。

色を指定する部分を関数化しました。

#ライブラリのインポート
import RPi.GPIO as GPIO
import time, sys

#ポート番号の指定
RED = 17
GREEN = 27
BLUE = 22

#GPIOポートの初期化
GPIO.setmode(GPIO.BCM)
ports = [RED, GREEN, BLUE]
for port in ports:
    GPIO.setup(port, GPIO.OUT)

#RGBを指定する関数
def set_rgb(r,g,b):
    GPIO.output(RED,r)
    GPIO.output(BLUE,g)
    GPIO.output(GREEN,b)
try:
    while True:
        set_rgb(1,0,0)  #Red
        time.sleep(1)
        set_rgb(0,1,0)  #Green
        time.sleep(1)
        set_rgb(0,0,1) #Blue
        time.sleep(1)
        set_rgb(1,1,0) #Yellow
        time.sleep(1)
        set_rgb(0,1,1) #Cyan
        time.sleep(1)
        set_rgb(1,0,1) #Magenta
        time.sleep(1)
        set_rgb(1,1,1) #White
        time.sleep(1)
except KeyboardInterrupt:
    pass
GPIO.cleanup()

コードと動画の色の順番が違ってますが、7つの色には変化しています。

GPIOはデジタル出力のためOnとOffしか出力できないためせっかくのフルカラーLEDでも2パターン(On/OFF)×3色(RGB)で7色しか表現できません。(消灯状態を除く)

それはもったいないので次回はPWM信号を使ってフルカラーLEDを制御していきたいと思います。

 

    前の記事 :
    上に戻る