/*
Projeto: Leitura do LDR (aula engenharia FIAP - 2023)
Descrição: Leitura analógica do LDR, e seus resultados em
tensão, resistência e luminosidade
Autor: Giovanna Condrade
Data: 04/04/2023
Versão: 1.0
*/
//Tudo que é criado fora das funções chama-se GLOBAL e tudo que é
//global pode ser utilizado em qualquer ponto do código.
//Já o que é criado dentro de uma função chama-se LOCAL e tudo que é
//local só pode ser utilizado naquele local em que foi criado.
/**************************************************************************
VARIÁVEIS GLOBAIS
**************************************************************************/
#include <LiquidCrystal.h> //Inclui o LCD no sistema
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //Define os pinos que o LCD utilizará
int LDR = A0; //Define o pino A0 como o pino do LDR
/**************************************************************************
CONFIGURAÇÕES INICIAIS
**************************************************************************/
void setup() {
pinMode(LDR, INPUT); //Define o pino do LDR como entrada
Serial.begin(9600);
}
/*************************************************************************
FUNÇÃO PRINCIPAL
*************************************************************************/
void loop() {
lcd.begin(20, 4); //Tamanho do LCD
int valorLDR = analogRead(LDR); //Leitura de um valor analógico
float tensaoLDR = valorLDR / 1024.00 * 5; //Simplificação da regra de 3
float tensao2 = 5 - tensaoLDR; //Tensão do resistor = 5 - tensão do LDR
int resistencia = tensaoLDR / (tensao2 / 10000); //Formula R = U/I --> R = U/(U2/R2)
if(resistencia < 0) { //Por algum motivo alguns dos valores para
resistencia = - (tensaoLDR / (tensao2 / 10000)); //a resistencia estavam negativos, então foi
} //foi necessário fazer uma 'adaptação técnica'
float lux = pow(50e3 * pow(10, 0.7) / resistencia, (1 / 0.7));
//Tentei mas não consegui encontrar uma forma de calcular a lux...
lcd.print("\n" "\n" "\n");
lcd.print("Valores do LDR");
lcd.print("\n" "\n" "\n" "\n" "\n");
lcd.print("Resistencia:");
lcd.println(resistencia);
lcd.print("\n" "\n");
lcd.print("Tensao:");
lcd.println(tensaoLDR);
lcd.print("\n" "\n" "\n" "\n" "\n" "\n" "\n");
lcd.print("Lux:");
lcd.println(lux);
delay(500);
//Utilizei o delay para o visor não ficar piscando muito
}
/*************************************************************************
FIM
*************************************************************************/