gpiozeroライブラリ入門④import RGBLED
出力のLED、PWMLEDに続き、RGBLEDです。RGBのLEDが一つのパッケージに入っているデバイスです。それぞれの輝度が異なるけど、うまく制御すれば、きれいなフルカラーの表示が可能です。
一つのデバイスに電流制限抵抗を3個追加しないといけないので、複数個同時に使うときには配線量が多くなります。
数十以上利用する際は、NeoPixelなどのシリアルで接続しRGB値が制御できるLEDを検討するのがよいでしょう。
ここでは、アマゾンで入手したデバイスを利用します。
100個 5ミリメートル 4ピン RGB 共通 カソード 赤緑青 LED 電球 拡散光 レンズ
- R:波長630~640nm、明るさ1000~1200mcd、順方向電圧1.8~2.0V
- G:波長515~512nm、明るさ3000~5000mcd、順方向電圧3.2~3.4V
- B:波長465~475nm、明るさ2000~3000mcd、順方向電圧3.2~3.4V
使用環境
|
●RGBLEDクラス
クラスgpiozero.RGBLED(red, green, blue, *, active_high=True, initial_value=(0, 0, 0), pwm=True, pin_factory=None)フルカラーLEDコンポーネント(赤、緑、および青のLEDで構成)を動作させる。 共通カソード(最長の足)をGNDに接続する。 ほかのリード線(赤、緑、青のアノード)を任意のGPIOピンに接続する。 三つの電流制限抵抗(アノードごとに一つ)が必要。 パラメータ: red (int or str) – RGBLEDの赤コンポーネントを制御するGPIOピン。 有効なピン番号は、ピン番号を参照。 これがNoneの場合、GPIODeviceErrorが発生する。
|
●接続
電流制限抵抗、ここでは300Ωを直列にはんだ付けしました。抵抗値は数百Ωが目安です。1本だけ、リード線が少し長いです。これが共通カソードです。
さいしょに、次のように接続しました。
- 赤のアノード - GPIO2
- 緑のアノード - GPIO3
- 青のアノード - GPIO4
- 共通カソード - GND
プログラムです。
薄い水色です。
from gpiozero import RGBLED led = RGBLED(2, 3, 4) led.color = (0.11, 0.2, 0.5) |
明るくなったり暗くなったりします。
from gpiozero import RGBLED led = RGBLED(2, 3, 4) led.pulse() |
薄青色からピンク色に変化します。
from gpiozero import RGBLED from time import sleep led = RGBLED(2, 3, 4) for i in range(100): led.color=(i/100, 0.2, 0.5) sleep(0.1) |
表示する色を文字で指定できるようにしました。
from gpiozero import RGBLED led = RGBLED(2, 3, 4) def getColor(iro): color = \ ['red', (1,0,0)], \ ['green', (0,1,0)], \ ['blue', (0,0,1)], \ ['orange', (1,0.5,0)], \ ['yellow', (1,1,0)] k =[s for s in color if iro in s] print(k[0][1]) return k[0][1] led.color=(getColor('orange')) |
●GPIOポートの初期状態
ラズパイの電源が入ってから、GPIOポートには電圧がLowでないものがあります。たとえば、GPIO2/3はI2Cバス1で、1.8kΩの抵抗でプルアップされているので、初期値はHighです。単位はVです。
GPIO2 | 3.29 | - | |
GPIO3 | 3.29 | - | |
GPIO4 | 3.29 | 不定 | GPIO14 |
- | 3.27 | GPIO15 | |
GPIO17 | 0 | 0.01 | GPIO18 |
GPIO27 | 0.02 | - | |
GPIO22 | 0.02 | 3.27 | GPIO23 |
- | 0.01 | GPIO24 | |
GPIO10 | 3.29 | - | |
GPIO9 | 0.02 | 0.02 | GPIO25 |
GPIO11 | 0.01 | 3.29 | GPIO8 |
- | 3.29 | GPIO7 | |
GPIO5 | 3.27 | - | |
GPIO6 | 3.27 | 3.27 | GPIO12 |
GPIO13 | 3.27 | - | |
GPIO19 | 0.02 | 0.01 | GPIO16 |
GPIO26 | 0.01 | 0.01 | GPIO20 |
- | 0.02 | GPIO21 |
gpiozero Copyright 2015-2020 Ben Nuttall