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:

Buzzer Arduino

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:

Circuito Arduino e Buzzer

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.

5/5 - (1 vote)