pigpioを使って割り込み操作を実施する
pigpioの本家のサンプルは下記の通り
def cbf(gpio, level, tick):
print(gpio, level, tick)
cb1 = pi.callback(22, pigpio.EITHER_EDGE, cbf)
簡単に説明すると
pi.callback(22, pigpio.EITHER_EDGE, cbf)
22番ピンを監視して変化があればcbfを実行
def cbf(gpio, level, tick):
tickはアプリ起動後のマイクロセコンド 72分で0に戻る
で実際のアプリは
pullupは実抵抗の10Kをセット
3.3v – 10Kオーム – |sw| — GND
|- ——————- GPIO18
チャタリング対策を入れているのでtickで比較している
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pigpio
import time
PIN=18
pi = pigpio.pi()
old_tick = 0
def setup():
pi.set_mode(PIN, pigpio.INPUT)
def cb_interrupt(gpio, level, tick):
global old_tick
if tick > old_tick:
sa = tick - old_tick
else:
sa = old_tick - tick
if sa > 200000:
print (gpio, level, tick)
old_tick = tick
def main():
cb = pi.callback(PIN, pigpio.FALLING_EDGE, cb_interrupt)
while True:
time.sleep(1)
def destroy():
pi.stop()
if __name__ == '__main__':
setup()
try:
main()
except KeyboardInterrupt:
destroy()