Controle de luz com LDR e Arduino

Utilize LDR e Arduino para montar um sistema que acende as luzes ao escurecer. Esse é um circuito bem simples de montar e que utiliza pouquíssimos componentes. Entre eles, um componente barato e fácil de encontrar: o LDR (Light Dependent Resistor, ou Resistor Dependente de Luz).

LDR, como o próprio nome diz, é um resistor cuja resistência varia em função da luminosidade que incide sobre ele, devido ao material fotossensível que cobre o componente.

Como funciona o LDR

Ao iluminarmos um LDR, a sua resistência apresenta valores muito baixos. Ao cortarmos a iluminação, a resistência sobe. Observe isso na prática nas fotos abaixo: 

Com incidência de luz no LDR (imagem da esquerda), a resistência medida é baixa. Cobrindo parcialmente o LDR (imagem da direita) ocorre o efeito contrário, ou seja, o aumento da resistência.

Conectando o LDR no Arduino

Conhecendo os princípios básicos do componente, podemos montar um circuito com LDR e Arduino, onde o led vai acender em um ambiente escuro, e apagar em um ambiente claro. Conectamos o led na porta digital 10 e o LDR na porta analógica A5:

O programa para este circuito lê o valor da porta analógica (que deve estar na faixa de 0 a 1024), verificando se o valor é maior do que 500 (LDR encoberto) e consequentemente acendendo o led.

Usei no meu circuito um resistor de 330 ohms para o led e de 10K para o LDR. Caso o seu circuito não funcione adequadamente, ajuste esses valores:

//Programa: LDR - Sensor de Iluminação  
//Autor: Arduino e Cia  
   
int portaLed = 10; //Porta a ser utilizada para ligar o led  
int portaLDR = A5; //Porta analógica utilizada pelo LDR  
  
void setup()  
{  
  pinMode(portaLed, OUTPUT); //Define a porta do Led como saída  
}  
   
void loop()  
{  
  int estado = analogRead(portaLDR);  //Lê o valor fornecido pelo LDR  
    
  //Caso o valor lido na porta analógica seja maior do que 
  //800, acende o LED  
  //Ajuste o valor abaixo de acordo com o seu circuito  
  if (estado > 500)    
  {  
    digitalWrite(portaLed, HIGH);  
  }  
  else  //Caso contrário, apaga o led  
  {  
    digitalWrite(portaLed, LOW);  
  }  
}  

E você lembra deste post sobre dimmer usando potenciômetro? Pois bem, podemos utilizar o circuito acima para obter o mesmo efeito de dimmer: quanto mais encoberto estiver o LDR, maior será a luz emitida pelo LED:

//Projeto: Controle de luminosidade de led com LDR  
//Autor: Arduino e Cia  
   
int pinoled = 10; //Pino ligado ao anodo do led  
int pinopot = 5;  //Pino ligado ao LDR  
int valorpot = 0; //Armazena valor lido do LDR, entre 0 e 1023  
float luminosidade = 0; //Valor de luminosidade do led  
   
void setup()  
{  
  Serial.begin(9600);    //Inicializa a serial  
  pinMode(pinoled, OUTPUT); //Define o pino do led como saída  
  pinMode(pinopot, INPUT);  //Define o pino do LDR como entrada  
}  
   
void loop()  
{  
  //Le o valor - analogico - do LDR  
  valorpot = analogRead(pinopot);  

  //Converte o valor lido do LDR
  luminosidade = map(valorpot, 0, 1023, 0, 255); 
  Serial.print("Valor lido do LDR : ");   

  //Mostra o valor lido do LDR no monitor serial  
  Serial.print(valorpot);  
  Serial.print(" = Luminosidade : ");  

  //Mostra o valor da luminosidade no monitor serial  
  Serial.println(luminosidade); 
  
  //Acende o led com luminosidade variável
  analogWrite(pinoled, luminosidade); 
 }  

Estes são dois exemplos simples de utilização do LDR com Arduino, mas que você pode usar para acionar outros dispositivos. Experimente colocar no lugar do LED um módulo relé para acionar, por exemplo, uma lâmpada comum ao anoitecer.

5/5 - (2 votos)

Related posts

Sequencial de Leds com Arduino Uno

by Arduino e Cia
12 anos ago

Módulo sensor de linha analógico QRE1113 Sparkfun

by Arduino e Cia
10 anos ago

Como usar o PCF8574 – Expansor de portas I2C

by Arduino e Cia
8 anos ago
Sair da versão mobile