Tocar sons no Arduino baseados em entrada de sensor de luz

Tocar sons no Arduino baseados em entrada de sensor de luz

Neste projetinho vamos fazer com que o Arduino produza sons em diferentes frequências, de acordo com valores medidos a partir de um sensor de luminosidade (LDR) conectado a uma entrada analógica.

A ideia é que, de acordo com a intensidade da luz que incide sobre o sensor, seja gerado um sinal de uma frequência diferente, a ser reproduzido em um alto-falante pequeno ou buzzer, como uma espécie de Theremin, porém acionado por luz.

Lista de Componentes:

  • 1 Arduino Uno
  • 1 resistor 4,7 kΩ
  • 1 resistor 150 Ω
  • 1 alto-falante ou buzzer
  • 1 LDR (Light-Dependent Resistor)
  • fios diversos
  • matriz de contatos

Circuito esquemático:

Na figura a seguir podemos ver o esquemático do circuito que construiremos:

Circuito esquemático - tocar sons no Arduino com sensor de luz

Circuito na matriz de contatos:

O circuito montado em uma matriz de contatos pode ser visto na ilustração a seguir:

Tocando sons no Arduino a partir de sensor LDR

Código:

Usaremos a função tone() do Arduino para gerar o sinal sonoro a ser reproduzido. Essa função recebe três parâmetros: pino de saída, frequência do tom e tempo de reprodução. Para saber mais sobre a função tone() leia nosso artigo sobre funções tone() e notone() no Arduino.

Vamos ao código utilizado na programação do Arduino:

int leitura;
float tom;
int altoFalante = 8;
int tempo = 10;
void setup() {
 // Serial.begin(9600);
}
 
void loop() {
 // efetuar leitura do sensor:
 leitura = analogRead(A0);
 /*Serial.println(leitura);
 delay(60);*/
 // mapear o resultado da leitura do sensor para faixa de tons desejada:
 tom = map(leitura, 70, 1000, 30, 2500);
 // alterar o tom, tocando por 10 ms:
 tone(altoFalante, tom, tempo);
}

Usamos a função map() para mapear os valores lidos na entrada analógica para valores de frequência que serão reproduzidos pela função tone(). No caso, os valores lidos se encontram na faixa de 70 a 1000 aproximadamente (usamos as funções Serial para descobrir esses valores), e são dependentes dos resistores utilizados no divisor de tensão conectado à entrada A0. E mapeamos esses valores para a faixa de 30 a 2500 Hz, que correspondem aos sons que serão reproduzidos. Você pode experimentar com outros valores de frequências, até o limite da audição humana (20 Hz a 20.000 Hz)!.

Para testar, carregue o código no microcontrolador e aproxime / afaste sua mão do sensor LDR para variar a luminosidade que incide sobre ele. Você ouvirá o som produzido no alto-falante variado sua frequência de acordo.

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

Sobre Fábio dos Reis (1223 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens 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.

1 Comentário em Tocar sons no Arduino baseados em entrada de sensor de luz

  1. Antonio Paulo // 18/09/2019 em 14:46 // Responder

    Olá. Gostaria de saber se seria muito complicado acionar uma gravação de áudio através do sensor de presença no arduino? A idéia é para colocar na saída da casa da minha sogra, alertando-a se não esqueceu nada no fogo, ou o gás ligado, etc toda vez que ela passasse pelo sensor. Ela está começando a ficar esquecida e já aconteceu 4 vezes em que ela saiu e deixou a panela no fogo, por sorte não aconteceu o pior.

Escreva um comentário

Seu e-mail não será divulgado


*