fbpx
ArduinoNovidadeSérie Arduino

Controle de Luz com sensor LDR e Arduino



Sabia que podemos utilizar o sensor de luminosidade LDR em conjunto com o Arduino para controlar a luz de um ambiente?

A proposta deste tutorial é ensinar a vocês como utilizar um sensor LDR em conjunto com a placa Arduino para ligar e desligar um LED a partir da luminosidade que incide sobre a superfície do sensor, de modo que:

• Quando houver a presença de luminosidade incidindo na superfície do LDR, o LED deverá ser desligado;
• Quando não houver a presença de luminosidade incidindo na superfície do LDR, o LED deverá ser ligado.

O princípio de funcionamento deste projeto é o mesmo utilizado nos postes de iluminação da rua, que utilizam LDR para acionar as luzes da cidade quando anoitece.


MATERIAIS NECESSÁRIOS


1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
1 x Cabo USB;
1 x LDR;
1 x Protoboard;
1 x Led difuso;
1 x Resistor de 10 kΩ;
1 x Resistor de 220 Ω;
Fios de jumper macho-macho.


ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

Antes de iniciar a montagem elétrica do circuito, certifique-se que a sua placa Arduino esteja desligada. Monte o circuito utilizando a protoboard, o LDR, o LED, os resistores e os fios.


Ao montar o circuito na protoboard observe os seguintes pontos:


• Um terminal do LDR deve ser conectado ao GND e o outro ao pino analógico da placa UNO, neste caso usamos o pino A0. Conectamos também uma resistência de 10 kΩ entre o pino A0 e o 5V da placa UNO;
• O ânodo do LED encontra-se conectado a um resistor de 220 Ω e a porta digital 10 da placa UNO.


ELABORANDO O CÓDIGO


Antes de iniciar o código do exemplo prático proposto precisamos encontrar o valor de referência do LDR. Para isso, utilizaremos o código do tutorial Utilizando o Sensor de Luminosidade LDR no Arduino. Desta forma, faça o projeto deste tutorial e observe o resultado no monitor serial para pouca luz e muita luz incidindo no LDR.

A partir destas informações, encontramos a grandeza de valores para o LDR quando exposto a muita luz e a pouca luz. Com base nestes valores, podemos definir um parâmetro para acionamento do LED. No nosso exemplo, vamos utilizar 500 como valor de referência. Você pode alterar este valor da forma que achar mais adequado de acordo com os valores lidos no seu projeto, visto que dependendo da luminosidade e do fabricante do LDR estes valores poderão ser bem diferentes.

Feito isso, vamos entender a lógica de programação do exemplo prático proposto a partir dos seguintes passos:

1- Declarar as variáveis:

A variável led será utilizada para representar o pino digital 10, a variável ldr será utilizada para representar o pino analógico A0 e a variável valorldr será utilizada para armazenar das leituras do sensor LDR.

2- Definir os pinos de entrada e saída:

A variável ldr será definido como entrada, ou seja, INPUT e a variável led será definido como saída, ou seja, OUTPUT.

3- Iniciar a comunicação serial

Inicializamos a comunicação serial por meio da instrução Serial.begin(9600);.

4- Realizar a leitura da porta analógica e imprimir o valor lido

Como no projeto anterior, iniciamos o loop() realizando a leitura da porta analógica A0 (ldr), para isso utilizaremos a função analogRead(ldr), e armazenaremos este valor na variável valorldr. Em seguida, imprimiremos o valor no monitor serial por meio da instrução Serial.println(valorldr);.

5- Realizar a comparação

Utilizaremos a lógica do if…else para comparar o valor lido pela porta analógica:
• Se o valor lido (ValorLDR) no sensor LDR for menor que 500 (valor de referência) então o led será ligado, recebendo nível lógico alto (HIGH). Observação: O valor de comparação deverá ser ajustado de acordo com o seu circuito.
• Senão (se o valor lido no sensor LDR não for menor que 500) led receberá nível lógico baixo (LOW), sendo desligado ou permanecendo desligado.

Desta forma, o Sketch ficará da seguinte maneira:

int led = 10; //Atribui a porta digital 10 a variável led
int ldr = A0; //Atribui A0 a variável ldr
int valorldr = 0;//Declara a variável valorldr como inteiro

void setup() {
  pinMode(led, OUTPUT); //Define led (pino digital 10) como saída
  pinMode(ldr, INPUT); //Define ldr (pino analógico A0) como saída
  Serial.begin(9600); //Inicialização da comunicação serial, com velocidade de comunicação de 9600
}

void loop() {
  valorldr = analogRead(ldr);//Lê o valor do sensor ldr e armazena na variável valorldr
  Serial.println(valorldr);//Imprime na serial os dados de valorldr

  if ((valorldr) < 500) { //Se o valor de valorldr for menor que 500:
    digitalWrite(led, HIGH);//Coloca led em alto para acioná-lo
  }

  else { //Senão:
    digitalWrite(led, LOW);//Coloca led em baixo para que o mesmo desligue ou permaneça desligado
  }
}

Espero que tenham gostado deste tutorial. Em caso de dúvidas deixe seu comentário abaixo.

Att.,

Carol Correia Viana


Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.

Carol Correia Viana

Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.