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() で指定した範囲の値を指定できる。
[ ツッコむ ]
以上です。