Raspbian資料一覧

pigpioライブラリでPWMを使ってLEDの明るさを変えてみる

2016/10/10更新

対応バージョン: Raspbian Jessie Lite - September 2016

PWMを使ってLEDの明るさを変えてみる。

pigpioライブラリでPWMを使うには以下のメソッドを利用する。

set_PWM_frequency(GPIO番号, PWM周波数)

PWMの周波数(Hz)を指定。デフォルトは800。

set_PWM_range(GPIO番号, PWM最大値)

PWM値(μs)の最大値を指定。指定可能な値は25〜40000。デフォルトは255。

set_PWM_dutycycle(GPIO番号, デューティ比)

デューティ比(率ではなく値)を指定。0〜set_PWM_range()で指定した範囲の値を指定できる。

3メソッドとも、set_と対になるget_も存在する。

PWM関連のメソッドは他にもあるがここでは割愛する。詳しくはpigpioライブラリ公式サイトを参照のこと。

実装

ここではPWM周波数を50Hz、デューティを0〜100μsまで10μs刻みで増減させてみる。

結線は単純なGPIOポート22ピン(GPIO 25) → 抵抗(330Ω) → LEDのアノード(+) → LEDのカソード(-) → GPIOポート6ピン(GND)とする。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pigpio
from time import sleep

PIN = 25
FREQ = 50
RANGE = 100

pi = pigpio.pi()

pi.set_mode(PIN, pigpio.OUTPUT)
pi.set_PWM_frequency(PIN, FREQ)
pi.set_PWM_range(PIN, RANGE)

try:
    d = 0
    r = 10
    while True:
        pi.set_PWM_dutycycle(PIN, d)
        sleep(0.1)
        d += r
        if d >= RANGE or d <= 0:
            r *= -1

except KeyboardInterrupt:
    pass

pi.set_mode(PIN, pigpio.INPUT)
pi.stop()

関連資料・記事

参考サイト