【问题标题】:Changing Raspberry Pi volume with Python使用 Python 更改 Raspberry Pi 卷
【发布时间】:2022-03-07 23:30:21
【问题描述】:

硬件

  • 阿杜诺乌诺
  • 电位器
  • 树莓派 3
  • 树莓派操作系统
  • Hifiberry DAC Pro2

设置

电位器在 Arduino 上运行,我通过 USB 串行端口将信号发送到 Raspberry Pi。代码已完成并在 Arduino 上运行,我能够获取信号并使用 Pi 上的 python 脚本打印它。

我在 Arduino 端重新映射了 0-100 的信号范围,我希望使用这个值来控制我正在创建的音乐盒的树莓派上的音量。

问题

我目前正在使用here 找到的这个答案作为指导。但是,当我运行 python 脚本时,我在终端中收到以下错误。

amixer:找不到简单的控件'Master',0

但是,当我运行命令(amixer scontrols)时,我会显示一个 Master,0 列出。见下文

"pi@raspberrypi:~ $ amixer scontrols 简单的混音器控制'Master',0 简单的混音器控制'Capture',0"

为什么脚本看不到硬件或我做错了什么?这是我当前形式的脚本。一旦我可以改变音量,我将努力制作循环,我是 python 的新手并试图学习一些东西,但我已经坚持了几个星期。非常感谢任何帮助。

#import serial adapter library and asla audio library
import subprocess
import serial
import alsaaudio

#Variables
ser = serial.Serial('/dev/ttyACM0', 9600)
ser.flush()

volume = ser
command = ["amixer", "sset", "Master", "{}%".format(volume)]
subprocess.Popen(command)


#Imports serial value and prints to monitor
while True:  
    read_serial=ser.readline()
    print(read_serial)

【问题讨论】:

  • 直接在 Pi 上运行命令有效吗?
  • 是的,它确实可以正常工作。
  • 为了更清楚地说明,键入“amixer sset Master 50%”将正确更改值。我正在运行我编写的脚本,当它抛出错误时,在终端中输入“sudo python volcon.py”。
  • 发现一些不同的命令似乎可以工作。 os.system("amixer sset 'Master' volume%") 现在只是让它与变量一起工作。

标签: python raspberry-pi alsa


【解决方案1】:

问题来自'sudo'

如果你在 shell 中尝试amixer sset Master 100%,它会起作用

但是如果你尝试sudo amixer sset Master 100%,你会得到amixer: Unable to find simple control 'Master',0

我的建议:不要写 sudo python volcon.py 而是写 python volcon.py 来执行你的代码

如果它不起作用,或者如果你真的需要sudo权限,你可以使用其他命令。例如amixer cset numid=1 100%

PS:我唯一确定的是amixer sset Master 100% 对“sudo”有不同的响应,对于解决方案,您可以尝试我的建议,但我不确定结果

编辑:

请尝试amixer scontrolssudo amixer scontrols。如果结果不同,请从 'sudo ...' 中选择一个 在我的覆盆子上,我有

Simple mixer control 'Master',0
Simple mixer control 'Capture',0

对于第一个和

Simple mixer control 'Headphone',0

第二个

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多