Piano PIC

PianoPIC

Como aplicação do nosso artigo anterior, segue agora um projecto em que se utilizou o nosso PicPgm para programar um microcontrolador PIC18F4550.

Este pequeno projecto pretende apenas exemplificar a utilização de um microcontrolador PIC numa simples aplicação de audio.

Utilizando apenas entradas e saídas digitais, desenhou-se um simples piano/sintetizador com um estilo parecido ao de 8 bits:


Por uma razão de memória optou-se pelo uso do microcontrolador PIC18F4550 para este projecto.

Primeiro atribuíram-se as seguintes funções às respectivas portas:

pins-i-o-cc3b3pia.png

As portas a verde correspondem às entradas e as portas a vermelho correspondem às saídas.

Definiram-se as portas:

entradas-saidas.png

As entradas b1 a b11 correspondem aos botões de pressão do circuito e a entrada mode corresponde à entrada selectora do modo de funcionamento. Por sua vez as saídas l1 a l11 correspondem aos LED’s indicadores. Cada LED estará posicionado perto do seu botão de pressão e acenderá cada vez que a respectiva nota musical for tocada. Por último, a saída audio corresponderá à ligação a uma pequena coluna ou speaker.

Utilizando o software open-source KiCad, desenhou-se o circuito:

esquema.png

E de seguida desenhou-se a PCB:

pcb.png

Em 3D a placa fica com o seguinte aspecto:

dsc02104.png

Para construção do circuito utilizou-se uma PCB de dupla face. Primeiro o circuito foi impresso em papel de revista numa impressora a laser, depois foi transposto para a PCB através do método de transferência de toner. Transferiu-se um lado primeiro e depois foram feitos alguns furos para acertar o posicionamento da segunda face:

dsc02086.jpg dsc02085.jpg

Depois mergulhou-se a placa em percloreto de ferro para eliminar o cobre não protegido pelo toner:

dsc02091.jpg dsc02092.jpg

Para eliminar o toner utilizou-se um esfregão debaixo de água morna. A PCB ficou com o seguinte aspecto:

dsc02096.jpg dsc02095.jpg

De seguida fizeram-se todos os furos e foram colocados os componentes. Temos então a placa finalizada:

dsc02157.jpg

dsc02158.jpg

Funcionamento:dsc02102-cc3b3pia.jpg

No modo Tocar ou seja quando mode=0, os botões de pressão b1 a b11 correspondem às teclas do “piano”:

b1 – lá (440 Hz)

b2 – si (494 Hz)

b3 – dó2 (261×2 Hz)

b4 – ré2 (293×2 Hz)

b5 – mi2 (329×2 Hz)

b6 – fá2 (349×2 Hz

b7 – sol2 (392×2 Hz)

b8 – lá2 (440×2 Hz)

b9 – si2 (494×2 Hz)

b10 – dó4 (261×4 Hz)

b11 – ré4 (293×4 Hz)

Optou-se por se utilizar a segunda oitava como escala principal e adicionaram-se duas notas musicais acima e abaixo. Para além disto, pressionando dois botões adjacentes é possível obter também os sustenidos e bemóis.

Quando cada um dos botões é pressionado, é enviada para a coluna uma onda quadrada com a respectiva frequência.

Por exemplo, quando b1 é pressionado deve ser reproduzida a nota lá, então para criar este som, colocamos na saída audio uma onda quadrada com 440Hz. Para fazer isso, sabemos que o período de 440Hz é igual a 1/440 = 2272 µs aproximadamente. Então colocamos a saída a “1” durante metade desse tempo (1136 µs) e depois a saída a “0” durante a outra metade:

if (b1)

{

audio=1;

delay_us(1136);

audio=0;

delay_us(1136);

}

Para além do som, quando a nota lá é reproduzida, o LED L1 acende.

No modo de reprodução cada botão está associado a uma música que será reproduzida quando este for pressionado.

Cada música em memória é composta por dois vectores, um vector de frequências ou de notas musicais e um vector de tempos. Estes vectores são depois lidos através da função Sound_Play(x,y) existente no compilador utilizado (mikroC).

Por último, o b0 é o botão de reset do circuito.

E assim se faz uma simples e divertida aplicação.

Aqui está o ficheiro .hex e o layout da PCB: pianopic hex+pcb.zip

1 comentário a “PianoPIC”

Leave a Reply