Arduino UNO R4 - Módulo LDR

Este tutorial ensina você a usar um Arduino UNO R4 e um sensor de luz LDR para verificar e medir níveis de luz. Vamos aprender o seguinte em detalhes:

Arduino UNO R4 LDR Light Sensor Module

Sobre o Módulo Sensor de Luz LDR

O módulo sensor de luz LDR pode ser usado para detectar luz ou medir os níveis de luz ao seu redor. Ele oferece duas opções, com uma saída digital e uma saída analógica.

Pinagem

O módulo sensor de luz LDR tem quatro pinos:

  • Pino VCC: conecte ao VCC (3,3V a 5V).
  • Pino GND: conecte ao GND (0V).
  • Pino DO: é um pino de saída digital. Ele mostra HIGH no escuro e LOW com luz. Você pode mudar o nível de escuridão e de claridade ajustando o potenciômetro.
  • Pino AO: é um pino de saída analógica. O valor de saída diminui quando há mais luz e aumenta quando há mais escuridão.
LDR Light Sensor Module Pinout
image source: diyables.io

Ele também tem dois LEDs:

  • Um LED indicador PWR mostra quando a alimentação está ligada.
  • Um LED indicador DO mostra o estado da luz no pino DO: ele acende na presença de luz e apaga no escuro.

Como Funciona

Para o pino DO:

  • O módulo tem um potenciômetro para definir o limite de luz.
  • Se o nível de luz ao redor for maior que o limite definido com o potenciômetro, o pino de saída do sensor (DO) fica em LOW e o LED DO (uma pequena luz no módulo) fica apagado.
  • Se o nível de luz ao redor for menor que o limite, o pino de saída do sensor (DO) fica em HIGH e o LED DO fica aceso.

Para o pino AO:

  • O pino AO fornece uma leitura que muda conforme o nível de luz.
  • Quando há muita luz, a leitura do pino AO é menor.
  • Quando está mais escuro, a leitura do pino AO é maior.
  • O potenciômetro não afeta o valor no pino AO. Ele só muda o limite do pino DO.

Dessa forma, você pode ajustar a sensibilidade com o potenciômetro para o pino DO e, ao mesmo tempo, continuar obtendo leituras precisas do nível de luz pelo pino AO.

Diagrama de Ligação

O módulo sensor de luz tem duas saídas. Você pode usar uma ou as duas, conforme sua necessidade.

The wiring diagram between Arduino UNO R4 LDR Light Sensor Module

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

Código Arduino UNO R4 - Ler o valor do pino DO

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-ldr-module */ #define DO_PIN 2 // The Arduino UNO R4 pin connected to DO pin of the ldr module void setup() { // initialize serial communication Serial.begin(9600); // initialize the Arduino's pin as an input pinMode(DO_PIN, INPUT); } void loop() { int light_state = digitalRead(DO_PIN); if (light_state == HIGH) Serial.println("The light is NOT present"); else Serial.println("The light is present"); }

Passos Rápidos

Siga estas instruções passo a passo:

  • Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para Arduino Uno R4 WiFi/Minima na Arduino IDE.
  • Conecte o módulo sensor de luz ao Arduino Uno R4 de acordo com o diagrama fornecido.
  • Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
  • Copie o código acima e abra-o na Arduino IDE
  • Clique no botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4
  • Bloqueie e libere a luz no módulo sensor LDR usando a mão ou um objeto
  • Confira os resultados no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
The light is present The light is present The light is NOT present The light is NOT present The light is NOT present The light is present The light is present The light is present
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Se você notar que o LED fica aceso o tempo todo ou apagado mesmo quando há luz, gire o potenciômetro para ajustar a sensibilidade do sensor à luz.

Agora você pode adaptar o código para acender um LED ou uma lâmpada quando detectar luz, ou para fazer um servo motor girar. Para mais detalhes e guias passo a passo, veja os tutoriais no final deste documento.

Código Arduino UNO R4 - Ler o valor do pino AO

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-ldr-module */ #define AO_PIN A0 // The Arduino UNO R4 pin connected to AO pin of the ldr module void setup() { // initialize serial communication Serial.begin(9600); } void loop() { int light_value = analogRead(AO_PIN); Serial.println(light_value); }

Passos Rápidos

Siga estas instruções passo a passo:

  • Copie o código que você vê acima e abra-o usando a Arduino IDE.
  • Clique no botão Upload na Arduino IDE para transferir o código ao Arduino UNO R4.
  • Bloqueie e depois exponha o módulo sensor de luz LDR usando a mão ou outro objeto.
  • Confira o Serial Monitor para ver o resultado.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
145 146 146 572 678 945 956 1001 1002 1012 1013 645 546 346 172
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Vídeo

O vídeo de demonstração abaixo usa o código a seguir:

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-ldr-module */ const int LDR_PIN = A0; const int LED_PIN = 9; const float ALPHA = 0.1; float emaValue = 0; int currentPWM = 0; int targetPWM = 0; void setup() { Serial.begin(115200); pinMode(LED_PIN, OUTPUT); // Initialize EMA with the first LDR reading emaValue = analogRead(LDR_PIN); } void loop() { // ======================================== // 1. Read the LDR sensor value // ======================================== int rawValue = analogRead(LDR_PIN); // ======================================== // 2. Apply EMA filtering // ======================================== emaValue = ALPHA * rawValue + (1.0 - ALPHA) * emaValue; // ======================================== // 3. Determine the LED brightness // ======================================== if (emaValue < 500) { // Daylight targetPWM = 0; } else if (emaValue < 550) { // Low light targetPWM = 70; } else if (emaValue < 600) { // Twilight targetPWM = 150; } else { // Dark targetPWM = 255; } // ======================================== // 4. Apply smooth dimming // ======================================== if (currentPWM < targetPWM) { currentPWM++; } else if (currentPWM > targetPWM) { currentPWM--; } // ======================================== // 5. Control the LED using PWM // ======================================== analogWrite(LED_PIN, currentPWM); // ======================================== // 6. Print debugging information // ======================================== Serial.print("Raw: "); Serial.print(rawValue); Serial.print(" | EMA: "); Serial.print(emaValue); Serial.print(" | Target PWM: "); Serial.print(targetPWM); Serial.print(" | Current PWM: "); Serial.println(currentPWM); // ======================================== // 7. Sampling interval // ======================================== delay(20); }

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!