Controlar volumen de un zumbador

Buenas:

Ver imagen.

Quiero controlar el volumen de un zumbador y en la LCD se muestra una pequeña barra que crece o no del 0 al 7.

Ejemplo del LCD:

Volumen máximo.
███████ 7

Volumen 0 no se oye nada, se queda mudo, cero sonido.
------- 0

Volumen a la mitad.
███---- 3

Al menos quiero saber solo controlar el sonido del volumen de la alarma. Lo de los gráficos del LCD y ame encargo yo.

Muchas gracias.

Hola si en el circuito que has hecho la señal control la conectas a un pinPWM la forma es bien sencilla: analogWrite (pinPW,valor) , donde valor va de 0 para apagado a 254 maximo volumen.
Saludos.

El PWM del 0 a 254 como indicas.

¿Se puede hacer algo que si en la pantalla muestra 0 apagado y 8 el valor máximo volumen?

Saludos.

Habria que ver el codigo para ver como manejas la pantalla, ¿una variable quizas? ¿de que a que valor va? etc...

Si, lo resuelves sencillamente con

volumen = map(valor_barra, 0, 8, 0, 255);

y te evitas hacer tú los cálculos. :wink:

Luego

digitalWrite(pin_PWM, volumen);

Por cierto, el máximo valor para analogWrite() es 255, no 254.

Saludos

El map del 0 al 8 seguramente no valdra ya que facilmente tendra codificado algo como

barra.Setcursor (0,0);
barra.print ("-------0") ;

que obiamente la cadena de texto dependera de algún tipo de variable.
Me gustaria ver ese trozo de codigo.
Saludos.

Si, pero la barra la tiene asociada a una variable que le dice cuantos cuadraditos y rayitas "pintar", y si no la tiene la agrega y listo.

Por otro lado, sin una variable numérica asociada a lo que representa en la barra, ¿Cómo sabe a qué volúmen corresponde?
¿Qué aumenta o decrementa? ¿Cuadraditos o un número?

Saludos

@Metaconta Me acabo de dar cuenta que la teoría está muy linda pero la práctica...

Si el buzzer es pasivo, la base del transistor debería recibir los pulsos que genera la función tone() por lo tanto no se puede controlar el volumen con pulsos PWM.

Si es un buzzer activo, no vas a tener demasiada variación de volumen porque lo que variaría sería la tensión de alimentación y estos aparatejos son bastante estables en un rango amplio de tensión, no creo que surta efecto.

Prueba porque puedo estar equivocado pero no creo que dé buenos resultados con esta configuración.

Saludos

Hola:

El código de ejemplo no tengo hecho primero en PC simulando un LCD 20x4. Si quieren les paso el programa, lo tengo hecho con Visual Studio. Si todo va bien, lo hago en Arduino que es mi finalidad.

Captura

Saludos.