• Welcome to LusoRobótica - Robótica em Português.
 

Usar arduino para criar musica(usando um buzzer)

Started by Raul, 02 de March de 2010, 22:46

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Raul

Boa Noite a todos.
Acho que quem devia ter o direito de fazer este tópico é o Senhor Microbyte, sem ajuda dele não teria as bases.
Vou colocar a perguntas que lhe fiz e as respectivas respostas.

Citação de: Raul
   
QuoteEu queria fazer um projecto que tivesse tocasse a musica de anos, como o teu que toca a musica de natal, se é possível me arranjares o site onde obtiveste o teu para eu procurar a musica de anos sff



Bem, eu usei a biblioteca Tone.
http://code.google.com/p/arduino-tone/
Do lado direito tens links para páginas que têm os códigos de músicas conhecidas, de certeza k encontras a música dos anos.

Citação de: Raul


   
QuoteE que tipo de buzzer me aconselhas a comprar?



Eu usei um "Piezzo" (ou "piezzo element") e penso que é para esses componentes k a biblioteca foi feita, pelo que é o que deves usar.

[color=]Citação de: Raul[/color]
QuoteMais uma pergunta se existe algum problema tocar musica e trabalhar com leds ( com delays) se altera o ritmo da musica?

Desde que não coloques delays(), podes fazer tudo.
Se vais ligar os LEDs no circuito da música, deves querer pô-los a piscar ao som da música. Eu cheguei a fazer isso, depois de veres o código, tiras facilmente a função que executa a cada nova nota da música e é uma questão de meteres um contador a incrementar (até X combinações de LEDs diferentes).

Por exemplo, imagina que querias alternar entre 2 LEDs ao som da música:
crias um contador como variável global:
int counter = 0;

e na tal função que é executada a cada nova nota na música, incrementas esse valor, mas como só tens 2 combinações diferentes, metes um "reset":
counter++;
if(counter > 2) counter = 1;

Assim o teu contador vai apenas tomar o valor 1 e 2.
Depois na main, metes as condições para as combinações (vais ter 2 aqui):
switch(counter){
  case 1 : digitalWrite(led1, HIGH); digitalWrite(led2, LOW); break;
  case 2 : digitalWrite(led1, LOW); digitalWrite(led2, HIGH); break;
}


Acho que percebeste a ideia. Agora é uma questão de fazeres as combinações que queres...

Só uma curiosidade. A própria função digitalWrite() provoca um atraso (cerca de 4 useg). Não é muito quando se executa meia dúzia de vezes, pelo que não te deve dar grandes dores de cabeça. Mas se executasses muitas, és capaz de notar um atraso na música.


Tenho a agradecer ao MicroByte.
Mais tarde irei colocar o circuito e o meu projecto.

microbyte

Quero ver uma disco completa. Música e luzes ;)

Força nisso... Mete aí as dúvidas que fores tendo, nós vamos ajudando.

tcustodio

Era o que iria alertar, a função delay() paraliza-te o arduino durante X tempo, logo não poderias executar mais nada enquanto tocavas a música.
Por uma questão de conveniência, usaria as novas funções Tone que já vêm no IDE do arduino, versão 18, mas não sei se são bloqueantes ou não (se podes executar mais alguma coisa enquanto cada nota toca),
Já usei a biblioteca Tone que o microbyte te indicou e pareceu-me ser fácil de usar também.
Quanto ao buzzer, tenta procurar um que funcione entre os 4V e os 20V (se não encontrares os valores discriminados não te preocupes, deve dar na mesma ;)) digo isto porque tenho uns que só dão até 1.5V

Boa sorte ;)
Tiago Custódio,
- Não me dêem álcool se estiver um piano por perto.

RicardoSantos

É possivel fazer isto usando este BUZZER - PC MOUNT 12MM 2.048KHZ certo?

microbyte

Quote from: RicardoSantos on 18 de May de 2010, 05:59
É possivel fazer isto usando este BUZZER - PC MOUNT 12MM 2.048KHZ certo?
Respondo-te com um quote:
Quote from: tcustodio on 02 de March de 2010, 23:46
Quanto ao buzzer, tenta procurar um que funcione entre os 4V e os 20V (se não encontrares os valores discriminados não te preocupes, deve dar na mesma ;)) digo isto porque tenho uns que só dão até 1.5V

As dimensões não interessam, tens é de ver as especificações.

RicardoSantos

Sei eu sei eu só meti aquelas indicações porque eram as que estava na loja...
O que queria dizer era que tava a falar do buzzer que está à venda na loja LusoRobótica...

E sim o buzzer funciona =)

Jay_OR

Espero não estar a dizer nenhuma asneira, mas eu usei o buzzer de um nokia 3330, e liguei-o no arduino e consegui ouvir sem problemas o programa CIRC-06 que esta no ARDX-EG-SPAR-WEB.

Por isso quem quiser um buzzer baratinho, basta abrir ai um telemóvel velho que tenha por casa.
(Já que aproveitei o mesmo 3330 para tirar o LCD para também ligar ao arduino xD)