Player de Marcha Imperial 8 bits (Arduino)

Neste tutorial você vai aprender como montar um pequeno dispositivo capaz de reproduzir a marcha imperial de Star Wars com poucos componentes. Você poderá gravar também outros sons a sua escolha. Para a gravação no ATmega você vai precisar de uma placa Arduino, mas caso não possua o Microcontrolador, pode gravar o código no seu Arduino mesmo. Ao final do post está um bônus, aumentando as possibilidades de música usando o mesmo hardware.

Lista de Material:

1 Microcontrolador ATmega 8/168/328 (o ATmega 8 pode ser encontrado no eBay baratinho)

1 Mini protoboard.(Uma protoboard comum também serve)

1 Cristal de 16MHz

2 Capacitores de 22pF.

1 Regulador de tensão em 5V( 7805/78m05/78l05 )

1 Buzzer Piezo

Outros:

Fios

Jumpers

Antes de começarmos

O objetivo do artigo é propor uma hardware para se tocar a marcha imperial em 8 bits, incentivando a prototipagem do circuito e mostrando como se usar uma placa Arduino para se criar novos Arduinos, mas caso não queira ou não possa montar o hardware especificado, e queira usar o próprio Arduino  para tocar a marcha, faça a  ligação abaixo e pule o Passo 1.

Screen Shot 04-10-14 at 12.55 AMNão esquecer que pino a que o buzzer deve estar ligado é o pino que for especificado no código e que este deve ser uma dos pinos de PWM(os que possuem um ‘~’), por exemplo, no Arduino UNO esses pinos são 3, 4, 6, 9, 10 e 11.

Passo 1 – Montagem

Este slideshow necessita de JavaScript.

Monte o ATmega como na imagem 2, depois use um fios rígidos para a  alimentação do micro, que vão de VCC e GND na primeira imagem para o regulador de tensão. Depois faça outro jumper do GND para onde ficará o negativo do buzzer. Deve ficar como na figura abaixo:

Screen Shot 04-10-14 at 01.26 AMDepois disso coloque o cristal nos pinos XTAL1 e XTAL2 que podem ser vistos na imagem 1.

Screen Shot 04-10-14 at 01.25 AM

Depois coloque os capacitores de 22pF, Um é ligado em XTAL1 e GND e o outro em XTAL2 e GND como na figura 5.
Ligue o pino + do buzzer no pino 9 do micro e o outro pino no GND.

Screen Shot 04-10-14 at 01.39 AM

Agora o seu micro está pronto pra ser gravado, o regulador de tensão só será colocado na protoboard depois que o código for gravado no ATmega.

Screen Shot 04-11-14 at 07.07 PM
O regulador de tensão e a bateria são colocados só após o código ter sido gravado, cuidado com as ligações e pra não inverter o regulador.

Passo 2 – Código.

*Atenção* O seguinte código não foi escrito por mim nem pela equipe do Dragão Sem Chama, uma rápida pesquisa na web e você  encontrará este código e outros similares, incluindo códigos que tocam outros sons.

Note que há um espaço no código para um LED que dá um efeito visual pras notas que estão sendo tocadas, não é necessário, apenas coloque esse LED se desejar.

Passo 3- Gravação do Firmware

Para gravar o firmware, você precisará de uma placa Arduino. Carregue o Exemplo  ISP na IDE do Arduino em Exemplos>>ArduinoISP, grave esse código no seu Arduino, desligue-o e faça as seguintes ligações com o ATmega.

Arduino Uno

Arduino Mega

ATmega a ser programado

Slave reset:

10

53

RESET

MOSI:

11

51

11

MISO:

12

50

12

SCK:

13

52

13

BreadboardAVR
Imagem retirada de arduino.cc

Este slideshow necessita de JavaScript.

Com o ATmega a ser programado devidamente ligado ao Arduino, Abra novamente a IDE do Arduino e abra o código a ser gravado. Selecione como gravador “Arduino as ISP” e depois clique em “Upload using Programmer”.

