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.

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.
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:
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!