PICO搭載のLEDを点滅などさせてプログラム動作状況を示すことをしてましたが、RGB-LEDでフルカラー表示できればエエやん!ということでやってみました。

 

■参考出典

LED基本ガイド
https://www.marutsu.co.jp/pc/static/large_order/led?srsltid=AfmBOoqTeo5te2BY9r-35ZK6LTPvJewmYiVbslYuKriuJBdHfDbeU6g-
これ基本!マルツさんありがとうございます。勉強になりました。

 

■RGB-LED

メーカー:Optosupply

形式:RGBフルカラーLED 5mm OSTA5131A カソードコモン

購入先:秋月電子

 

カソードコモンです。

↑これ出典忘れました。

 

Optosuppyのデータシートから抜粋

緑が強く、赤が弱いようです。

出力のバランスどりをしないと色の感じが合わないですね。

でもこれはLEDとしては当たり前のことのようです。

 

■結線

GPIOから1KΩを経てLEDのアノードへ入り、コモンからGNDへ至ります。

写真にはOLEDや端子台も写ってますが、今回は使いません。

 

↑PICO専用のICソケットを購入しました。
表示がわかりやすいし、PICOのピン保護にもなります。

少し高いですが初心者にはグーだと思いました。

また、ブレッドボードにLEDを直接挿すと安定しにくいのでソケットピンで結線。

コモン端子(今回はカソード)は内部電極が大きいので、横からみてピン特定。

 

■コード

検索すると多々参考コードがあります。

クラスライブラリにする場合と直接PWM動作させる場合の概ね2通りのようです。
ライブラリ使うほうがメインルーチンが簡潔になりますが、

それはそれでブラックボックスでもありますから、

今回は動作の勉強を兼ねたく、PWMを直接記述しました。

結果的にコードはくどい、長い表現で無駄が多々ありますが、

思い出しやすいようにしました。

 

#led_pwm_test,py これをPICOのmain.pyとして書き込むだけ
#https://randomnerdtutorials.com/raspberry-pi-pico-pwm-micropython/
#インポート:micropythonの標準ライブラリのみ
from  time import sleep
from machine import Pin , PWM
 

#3行程度で書けそうな内容をあえて分解記述

#set num on GPIO
GP02 = 2
GP03 = 3
GP04 = 4

#setting instance of pin for led
pin_red    = machine.Pin( GP02 )
pin_green = machine.Pin( GP04 )
pin_blue   = machine.Pin( GP03 )
#setting instance of pwm at each led
pwm_red      = PWM ( pin_red )
pwm_green   = PWM ( pin_green )
pwm_blue     = PWM ( pin_blue )
#setting frequency of pwm at each led
freq_pwm = 5000
pwm_red.freq(freq_pwm)
pwm_green.freq(freq_pwm)
pwm_blue.freq(freq_pwm)

#main routine
try:
    while True:
        pwm_red.duty_u16(30000)
        pwm_green.duty_u16(9000)
        pwm_blue.duty_u16(12000)
        # RGBそれぞれこの値ぐらいに差を設けないと同じ明るさに見えない

        sleep(1.000)
        pwm_red.duty_u16(0)
        pwm_green.duty_u16(0)
        pwm_blue.duty_u16(0)
        sleep(1.000)
except KeyboardInterrupt:
    print("Keyboard interrupt")
    #消灯とPWM設定解消

    pwm_red.duty_u16(0)
    pwm_green.duty_u16(0)
    pwm_blue.duty_u16(0)
    pwm_red.deinit()
    pwm_green.deinit()
    pwm_blue.deinit()

 

■結果

点灯しました。(当然)

が、横からですと色がわかりません。

データシートを見ますと・・・

あ、砲弾型LEDは光度曲線がすごい狭角ですね。

 


真上からだとこんな感じ。

なんとなく色が混じって白っぽく写ってます・・・

が、目視ですとRGB個々のLEDが分離して光っています。

白い拡散樹脂板などで混ぜると多少らしく見えますが、、、

この狭角型だとフルカラーを色々表現するのはしんどいです。

RGBとその単純な組み合わせぐらいなら使えそうです。

 

■RGB-LED(フラックス型)

ちなみにOptosupplyの↓このLEDもあるのですが、、、

 

オプトサプライ角型フルカラーLED(RGBLED) OSTBMAZ2C1D アノードコモン

こちらはアノードコモン、青が一番弱いようです。

ただし小さい!(目的がそうだから)

単体ではピンが重なってブレッドボードに挿せる場所がありません。

別途準備したユニバーサル基板にはんだ付けしてピンを立てたのですが、

基板が独立ランドだけなので、結線も小さくてものすごくやっかいでした。しかも結局のところ点灯しませんでした。
テスターでピン接続を当たっていたら赤だけ光る・・・他は光らず。。。

熱で駄目にしたのかもしれません。

これ結構たくさん買っちゃったんですけど、しばらく放置します。

 
 
以上、とりあえずRGB-LEDの使い方がおおよそわかりました。