Probablemente pueda usar un segundo PWM para generar un voltaje y luego enviarlo a un VCA, u obtener un potenciómetro digital externo (DPOT) y usarlo para cambiar la ganancia de un amplificador operacional si está dispuesto a agregar más ICs. Sin embargo, si no necesita tantos niveles de volumen y ya tiene un montón de PWM de hardware en su Arduino, puede conectarlos a través de algunas resistencias en serie para crear un circuito de verano. Suponiendo que el altavoz de su computadora tiene un amplificador incorporado con una alta resistencia de entrada, debería poder agregar varias salidas PWM (por ejemplo, 4) a través de resistencias de 1K.
Siempre y cuando los PWM estén sincronizados, deberían obtener 1/4, 2/4, 3/4 y amplitud completa usando 4 canales (por ejemplo). Solo haga que todos generen lo mismo y desactive algunos de los PWM (configurándolo como un 0 digital) si desea reducir el volumen.
[EDITAR] En realidad, pensando más en el problema, puede hacerlo con menos hardware si utiliza las salidas digitales como atenuación. Considere el siguiente circuito:
simular este circuito : esquema creado usando CircuitLab
Básicamente, cada E / S digital le da un poco de control de volumen, y puede obtener tantos bits como tenga E / S extra. Su volumen más alto sería con todas las E / S digitales configuradas en "alto-Z" o entrada, ya que su amplificador solo vería el PWM. Si configura cualquiera de las E / S digitales con un valor de '0' atenuaría la señal (por ejemplo, si el 0 digital emitía un '0', su señal de audio se atenuaría en un 50% debido a la división de voltaje). en el caso anterior, tendría 8 niveles de volumen, pero puede extender fácilmente el circuito si necesita más bits. También puede convertirlo en un estrechamiento logarítmico seleccionando cuidadosamente los valores de resistencia.