Olá povo, hoje vou fazer um pequeno exemplo de como usar um LDR (Light Dependent Resistor, ou em português Resistor Dependente de Luz).
Um LDR é um tipo de resistor cuja resistência varia conforme a intensidade de luz que incide sobre sua superfície. Portanto o LDR "transforma luz em valores de resistência".
A idéia é poder controlar a intensidade de um LED de acordo com a intensidade de luz que incide sobre o LDR, ou seja, quanto mais luz tivermos no local, menor será o brilho do LED e quanto mais escuro, maior será o brilho do LED.
Bom... então segue a lista de componentes:
1 - Arduino Duemilanove
2 - LDR 5mm
3 - LED
4 - Resistor de 10K
5 - Resistor 220
6 - Fios
O primeiro passo é fazer as devidas ligações como no circuito abaixo:
em seguida o código:
/*Resultado final:
***Arduino + LDR***
José Maria DVD
*/
int pinoLED = 9; // pino digital 9
int pinoLDR = 5; // pino analógico 5
int LDR = 0; // receberá o valor do LDR
int LED = 0; // valor do LED
void setup() {
Serial.begin(9600);
}
void loop(){
//O valor lido da porta será no intervalo (0 a 1023)
LDR = analogRead(pinoLDR);
//Mostra na serial
Serial.print("LDR = ");
Serial.println(LDR);
//Ajuste de valores para um melhor filtro
if(LDR > 600) LDR = 600;
else if(LDR < 100) LDR = 100;
//Tranforma uma escala de valores em outra (255 a 0).
LED = map(LDR, 100, 600, 255, 0);
analogWrite(pinoLED, LED);
delay(50);
}
Veja o vídeo do funcionamento.
Observações e Comentários:
1 - Você deverá fazer alguns ajustes dependendo da intensidade de luz no ambiente. No meu caso precisei ajustar a seguinte linha de código:
//Ajuste de valores para um melhor filtroNormalmente o valor do LDR é de 0 a 1023 no entanto com os testes feito no ambiente, observei que o valor variava de 50 a 700. Portanto optei por diminuir o intervalo (100 a 600) e com isso obtive um resultado final mais concreto(o LED chegava a apagar totalmente).
if(LDR > 600) LDR = 600;
else if(LDR < 100) LDR = 100;
//Tranforma uma escala de valores em outra (255 a 0).
LED = map(LDR, 100, 600, 255, 0);
2 - Aconselho estudar um pouco sobre a função map, com ela boa parte de seus problemas serão resolvidos.
3 - O resistor de 10k é para o LDR e o de 220 é para o LED. Aconselho também estudar um pouco sobre Divisor de Tensão.
Até a próxima.