Musica con PIC 18F4550 Libreria Tones (Himno a la alegria)

Hola amigos de Taringa, les traigo este nuevo post con un programa para crear "musica" con el PIC utilizando la libreria tones.c que se encuentra ya con el compilador


Las notas que podemos crear son las siguientes:



La funcion que hay que escribir para generar una nota musical sera:

generate_tone(frequency, duration);

Donde:
frequency = La nota a generar
duration= la duracion del sonido escrita en milisegundos

E pin por defecto por donde se generara la frecuencia es el B2 (para cualquier PIC y segun la libreria)



Ejemplo para reproducir un "DO" durante 1 segundo.

generate_tone(C_NOTE[0],1000);

Noten que tiene un "0" entre los corchetes "[]" es porque si observan la imagen nos da la opcion de generar frecuencias para "octavas" ustedes pueden poner cualquier numero del 0 al 3 dentro de esos corchetes y escuchar que sonido produce.


Para los que no saben las escales musicales en esa notacion les dejo esta escala musical en "latino" e "ingles"

Ingles-----Español
A La
B Si
C Do
D Re
E Mi
F Fa
G Sol


Sin mas por el momento, les dejo el programa (lo hice yo, ya que toco guitarra decidi tomar las notas de la guitarra y generar... mas o menos jajaja las notes del Himno a la alegria). Espero que les guste:

#INCLUDE <18F4550.h>
#fuses INTRC_IO,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,NOVREGEN
#use delay(clock=4000000)
#include
#include


void main()
{

lcd_init();

while(true)
{

//si ves una o varias caritas en el programa es cerrar parentesis )
//antes de la "f" en la mayoria de los printf por ejemplo "fMusica...
//va una diagonal invertida... veo que no aparece, no se que hacer
// \\ (esta diagonal invertida)


printf(lcd_putc,"fMusica con PIC");


generate_tone(C_NOTE[0],1000);
generate_tone(D_NOTE[0],1000);
generate_tone(E_NOTE[0],1000);
generate_tone(F_NOTE[0],1000);
generate_tone(G_NOTE[0],1000);
generate_tone(A_NOTE[0],1000);
generate_tone(B_NOTE[0],1000);

generate_tone(B_NOTE[0],800);
generate_tone(C_NOTE[1],600);
generate_tone(D_NOTE[1],500);
generate_tone(D_NOTE[1],500);
generate_tone(C_NOTE[1],500);
generate_tone(B_NOTE[0],500);

generate_tone(A_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(A_NOTE[0],600);
generate_tone(B_NOTE[0],500);
generate_tone(B_NOTE[0],700);
generate_tone(A_NOTE[0],400);
generate_tone(A_NOTE[0],600);

printf(lcd_putc,"fHimno a lanalegria");

generate_tone(B_NOTE[0],800);
generate_tone(C_NOTE[1],600);
generate_tone(D_NOTE[1],500);
generate_tone(D_NOTE[1],500);
generate_tone(C_NOTE[1],500);
generate_tone(B_NOTE[0],500);

generate_tone(A_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(A_NOTE[0],600);
generate_tone(B_NOTE[0],500);
generate_tone(A_NOTE[0],700);
generate_tone(G_NOTE[0],400);
generate_tone(G_NOTE[0],600);

printf(lcd_putc,"fLibreria tones.c");

//delay_ms(100);

generate_tone(A_NOTE[0],800);
generate_tone(B_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(A_NOTE[0],800);
generate_tone(B_NOTE[0],300);
generate_tone(C_NOTE[1],300);
generate_tone(B_NOTE[0],300);
generate_tone(G_NOTE[0],400);

generate_tone(A_NOTE[0],500);
generate_tone(B_NOTE[0],300);
generate_tone(C_NOTE[1],300);
generate_tone(B_NOTE[0],300);
generate_tone(A_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(A_NOTE[0],500);
generate_tone(D_NOTE[0],500);

printf(lcd_putc,"fProyectos PIC");

//delay_ms(100);

generate_tone(B_NOTE[0],800);
generate_tone(C_NOTE[1],700);
generate_tone(D_NOTE[1],500);
generate_tone(D_NOTE[1],500);
generate_tone(C_NOTE[1],500);
generate_tone(B_NOTE[0],500);

generate_tone(A_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(G_NOTE[0],500);
generate_tone(A_NOTE[0],600);
generate_tone(B_NOTE[0],500);
generate_tone(A_NOTE[0],700);
generate_tone(G_NOTE[0],300);
generate_tone(G_NOTE[0],600);

printf(lcd_putc,"fSaludos");

delay_ms(2000);

}
}


link: https://www.youtube.com/watch?v=3UgIOE0XGC0&feature=youtu.be


Posdata: No es necesario el uso de la libreria de la LCD, solo lo use para mostrar un mensaje en la simulacion. Saludos