ラズパイでRGBフルカラーLEDを使おう(1)
こんばんは。國松です。
今までは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を赤、緑、青と光らせる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #ライブラリのインポート 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の色の変化がわかりにくいのですが、実際には赤、緑、青の色にしっかりと変化していました。
色を指定する部分を関数化しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #ライブラリのインポート 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を制御していきたいと思います。