控制 Volumio 的音量
Control the volume of Volumio
我已经用 Volumio 播放器设置了 Raspberry Pi。
现在我想用旋转编码器控制音量。
并且还想暂停或播放当前歌曲。
#!/usr/bin/env python
#
# Raspberry Pi Rotary Test Encoder Class
#
# Author : Bob Rathbone
# Site : http://www.bobrathbone.com
#
# This class uses a standard rotary encoder with push switch
#
import sys
import time
from rotary_class import RotaryEncoder
import subprocess
# Define GPIO inputs
PIN_A = 21
PIN_B = 16
BUTTON = 4
# This is the event callback routine to handle events
def switch_event(event):
if event == RotaryEncoder.CLOCKWISE:
print "Volume up"
subprocess.call(['mpc', 'volume', '+1'])
elif event == RotaryEncoder.ANTICLOCKWISE:
print "Volume down"
subprocess.call(['mpc', 'volume', '-1' ])
elif event == RotaryEncoder.BUTTONDOWN:
print "Pause/Play"
# elif event == RotaryEncoder.BUTTONUP:
# print "Button up"
return
# Define the switch
rswitch = RotaryEncoder(PIN_A,PIN_B,BUTTON,switch_event)
while True:
time.sleep(0.5)
这是我已有的编码器。
但是当我启动它并尝试将音量设置为 +1 时,我只是得到一个错误。
这个:
Traceback (most recent call last):
File "/home/pi/radio/rotary_class.py", line 87, in switch_event
self.callback(event)
File "./test_rotary_class.py", line 35, in switch_event
subprocess.call(['mpc', 'volume', '-1' ])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
如果有人能帮助我并告诉我如何做 pause/play :)
那就太好了
我认为您的代码没有问题,但错误表明 mpc
可执行文件不在您的路径中 (No such file or directory
)。
尝试用绝对路径替换 mpc
或使其可从您的 python 脚本访问。
It would be great if someone can help me and tell me how to do the pause/play :)
mpc toggle
就是您要找的。
我已经用 Volumio 播放器设置了 Raspberry Pi。 现在我想用旋转编码器控制音量。 并且还想暂停或播放当前歌曲。
#!/usr/bin/env python
#
# Raspberry Pi Rotary Test Encoder Class
#
# Author : Bob Rathbone
# Site : http://www.bobrathbone.com
#
# This class uses a standard rotary encoder with push switch
#
import sys
import time
from rotary_class import RotaryEncoder
import subprocess
# Define GPIO inputs
PIN_A = 21
PIN_B = 16
BUTTON = 4
# This is the event callback routine to handle events
def switch_event(event):
if event == RotaryEncoder.CLOCKWISE:
print "Volume up"
subprocess.call(['mpc', 'volume', '+1'])
elif event == RotaryEncoder.ANTICLOCKWISE:
print "Volume down"
subprocess.call(['mpc', 'volume', '-1' ])
elif event == RotaryEncoder.BUTTONDOWN:
print "Pause/Play"
# elif event == RotaryEncoder.BUTTONUP:
# print "Button up"
return
# Define the switch
rswitch = RotaryEncoder(PIN_A,PIN_B,BUTTON,switch_event)
while True:
time.sleep(0.5)
这是我已有的编码器。 但是当我启动它并尝试将音量设置为 +1 时,我只是得到一个错误。
这个:
Traceback (most recent call last):
File "/home/pi/radio/rotary_class.py", line 87, in switch_event
self.callback(event)
File "./test_rotary_class.py", line 35, in switch_event
subprocess.call(['mpc', 'volume', '-1' ])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
如果有人能帮助我并告诉我如何做 pause/play :)
那就太好了我认为您的代码没有问题,但错误表明 mpc
可执行文件不在您的路径中 (No such file or directory
)。
尝试用绝对路径替换 mpc
或使其可从您的 python 脚本访问。
It would be great if someone can help me and tell me how to do the pause/play :)
mpc toggle
就是您要找的。