Nesse post vamos ver como acender luzes automaticamente e regular a luminosidade de um led utilizando o módulo sensor de luz, criando um dimmer com LDR.

Módulo sensor de luz LDR

O módulo funciona com alimentação de 3.3 à 5v e tem um CI comparador de tensão LM393, além de um potenciômetro para ajuste de sensibilidade.

Possui duas saídas : uma analógica (A0), que nesse post vamos utilizar para ajustar o brilho de um led, e uma digital (D0), que gera o valor 0 ou 1 na saída, e que vamos utilizar para acionar um segundo led.

Módulo LDR - Detalhes

No lado direito um led vermelho indica quando o módulo está energizado, e no lado esquerdo um led verde indica a alteração do estado da saída digital D0. Essa alteração da porta D0 pode ser regulada por meio do potenciômetro existente na placa : você determina em qual nível de luminosidade a saída D0 será acionada.

Você pode usar esse tipo de informação para controlar o acionamento de um relé que acende uma lâmpada caso escureça, ou então algum tipo de alarme que, digamos, você queira que funcione apenas durante a noite (ou durante o dia, por que não ?).

Vamos montar um circuito que vai utilizar as duas portas do módulo, sendo que a analógica vai controlar o brilho do led vermelho (será um dimmer), e a outra vai acender ou apagar um led verde conforme a regulagem feita no potenciômetro:

Circuito Arduino módulo LDR

O led vermelho está ligado à porta digital 6, que possui a função PWM (Pulse Width Modulation – Modulação por largura de pulso), e com isso podemos controlar a luminosidade do led de acordo com o valor que vamos enviar para essa porta (0 à 255).

Já o led verde vai simplesmente acender ou apagar conforme o estado da porta D0 do módulo.

Programa dimmer com módulo sensor de luz LDR

O programa lê o valor da entrada analógica A3, converte o valor lido (de 0 a 1023),para um valor de 0 a 255 e envia esse valor para a porta digital 6 (led vermelho). 

Ao ler o valor da porta digital 2, ele acende ou apaga o led verde:

// Projeto : Modulo sensor de luz LDR
// Autor : Arduino e Cia

//Led vermelho ligado a porta 6 - PWM
int pinoled = 6;  
//Led vermelho ligado a porta 7
int pinoled2 = 7;
//Pino ligado a porta A0 do modulo LDR
int pino_analogico_A0 = A3; 
//Pino ligado a porta D0 do modulo LDR
int pino_digital_D0 = 2;

//Armazena o valor lido da porta D0
int valord0 = 0;
//Armazena valor lido da porta A0, entre 0 e 1023
int valora0 = 0;  

float luminosidade = 0; //Valor de luminosidade do led

void setup()
{
   //Define os pinos dos leds como saida
   pinMode(pinoled, OUTPUT);  
   pinMode(pinoled2, OUTPUT); 
   //Define os pinos do modulo como entrada
   pinMode(pino_analogico_A0, INPUT); 
   pinMode(pino_digital_D0, INPUT);
   Serial.begin(9600);        
}

void loop()
{
  //Le o valor da porta digital do modulo
  valord0 = digitalRead(2);
  switch(valord0)
  {
    case 0:
    digitalWrite(pinoled2, LOW);
    break;
    case 1:
    digitalWrite(pinoled2, HIGH);
    break;
  }
  
  //Le o valor da porta analogica do modulo
  valora0 = analogRead(pino_analogico_A0);
  
  //Converte e atribui para a variavel "luminosidade" o
  //valor lido da porta analogica
  luminosidade = map(valora0, 0, 1023, 0, 255);  

  //Mostra o valor lido do potenciometro e a luminosidade
  //no Serial Monitor
  Serial.print("Valor da porta analogica : "); 
  Serial.print(valora0);   
  Serial.print(" = Luminosidade : ");
  Serial.println(luminosidade);  

  //Envia sinal analogico para a saída do led, com luminosidade variavel
  analogWrite(pinoled, luminosidade);  
  delay(100);
}

Carregue o programa no Arduino e teste o módulo cobrindo o LDR ou direcionando uma lanterna para o sensor, e observe a variação no acionamento dos leds.

Gostou? Confira outros posts com Arduino aqui mesmo no Arduino e Cia!

Avalie este post!