terça-feira, 28 de junho de 2011

Sensor de proximidade com o Arduino e sinal sonoro na caixa de som de um PC

A ideia deste experimento é produzir um som cuja frequencia depende da intensidade da luz.
Circuito:
1. Um LDR é conectado através do um resistor a entrada analogica do Arduino (no exemplo analog 0). No exemplo utilizamos R= 33 Kohms conectado no +V e o LDR em GND.
2. Utilizaremos a saida 9 do Arduino e apenas por precaução um resistor de 330 a 1 Kohms em serie com o alto falante. Veja a figura abaixo com o esquema


A foto da montagem também pode ser visualizada abaixo



O código segue abaixo

int LDR; //declara variavel
float VLDR;
int som; // variavel som para o alarme

void setup(){
Serial.begin(9600);
pinMode(A0, INPUT);// entrada A0

}

void loop(){
LDR = analogRead(A0);
VLDR=LDR*5.0000000/1024;
Serial.print(LDR);
Serial.print(" ");
Serial.print(VLDR);
Serial.println ( "\t");
delay(2);

som = map(LDR, 100, 200, 100, 1000); // toca o som com uma frequencia que
//varia de 100 a 1000 Hz de acordo com a distancia:
tone(9, som, 10000);
}

Segue o link para o tutorial "Tone" que mostra como utiliza-lo lhttp://arduino.cc/en/Reference/Tone

O uso esta resumido abaixo

tone ( pino, frequência, tempo de duração )


Passos:

1. Cole o código acima na IDE do Arduino
2. Imprima os valores lidos no LDR e verifique o intervalo que pretende obter o sinal sonoro
3. A função " int som = map(LDR, 100, 200, 100, 1000)" fará esta conversão em valor lido no LDR (aqui está em decimal , varia de 0 a 1023 e está em vermelho) e a saída para o pino 9 será um sinal cuja frequência esta variando de 100 a 1000 e está em azul)
4 a função " tone(9, som, 10000)" indica; pino de saída , frequência, que no caso deixaremos dependente da distancia e portanto da leitura no LDR, e o tempo de duração em geral maior do que 100 ms, para retirar o ruido de fundo.


Segue abaixo video que mostra o efeito que se obtem com este circuito


Códigos Fonte para outros sons que voce pode obter incluindo melodias estão disponiveis na pasta abaixo

Para que você possa criar suas musicas segue um link para aos valores de frequência das notas musicais

Se você quiser baixar uma biblioteca com as notas musicais para o Arduino. Segue o link

Veja outros exemplos para gerar sons com o Arduino