Arduino – Tocando sons em um alto-falante – Sketch 02

Tocando sons em um alto-falante com Arduino

Neste artigo iremos criar um projeto simples mas muito interessante: iremos fazer com que o Arduíno toque sons de frequências diversas em um alto-falante (ou outro transdutor de áudio qualquer).

Para isso usaremos a função tone do Arduino. Essa função gera um sinal sonoro com uma frequência e duração ajustáveis, sendo que ajustaremos a frequência usando um potenciômetro e a duração via código.

Conectaremos o potenciômetro de tom ao pino de entrada analógica 0 (A0) do Arduino, e usaremos um outro potenciômetro para controlar o volume do som que será reproduzido no alto-falante. Confira a lista de componentes necessária e o esquema do circuito:

Lista de componentes:

  • 1 Arduíno Uno1 Potenciômetro de 1KΩ
  • 1 Potenciômetro de 10KΩ
  • 1 Alto-falante de 8Ω (ou outro transdutor, como um buzzer)

Esquema do circuito:
Acionando alto-falante com Arduino

Veja um desenho das conexões dos componentes ao Arduíno:

Reproduzindo sons com Arduino

E, finalmente, o código que será utilizado:

const int pino_falante = 9; // Conectar falante ao pino 9
const int pot_freq = 0; // potenciômetro para ajuste de frequência - pino A0
void setup(){// Aqui não vai nada neste sketch}
void loop(){
  int ler_potenc = analogRead(pot_freq); // Ler entrada para ajuste de frequência
  // mapear os valores analógicos lidos para valores significativos:
  int frequencia = map(ler_potenc, 0, 1023, 100, 3000); // 100 Hz a 3 KHz
  int tempo = 300; //duração do tom, em ms
  tone(pino_falante, frequencia, tempo); // envia som ao falante
  delay(300); //pausa de 300ms
}

Explicando o código

Vamos à explicação do código empregado.

Começamos declarando duas constantes, pino_falante, que servirá para ajustar o pino digital 9 para a conexão do alto-falante, e pot_freq, que determina que o pino analógico 0 será o local de conexão do potenciômetro de mudança de tom.

Na função setup() não precisamos ajustar nada neste sketch – mas ela tem de estar lá, mesmo que vazia.

Dentro da função principal do programa (loop) começamos por declarar uma variável de nome ler_potenc, a qual receberá o retorno da chamada da função analogRead, a qual lê o valor de tensão a partir do pino pot_freq (A0). Essa leitura será utilizada para determinar a frequência do tom a ser gerado.

Na sequência declaramos uma variável chamada frequencia, que receberá o retorno da função map. A função map é usada para mapear um par de valores (no caso, o intervalo de 0 a 1023) para outro par de valores mais significativos para o programa em questão (no caso, os valores de 100 a 3000). Lembre-se que a entrada analógica tem uma resolução de 10 bits, o que significa que ela pode discriminar 1024 valores distintos de tensão. Esses valores mapeados representarão as frequências que serão geradas posteriormente, na faixa de 100 a 3000 Hz.

Declaramos então a variável inteira tempo, que receberá um valor para ajustar o tempo de duração do tom executado, em milissegundos.

A função tone será usada para gerar o tom e enviá-lo ao pino digital pino_falante (9), onde está conectado o alto-falante. Essa função recebe três parâmetros: número do pino, frequência do som em Hertz e duração do tom em milissegundos. O terceiro parâmetro é opcional – se omitido, a função tocará o tom até que seja interrompida.

E para finalizar, adicionamos um intervalo entre os sons, de 300 milissegundos, com o uso da função delay. Você pode mudar esse valor à vontade.

É isso aí! Até o próximo projeto!

 

Sobre Fábio dos Reis (1325 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

1 Comentário em Arduino – Tocando sons em um alto-falante – Sketch 02

  1. Olá, gostaria de saber como ligar o auto falante usando a linguagem Python, já utilizo ela no Arduíno, porém não sei a sintaxe para ligar o tone. Grato desde já!!

Escreva um comentário

Seu e-mail não será divulgado


*