Sons no Arduino usando buzzer
Você sabia que é possível gerar sons a partir do Arduino? Isso é muito fácil de fazer usando um buzzer.
Não só é possível, como é bem simples: basta usar a função “tone“. Perfeito para quem, ao contrário deste que vos escreve, tem intimidade com a música.
Você pode utilizar essa função do Arduino para criar sistemas de avisos e alarmes, usar em brinquedos, jogos, máquinas e explorar outras possibilidades, em conjunto com sensores, módulos e atuadores.
Sons no Arduino com a função TONE
Na programação do Arduino a função tone é responsável por comandar a geração de sons, e esse comando tem o seguinte formato:
tone(pino, frequencia, duração)
onde a frequência do tom é setada em hertz, e a duração, em milisegundos.
Para efeito de testes, usei um pequeno buzzer, desses que se usam em placa-mãe de computador, como esse:
A ligação é feita com o pino 10 do Arduino ligado ao positivo (+) do buzzer/falante, e o outro pino do buzzer ligado ao GND:
Apesar de usarmos nos testes uma placa Arduino Uno, o circuito não funciona apenas nessa placa, funcinando também com outras placas da linha como Mega e Nano.
Para testar, carregue o programa abaixo e ouça uma linda melodia. Basicamente temos as notas musicais (do, re, mi…) e vamos alternando o uso dessas notas variando a duração de cada uma. Lembrando que o valor “10” no comando tone se refere ao pino onde está conectado o buzzer:
//Programa: Som no Arduino - Do Re Mi //Autor: Arduino e Cia void setup() { pinMode(10,OUTPUT); //Pino do buzzer } void loop() { delay(2000); tone(10,262,200); //DO delay(200); tone(10,294,300); //RE delay(200); tone(10,330,300); //MI delay(200); tone(10,349,300); //FA delay(300); tone(10,349,300); //FA delay(300); tone(10,349,300); //FA delay(300); tone(10,262,100); //DO delay(200); tone(10,294,300); //RE delay(200); tone(10,262,100); //DO delay(200); tone(10,294,300); //RE delay(300); tone(10,294,300); //RE delay(300); tone(10,294,300); //RE delay(300); tone(10,262,200); //DO delay(200); tone(10,392,200); //SOL delay(200); tone(10,349,200); //FA delay(200); tone(10,330,300); //MI delay(300); tone(10,330,300); //MI delay(300); tone(10,330,300); //MI delay(300); tone(10,262,200); //DO delay(200); tone(10,294,300); //RE delay(200); tone(10,330,300); //MI delay(200); tone(10,349,300); //FA delay(300); tone(10,349,300); //FA delay(300); tone(10,349,300); //FA delay(300); }
Depois dessa aula de música, que tal uma sirene de policia ? Use este programa, que aumenta e diminui a frequência do som, criando o efeito que precisamos:
//Programa: Som no Arduino - Sirene //Autor: Arduino e Cia #define tempo 10 int frequencia = 0; int Pinofalante = 10; void setup() { pinMode(Pinofalante,OUTPUT); //Pino do buzzer } void loop() { for (frequencia = 150; frequencia < 1800; frequencia += 1) { tone(Pinofalante, frequencia, tempo); delay(1); } for (frequencia = 1800; frequencia > 150; frequencia -= 1) { tone(Pinofalante, frequencia, tempo); delay(1); } }
Se você curtiu esse post sobre Sons no Arduino, leia também o artigo NewTone – Alternativa à biblioteca Tone do Arduino.
Nele falo sobre problemas de conflito da biblioteca tone padrão do Arduino com outras bibliotecas, e como resolver esse problema.
Confira aqui no Arduino e Cia outros posts não só sobre Arduino, mas também sobre Raspberry Pi, ESP8266 e ESP32.
style
muito bom projeto. tem algum email para contato?
Boa noite e obrigado ! Pode me encontrar no [email protected]. Abraço.
Boa noite! Comprei um módulo destes, mas não consigo alterar os tons, fica sempre no mesmo agudo constante, estou errando algo na hora da programação?
Bom dia,
Creio que não. você testou com o programa do post ? Veja também o post sobre a biblioteca Newtone, vale a pena testar e ver se o problema persiste.
Abraço !
Você provavelmente comprou um buzzer ativo (com circuito de oscilação já embutido). Com esses não tem como emitir som em diferentes frequências.
Voce comprou o buzzer errado!! O tem dois tipos, buzzer ativo e buzzer passivo, o ativo fica sempre ligado em uma unica frequencia, e o passivo é o que consegue tocar as musicas do programa.
Parabéns amigo grande postagem.
Poderia me dizer que música é a do primeiro código, já devo ter escutado ela em algum lugar.
Fico no aguardo. Valeu.
Valeu ! rs.
Vou pesquisar e te falo. Já ouvi essa música em alguma lugar. 🙂
Abraço !
Obrigado.
Esta musica chama-se "Pastorzinho"
tem como ele falar palavras pré programada. tipo eu quero q ele fala CASA, mais só quando eu mandar um sinal especifico em algum terminal. tem como?
Boa tarde,
Nesse caso específico eu recomento este módulo: http://www.arduinoecia.com.br/2015/06/modulo-mp3-wtv020-sd-arduino.html
Abraço!
muito show parabéns, meu caro amigo
Alguém sabe onde consigo sons de avião? Desejo colocar em um avião de brinquedo de minha neta,! Obrigado.
Bom dia!
Eu fiz a programação para o Arduino falar uma frase gravada em arquivo .WAV e agora gostaria de usar o sensor ultrasonica para que quando um objeto passasse ele falava esta frase. Porém não consegui ligar os codigos do sensor ultrasonico com o do arquivo .WAV
Poderia me ajudar.
Boa tarde!
Tem como colocar dois buzzers tocando juntos?
Oi Bruna,
Tente este link, por favor, creio que tem o que você precisa: http://forum.arduino.cc/index.php?topic=141871.0
Abraço!
Adilson
Bom dia!
teria alguma forma de contato? estou com um projeto que envolve usar o Arduino para fazer música e gostaria de mais dicas se possível
Boa tarde,
Por favor entre em contato utilizando o formulário de contato no lado direito da página.
Abraço!
Adilson
Você tem as frequência que geram as outras notas?
Tipo Lá e Si que não possuem neste código.
jà deve ter achado a resposta, mas em todo caso…
Dó: 262 Hz
Ré: 294 Hz
Mi: 330 Hz
Fá: 349 Hz
Sol: 392 Hz
Lá: 440 Hz
Si: 523 Hz
Posso utilizar um alto-falante no lugar do buzzer?
Oi Jozias,
Diretamente provavelmente vai ficar muito baixo. O ideal seria usar em conjunto com algum tipo de amplificador.
Abraço!
Adilson
Você sabe me dizer se esse buzzer serve pra emitir sons em altas frequências? Quero fazer um repelente de gatos, não sei a frequência exata da audição deles mas sei que é bem mais do que 30kHz. Aceito sugestões de outros dispositivos também! Abraço
[…] Sons no Arduino usando buzzer […]
Boa noite amigo. Excelente seu artigo, parabéns! Eu pretendo automatizar um avião de brinquedo de minha neta, colocando sensor de obstáculos e motores. Pretendo colocar também som de avião mas não acho um código de exemplo em lugar nenhum. Você tem ideia de onde eu poderia conseguir? Desde já agradeço.