我正在使用 Raspberry Pi 构建一个媒体播放器。我当前的目标是配置一个被动红外运动探测器,在检测到运动时暂停音乐(这样当我在播放器面前挥手时就可以暂停和恢复音乐)。
我已连接运动检测器并配置为在检测到运动时拉低 GPIO 引脚 17。我正在使用基本的 Linux 终端音乐播放器
mplayer
,按下空格键就会暂停和恢复播放的内容。
现在,它不起作用。运动传感器上的 LED 指示灯表明它正在记录运动事件。之前的实验表明我正确地读取了 GPIO 17 上的事件。出于某种原因,
mplayer
没有将我的 python 脚本中的命令注册为按键。这是我现在的代码(我知道它不漂亮,我现在只是在修补):
import RPi.GPIO as GPIO
from time import sleep
import keyboard
SENSOR_PIN = 17
GPIO.setmode(GPIO.VCM)
GPIO.setup(SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def motion_detected_callback(channel):
keyboard.send("space")
GPIO.add_event_detect(SENSOR_PIN, GPIO.RISING, callback=motion_detected_callback, bouncetime=2000)
try:
while True:
sleep(0.01)
except KeyboardInterrupt:
GPIO.cleanup()
我已经尝试了所有看起来合适的
keyboard
库函数——keyboard.write("space", delay=0)
,keyboard.send("space")
,keyboard.press("space")
也不起作用。 [编辑:这些都不适用于空格键的扫描码,例如keyboard.send(39)
。]
我也尝试了几种调用脚本的方法。
sudo python3 pir_sensor_listener.py & mplayer music.mp3
和 sudo python3 pir_sensor_listener | mplayer music.mp3
都不起作用。
有什么建议吗?