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!