ラズパイでLチカをやるには、抵抗を噛ませなければいけないので、ブレッドボードを使ったりするのですが、PCA9685は内部に220Ωの抵抗が入っているので、外部抵抗なしでLEDを接続できるのです。(マニュアルのp7,p16参照)
そこで昨日のsinpletest.pyをもとに、PCA9685でLチカをやってみたいと思います。
コメントは削って、必要な部分だけ抜き出し、ledの記述を追加したプログラムがこちら。
import time
import Adafruit_PCA9685
pwm = Adafruit_PCA9685.PCA9685()
servo_min = 150
servo_max = 600
led_min = 10
led_max = 4095
pwm.set_pwm_freq(60)
while True:
# Move servo on channel O between extremes.
pwm.set_pwm(0, 0, servo_min)
pwm.set_pwm(1, 0, led_min)
time.sleep(1)
pwm.set_pwm(0, 0, servo_max)
pwm.set_pwm(0, 0, led_max)
time.sleep(1)
7行目でled_min=10としています。0でonになったLEDが、10でoffになる。という事で暗く点灯させてみます。
8行目では、led_max=4095なので、0でonになったLEDが4095までonのままなので、offにならないため点滅せずずっと点灯する設定にしてみました。
動画だと、1秒間に60回の点滅がフリッカーで1秒間に3回くらいに見えるね。
暗さの比較のために、次のような設定でもやってみました。
led_min = 0
led_max = 2000
led_min = 0にすると、完全に消灯しました。一方、led_max = 2000は時間的には、約半分の時間点灯させてるのですが、フル点灯に近い明るさを出しています。
led_min = 2047
led_max = 4095
最後に、2047(正確に半分)とフル点灯を比較してみます。
人間の目では、明るさは半分じゃないですよね。フル点灯より若干暗くはなりますが、2割減くらいの感覚です。それから、PCA9685はハードウェアpwmなので、プログラムを止めてもpwm信号を出し続けます。つまり次の指示が来るまでは、電源が切れない限りその状態を維持するという性質があるのも面白いですね。
今日は、pwmでLEDの調光をやってみました。
コメント