raspberry piでpigpioを用いて外部電源のオンオフを感知してパルスを発生させたい.

やりたいこと

ラズパイで外部から電圧をかけられているときだけ徐々に周波数の上がっていくパルス波を発生させたい.

書いたコード

python

import pigpio import time pwm_pin = 13input_pin = 6duty = 50 pi = pigpio.pi()pi.set_mode(pwm_pin,pigpio.OUTPUT)pi.set_mode(input_pin,pigpio.INPUT) def pulse_generator(pwm_pin,duty): cnv_dutycycle = int((duty*1000000/100)) print("start") freq =1000 while freq<10000: freq += 100 pi.hardware_PWM(pwm_pin,freq,cnv_dutycycle) time.sleep(2) print(freq) def generator(pin,level,tick): if level==1: pulse_generator(pwm_pin,duty) elif level==0: pi.write(pwm_pin,0) def main(): cl = pi.callback(input_pin,pigpio.EITHER_EDGE,generator) try: while True: main() except KeyboardInterrupt: print("finish") pi.write(pwm_pin,0) pi.stop()

実行結果

電圧がかけられたときにパルスを発生するがかけている電圧を0にしてもパルスが止まらない.
またctrl+cを押したときにエラーが発生する.

エラー内容

以下のエラー内容はfreqが1200のときにctrl+Cを押して出たエラー

python

start 1100 1200 finish >>> 1300 Exception in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner self.run() File "/usr/lib/python3/dist-packages/pigpio.py", line 1213, in run cb.func(cb.gpio, newLevel, tick) File "/home/mochi/ダウンロード/pigpiotest.py", line 25, in generator pulse_generator(pwm_pin,duty) File "/home/mochi/ダウンロード/pigpiotest.py", line 19, in pulse_generator pi.hardware_PWM(pwm_pin,freq,cnv_dutycycle) File "/usr/lib/python3/dist-packages/pigpio.py", line 2044, in hardware_PWM return _u2i(_pigpio_command_ext( File "/usr/lib/python3/dist-packages/pigpio.py", line 1062, in _pigpio_command_ext sl.s.sendall(ext) AttributeError: 'NoneType' object has no attribute 'sendall'

コメントを投稿

0 コメント