You are on page 1of 4

PIANO ELECTRONICO

El diseo propuesto, es el de un piano electrnico con las notas musicales base


DO-RE-MI-FA-Sol-LA-SI que puede servir para interpretar sencillas canciones con
un pequeo altavoz y unos pulsadores emulando las teclas de un piano. Adems
se ha aadido un 8 botn que al pulsarlo emite la meloda de una cancin
conocida a modo de ejemplo por si alguien quiere montarse una especie de
reproductor midi ya que se pueden emular todas las notas que existen.

Cuando inici el diseo, intent recrear cada nota con su frecuencia simulando
pulsos cuadrados variando el dutty cycle aunque no acababan de sonar
correctamente desde mi punto de vista. Buscando una solucin encontr una
librera que justamente sirve para eso y permite simular gran cantidad de notas,
diferenciando incluso sus tiempos segn sean negras o blancas, semifusas
Primero quiero dar unos detalles del esquema creado y simulado con proteus. Por
una parte las teclas del piano, van conectada al puerto D declarado como entrada
con unas resistencias de pull-up de 1 kohm para generar el estado alto en los bits
delpuerto.
Para generar el sonido de las notas, se ha utilizado un altavoz pequeo que en la
realidad se puede usar uno a gusto del consumidor, en lo personal recomiendo
uno pequeo de 8ohm-1W. Se ha utilizado el primer bit del puerto B como salida
para generar la frecuencia de las notas ya que en la librera que se explicar a
continuacin,
as
viene
por
defecto.
Para activar el altavoz, en vez de conectar sta salida directamente, se utiliza un
transistor a modo de interruptor. Sobre diseo electrnico poco ms hay para
comentar, la electrnica es sencilla y es ms interesante ver el funcionamiento de
la librera para generar los sonidos.
Libreria Tones.c

La librera para generar los sonidos es tones.c, para usarla simplemente haremos
un include al archivo. En mi caso con el compilador CCS no me dio ningn tipo de
error ya que estaba integrada, en caso de que no la encuentre, se puede buscar
por internet y descargar sin ningn problema.
La librera est compuesta por la funcin generate_tone() donde se le entrarn
dos variables como parmetro, por una parte la nota y por otra el tipo de nota si es
blanca o negra. Al entrar la nota, en realidad entramos una variable con un ndice
de array ya que har referencia a una tabla ya que la librera distingue 4 tipos de
octavas segn la frecuencia. En realidad la librera tiene construida la siguiente
tabla:
// NOTE FREQUENCY
// Octave0 Octave1 Octave2 Octave3
const long C_NOTE[4] ={ 262, 523, 1047, 2093};
const long Db_NOTE[4] ={ 277, 554, 1109, 2217};
const long D_NOTE[4] ={ 294, 587, 1175, 2349};
const long Eb_NOTE[4] ={ 311, 622, 1245, 2489};
const long E_NOTE[4] ={ 330, 659, 1329, 2637};
const long F_NOTE[4] ={ 349, 698, 1397, 2794};
const long Gb_NOTE[4] ={ 370, 740, 1480, 2960};
const long G_NOTE[4] ={ 392, 784, 1568, 3136};
const long Ab_NOTE[4] ={ 415, 831, 1661, 3322};
const long A_NOTE[4] ={ 440, 880, 1760, 3520};
const long Bb_NOTE[4] ={ 466, 923, 1865, 3729};
const long B_NOTE[4] ={ 494, 988, 1976, 3951};
Hay un detalle importante y aviso por si alguien no tiene conocimientos bsicos de
msica, la notacin utilizada es la que generalmente se usa en tablaturas donde:
C = DO , D = RE, E = MI, F= FA, G= Sol, A= LA, B= SI
Para utilizar la funcin correctamente tendremos:

generate_tone( nota, tipo);


Por ejemplo si quermos generar un DO de una partitura cuya duracin es de
negra, llamarmos a la siguiente funcin:

generate_tone(C_NOTE[1], negra);
Segn la tabla de valores, sera equivalente a:

generate_tone(262, negra);
La parte mas importante, en cuanto al piano, es la deteccin de la tecla pulsada,
donde segn la que sea utilizando la funcin input_state se generar la nota que
toque.

MATERIALES
8 res 10k
Pic 18f4520
Cristal
2 capacitores 47
Bocina de 8ohm-1W
8 push button
2n2926

Instituto Emiliani Somascos


Sexto electrnica
Tecnologa
Brayan Mazariegos

ANTE PROYECTO
Piano electrnico

Carlos Rafael Romn Paz 23


Edson julio Alfredo pirir Cheley 20

You might also like