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

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

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

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

こんばんは。國松です。

前回はフルカラーLEDを7色まで点灯させました。しかし、フルカラーと名前がついているのに7色ではさみしいのでもう少し細かく色を制御したいと思います。そのために今回はpigpioのPWMを使っていきたいと思います。

参考サイト

vasco blog ~ゆとりの戯言~(フルカラーLEDを使ってみた(ソフト制御編))

Life with IT(pigpioライブラリでPWMを使ってLEDの明るさを変えてみる)

raspberry piでフルカラーLEDを扱う IoT編(その1 pigpio)

 

pigpioとは

ラズパイのGPIO制御ライブラリの1つです。これまでGPIOの制御にはRPi.GPIOとWringPIを使ってきました。第3のライブラリの登場です。pigpioは高速&高性能なGPIO操作が特徴です。

pigpioと他のライブラリの比較などは以下のサイトが参考になります。

参考サイト

からあげ(Raspberri PiのGPIO制御の決定版pigpioを試す)

pigpioのインストール

sudo apt-get update

sudo apt-get install pigpio

pigpioの使用

pigpioを使用する前には必ずpigpiodというデーモンを立ち上げる必要があります。

sudo pigpiod

毎回デーモンを立ち上げるのが面倒ならpigpioの自動起動を設定。

sudo systemctl enable pigpiod

sudo reboot

 

PWMとは

PWMとは『Pulse Width Modulation(パルス幅変調)』の略でパルス信号のデューティ比を変化させて変調する信号方式の事です。パルス信号とはOnとOffを繰り返す電気信号のことです。

 

デューティー比はパルス幅を周期で割ることで求められます。PWMはLEDの明るさを制御したり、モーターの速度制御、サーボモーターの角度制御などに用いられます。

周期(周波数)を保ったままデューティ比を変化させるとデューティ比が小さいときはLEDが暗く、デューティ比が大きいときはLEDが明るく点灯しているように見えます。

今回はこのPWMを使ってフルカラーLEDの色を制御していきたいと思います。

フルカラーLEDをグラデーション点灯させる

import pigpio
from time import sleep

#RGBのポート番号の設定
GPIO_R = 17
GPIO_G = 27
GPIO_B = 22

FREQ = 50   #pwm周波数
RANGE = 100 #pwmの範囲

#pigpioの設定
pi = pigpio.pi()

p = [GPIO_R, GPIO_G, GPIO_B]

for i in range(3):
    pi.set_PWM_frequency(p[i],FREQ)
    pi.set_PWM_range(p[i],RANGE)

try:
    d = [0,0,0]
    r = [3,5,7]
    while True:
        sleep(0.1)
        for i in range(3):
            pi.set_PWM_dutycycle(p[i],d[i])
            d[i] += r[i]
            if d[i] >= RANGE or d[i] <= 0:
                r[i] *= -1
                d[i] += r[i]
except KeyboardInterrupt:
    pass

for i in range(3):
    pi.set_mode(p[i],pigpio.INPUT)
pi.stop()

チカチカが激しく色の変化がよくわかりませんが7色より多く色を出せた気がしません。
正直pigpioライブラリーの使い方とpwmの理解が不足していたため動かす事で手一杯でした。再チャレンジしたいと思います。

 

    次の記事 :
    上に戻る