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