Passo 4 – Bônus (RTTTL)

Há uma biblioteca para o Arduino, chamada ‘Tone’ que possui as notas e frequências para serem tocadas no PWM do Arduino. Nessa biblioteca há um exemplo que permite que sons RTTL sejam tocados no Arduino.

Mas que diabos é RTTTL? A sigla RTTTL, segundo a Wikipédia, vem de  Ring Tone Text Transfer Language, que pode ser traduzido como : linguagem de transferência de ringtones por texto. Essa linguagem foi  criada pela Nokia para que ringtones fossem transferidos para seus celulares.

O formato RTTTL é dividido em três partes: nome, configurações e notas, sendo que estas partes são divididas por ‘:’ dois pontos

Por exemplo o código RTTL de Lost Woods de Zelda-Ocarine of Time :

zelda_woods:d=4,o=5,b=140:8f6,8a6,b6,8f6,8a6,b6,8f6,8a6,8b6,8e7…..(versão completa aqui)

Nome: zelda_woods

Configuração: d=4,o=5,b=140

Notas: 8f6,8a6,b6,8f6,8a6,b6,8f6,8a6,8b6,8e7,d7….

O legal é que você pode encontrar uma infinidade desses códigos na internet, o site Arcade Tones, tem vários desses códigos com sons de vídeo-games.

Primeiro baixe a biblioteca aqui Arduino-Library-Tone.

Extraia o arquivo da biblioteca e copie a pasta  ‘Tone’ extraída na pasta ‘libraries’ que está na pasta onde está o executável do Arduino.

Abra o exemplo “RTTTL”

Escolha uma das músicas no exemplo, ou copie e cole uma música da internet na forma: char *song=”(código RTTTL aqui)”;

Quando for usar uma nova música, não esqueça de comentar a música que não for usar mais, colocando ‘//’ na frente da linha.

A gravação é da mesma forma que o código da Marcha Imperial.

*Atenção* Lágrimas de nostalgia podem cair no seu Arduino, o Dragão sem Chama não se responsabiliza por possíveis danos, faça por sua conta e risco.

Alguns que testamos:

Cutman, de Megaman

Super Mario Bros Theme

The Legend of Zelda Theme

É isso pessoal, não deixem de comentar caso tenham dúvidas e caso também não tenham. Também comentem se quiserem mais tutos de eletrônica/Arduino/DIY/Microcontroladores.

Robson Couto

Estudante de engenharia elétrica. As vezes parece gostar mais dos consoles antigos que dos jogos. Tem interesse em dominar bits, bytes e afins.

9 comentários em “Player de Marcha Imperial 8 bits (Arduino)

    1. Yup o/

      Suponho que você esteja procurando esse código:

      Zelda1:d=4,o=5,b=125:a#,f.,8a#,16a#,16c6,16d6,16d#6,2f6,8p,8f6,16f.6,16f#6,16g#.6,2a#.6,16a#.6,16g#6,16f#.6,8g#.6,16f#.6,2f6,f6,8d#6,16d#6,16f6,2f#6,8f6,8d#6,8c#6,16c#6,16d#6,2f6,8d#6,8c#6,8c6,16c6,16d6,2e6,g6,8f6,16f,16f,8f,16f,16f,8f,16f,16f,8f,8f,a#,f.,8a#,16a#,16c6,16d6,16d#6,2f6,8p,8f6,16f.6,16f#6,16g#.6,2a#.6,c#7,c7,2a6,f6,2f#.6,a#6,a6,2f6,f6,2f#.6,a#6,a6,2f6,d6,2d#.6,f#6,f6,2c#6,a#,c6,16d6,2e6,g6,8f6,16f,16f,8f,16f,16f,8f,16f,16f,8f,8f

      Encontrei aqui: http://arcadetones.emuunlim.com/nes/zelda.html

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*