繁体   English   中英

使用 Python 更改 Raspberry Pi 音量

[英]Changing Raspberry Pi volume with Python

硬件

  • Arduino 一诺
  • 电位器
  • 树莓派 3
  • 树莓派操作系统
  • 海纤DAC Pro2

设置

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

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

问题

我目前正在使用此处找到的答案作为指南。 但是,当我运行 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)

问题来自'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 如果结果不同,select 来自“sudo ...”的那个在我的树莓派上,我有

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

对于第一个和

Simple mixer control 'Headphone',0

第二个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM