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 na matriz de contatos:
O circuito montado em uma matriz de contatos pode ser visto na ilustração a seguir:
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!
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.