Como generar sonido con el pic 16F877? Sólo un "beeek"

Buenas noches.

He desarrollado un pequeño programa que consiste en una alarma. El pic está conectada a 4 puertas de la casa, cuando una de estas puertas se abre, dejo 10 segundos para que el usuario la apague, si no lo hace saltará la alarma (se encenderá un led), también tengo un interruptor que enciende o apaga el sistema y un botón para resetear la alarma (el led). Ahora mi duda está...como puedo ponerle un altavoz para que suene? Es decir, no quiero ninguna melodía ni nada, con el "beek" del pc me basta, pero no tengo ni idea de como hacerlo (estoy empezando en esto de los microcontroladores) y he colocado el altavoz al lado del led para que cuando la alarma (el led) se encienda, también suene, pero al ejecutar en "Proteus" no hace nada. Me podéis echar una mano?

Gracias.

P.D: Adjunto la imagen del diseño

Alarma.jpg
 
Si estas trabajando en Pic Basic Pro:

INSTRUCCIÓN SOUND[/SIZE]
FORMATO
SOUND NN_PIN, [TONO1,PERIODO1,TONO2,PERIODO2]
SOUND, genera tonos audibles o ruido blanco en un pin del PIC. Se pueden combinar más de una frecuencia de 1 a 27 que son los tonos y de 128 a 255 que corresponde al ruido blanco.

EJEMPLO:
SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

si estas programando en CCS:
Las notas se generarán utilizando una librería que trae el CCS. La librería de llama “TONES.C” e incluye esta función:

generate_tone(frequency, duration)

Esta función nos permitirá crear las notas musicales. Para usarla debemos tener en cuenta los siguientes parámetros:

“frecuency” es una variable que tomará el valor de la nota que queramos generar.
“duration” es el tiempo que durará la nota y está dada en milisegundos.:apreton:
 
Gracias por la respuesta, aunque me han quedado dudas. En el ejemplo que has puesto:

SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

La salida será un sonido de 10ms a 3937Hz a la vez con una de 20ms a 7874Hz? o primero una y luego la otra? De donde sale que ese 10 y ese 20 son milisegundos, porque son mili? de donde sale el valor de las frecuencias?

y por último, si lo que quiero es que mientras PORTA,5=1 salga un sonido "beeek" hasta que PORTA,5=0, como lo hago?

Gracias
 
Pero es que el zumbador funciona con continua. Pones un pin a 1 y se suena seguido, el zumbador tiene dentro unas placas que vibran y provocan la frecuencia que escuchas. Cuando quieres que pare pones el pin a 0 y se acabo. Lo que tienes que mirar es cuanto consume que no pueden superar los 20 mA, por que si no tienes que poner un transistor. Por ejemplo, este te sirve y lo puedes colocar directamente al un pin del PIC http://es.farnell.com/kingstate/kpeg-272/timbre-piezo/dp/1193672
 
Última edición:
Es que el led esta en serie con el Buzzer, entonces en el led cae 1.4 voltios y gran parte en la resistencia, entonces casi no le llega tensión al Buzzer. Coloca el led en otra salida.
 
Es que el led esta en serie con el Buzzer, entonces en el led cae 1.4 voltios y gran parte en la resistencia, entonces casi no le llega tensión al Buzzer. Coloca el led en otra salida.

Cambiaré el puerto del Buzzer, tengo que ponerle algún tipo de resistencia o conectadola a otro puerto y que este genere 5v sobra?
 
No hace falta que conectas nada. Pero para imprementarlo yo utilizaria un transistor y piensa que cuanto mas tensión mas alto te va a sonar. Lo cual puedes darle 24 v, si vas a meter en trafo le pones un regulador a 24 v y otro de 5 v para el micro. Si te llega el volumen a 5 voltios esta bien
 
No hace falta que conectas nada. Pero para imprementarlo yo utilizaria un transistor y piensa que cuanto mas tensión mas alto te va a sonar. Lo cual puedes darle 24 v, si vas a meter en trafo le pones un regulador a 24 v y otro de 5 v para el micro. Si te llega el volumen a 5 voltios esta bien

Símplemente he puesto el Buzzer en el PORTA,1 que tenía libre y configurando todo para cuando se encienda el led de la alarma, también salga un 1 por el PORTA,1 nada más, necesito algo simple =)

EDITO: Lo que he hecho no funciona...uff, a ver que le pasa...

EDITO2: La resistencia del componente era muy baja, la he puesto a 10k y ya funciona. Gracias por las molestias =)
 
