2016/07/21(木) [n年前の日記]
#1 [raspberrypi] pigpioでLチカ
Raspberry Pi3 + Python + pigpio でサーボモータを制御できたので、少し前の段階に戻って Python + pigpio でLチカ(LED点灯)をしてみたり。
◎ 3回点灯させる版。 :
GPIO 17番に抵抗とLEDを繋いで実験。led_pigpio.py として保存。
sudo python led_pigpio.py で実行。フツーに光ってくれた。
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# LED flash - pigpio
import pigpio
import time
LED_PIN = 17
pi1 = pigpio.pi()
pi1.set_mode(LED_PIN, pigpio.OUTPUT)
try:
for i in range(3):
pi1.write(LED_PIN, 1)
time.sleep(0.5)
pi1.write(LED_PIN, 0)
time.sleep(0.5)
except KeyboardInterrupt:
pass
print "done."
# cleanup
pi1.set_mode(LED_PIN, pigpio.INPUT)
pi1.stop()
sudo python led_pigpio.py で実行。フツーに光ってくれた。
- pi1.set_mode(GPIO番号, pigpio.OUTPUT) で、出力モードに。
- pi1.write(GPIO番号, 1) で、High状態に。
- pi1.write(GPIO番号, 0) で、Low状態に。
- pi1.set_mode(GPIO番号, pigpio.INPUT) で、入力モードに。
◎ PWMを使って明るさを変える版。 :
pigpioを使えば、どのピンでもPWMが使えるようで。ココでも GPIO 17番を使って試してみたり。led_pigpio_pwm.py として保存。
sudo python led_pigpio_pwm.py で実行。フツーに明るさが変わってくれた。
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# LED flash - pigpio PWM
import pigpio
import time
LED_PIN = 17
pi1 = pigpio.pi()
pi1.set_mode(LED_PIN, pigpio.OUTPUT)
pi1.set_PWM_frequency(LED_PIN, 200)
pi1.set_PWM_range(LED_PIN, 100) # 25 - 40000
try:
for i in range(3):
v = 0
d = 10
while v >= 0:
pi1.set_PWM_dutycycle(LED_PIN, v)
time.sleep(0.1)
if v >= 100:
d *= -1
v += d
except KeyboardInterrupt:
pass
print "done."
# cleanup
pi1.set_mode(LED_PIN, pigpio.INPUT)
pi1.stop()
sudo python led_pigpio_pwm.py で実行。フツーに明るさが変わってくれた。
- pi1.set_PWM_frequency(GPIO番号, PWM周波数) で、PWMの周波数(Hz)を設定。
- pi1.set_PWM_range(GPIO番号, 範囲最大値) で、dutyの範囲を指定。25 - 40000 の間で指定できるらしい。デフォルトでは 255 になってる、と、ドキュメントには書いてあった。
- pi1.set_PWM_dutycycle(GPIO番号, duty) で、パルス幅の長さを指定。set_PWM_range() で指定した範囲の値を指定できる。
[ ツッコむ ]
以上です。