- import RPi.GPIO as GPIO
- import threading
- import subprocess
- GPIO.setmode(GPIO.BOARD)
- GPIO.setwarnings(False)
- pins = [ ['prev', 13], ['pause', 12], ['next', 11] ]
- threads = []
- for i in pins:
- GPIO.setup(i, GPIO.IN, pull_up_down=GPIO.PUD_UP)
- def mpcctl(fn):
- cmd = [ 'mpc', '-h', '192.168.0.2' ]
- if fn == 'prev' or fn == 'next':
- arg = str(fn)
- elif fn == 'pause':
- if 'playing' in subprocess.check_output(cmd.split()):
- arg = 'pause'
- elif 'paused' in subprocess.check_output(cmd.split()):
- arg += 'play'
- cmd.append(arg)
- subprocess.call(cmd)
- def pinchk(pin):
- while true:
- GPIO.wait_for_edge(int(pin[1]), GPIO.FALLING)
- #mpcctl(str(pin[0]))
- # test:
- print('pin',pin,'has fallen')
- for i in range(3):
- threads.append(threading.Thread(name=' '.join(pins[i]), target=pinchk, args=(pins[i])))
- threads[i].start()