Última edición:
Gracias por la respuesta, aunque me han quedado dudas. En el ejemplo que has puesto:

SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

La salida será un sonido de 10ms a 3937Hz a la vez con una de 20ms a 7874Hz? o primero una y luego la otra? De donde sale que ese 10 y ese 20 son milisegundos, porque son mili? de donde sale el valor de las frecuencias?

y por último, si lo que quiero es que mientras PORTA,5=1 salga un sonido "beeek" hasta que PORTA,5=0, como lo hago?

Gracias


Hola por lo que veo si estas trabajando con PBP en el ejemplo:

EJEMPLO:[/SIZE]
SOUND PORTB.0,[50,10,100,20] : Son dos sonidos primero el tono 15 que dura 10 milisegundos y despues el tono 100 que dura 20 ms en la practica he notado que el segunda sonido se mazcla poquito el segundo tono cuando esta por terminar el primero ya empezo a sonar el segundo.

de donde sale el valor de las frecuencias?

R= salen por pin del puerto que eligas para SOUND en este caso SOUND PORTB.0

mientras PORTA,5=1 salga un sonido "beeek" hasta que PORTA,5=0, como lo hago?

R= WHILE (PORTA.5=1)
SOUND PORTB.0,[50,10]
WEND
Instrucciones en caso de que PORTA.5=0


Ademas te dejo una imagen del isis donde debes de seleccionar los buzers, bocinas, motores, lamparas, leds que digan en su descripcion ACTIVE ya que son ANIMADOS, esto quiere decir que tienen movimiento visible(caso de motor), se ve que prenden y apagan (caso de leds) y producen sonido al simular por tus bocinas de la PC (en caso de bocinas y buzers)


Consulta este Curso de PBP:
https://www.forosdeelectronica.com/f24/curso-programacion-pic-bsic-pro-20658/

PD: Algunas cosas ya estan en el foro.

 

Adjuntos

  • Disp Animados ISIS.jpg
    Disp Animados ISIS.jpg
    60.5 KB · Visitas: 100
Última edición:
Mis queridos amigos...¡¡¡

yo utlizo en pbp la siguiente sentencia:

sound portb.0 [120,50]

pero al momento de programar el pic me genera salidas de pulsos de 5 vol, mas no los tonos, que puede ser la razon de eso ?
 
es mas con una simple rutina como la de prender y apagar un led puedes producir un sonido

inicio:
HIGH PORTc.7
pause 80
low PORTc.7
pause 80



goto inicio
end

aunque con "sound portb.0" hay un poco mas de control en que sonido quieres
 
Si estas trabajando en Pic Basic Pro:

INSTRUCCIÓN SOUND[/SIZE]
FORMATO
SOUND NN_PIN, [TONO1,PERIODO1,TONO2,PERIODO2]
SOUND, genera tonos audibles o ruido blanco en un pin del PIC. Se pueden combinar más de una frecuencia de 1 a 27 que son los tonos y de 128 a 255 que corresponde al ruido blanco.

EJEMPLO:
SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms.

si estas programando en CCS:

Las notas se generarán utilizando una librería que trae el CCS. La librería de llama “TONES.C” e incluye esta función:

generate_tone(frequency, duration)

Esta función nos permitirá crear las notas musicales. Para usarla debemos tener en cuenta los siguientes parámetros:

“frecuency” es una variable que tomará el valor de la nota que queramos generar.
“duration” es el tiempo que durará la nota y está dada en milisegundos.:apreton:
Saludos a todos, quería preguntar como sabes el valor de la frecuencia cuando usas el comando sound?? Por ejemplo cuando dics: SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms. Como sabes que 50 o 100 equivalen a 3937hz y 7874Hz respectivamente??, espero su pronta respuesta, de ante mano gracias .:D
 
Saludos a todos, quería preguntar como sabes el valor de la frecuencia cuando usas el comando sound?? Por ejemplo cuando dics: SOUND PORTB.0,[50,10,100,20] ; Se ha combinado dos frecuencias de 3937 Hz cona una duración de 10 ms y 7874 Hz con una duración de 20 ms. Como sabes que 50 o 100 equivalen a 3937hz y 7874Hz respectivamente??, espero su pronta respuesta, de ante mano gracias .:D

http://www.todopic.com.ar/pbp_sp.html#sound

Note 1 es aprox. 78,74 Hz y Note 127 es aproz. 10000 Hz . Utiliza interpolación.
 
Atrás
Arriba