// Configuração do pino e constantes
const int ldrPin = 2; // Pino onde o LDR está conectado (pino analógico A0)
const float Vcc = 5.0; // Tensão de alimentação (5V no Arduino)
const float Rfixo = 10000.0; // Resistência fixa (10k ohms)
const float exponent = 1.0; // Expoente para a fórmula de conversão de resistência para lux (ajustável)
const float minVout = 0.01; // Valor mínimo de Vout para evitar divisão por zero
void setup() {
Serial.begin(9600); // Inicia a comunicação serial
}
void loop() {
// Ler o valor do LDR (0 a 1023)
int ldrValor = analogRead(ldrPin);
// Converter o valor lido em tensão
float Vout = (ldrValor / 1023.0) * Vcc;
// Verificar se Vout é maior que o valor mínimo para evitar divisão por zero
if (Vout < minVout) {
Vout = minVout; // Define Vout como um valor mínimo para evitar erros de divisão
}
// Calcular a resistência do LDR
float RLDR = Rfixo * (Vcc / Vout - 1);
// Verificar se a resistência do LDR é válida
if (RLDR <= 0) {
RLDR = 1; // Evitar valores negativos ou zero para a resistência
}
// Estimar a luminosidade em lux (500 é um fator comum de muitos LDRs, ajuste conforme necessário)
float lux = 500.0 / pow(RLDR, exponent);
// Exibir os valores no monitor serial
Serial.print("Valor Lido: ");
Serial.print(ldrValor);
Serial.print(" | Resistencia LDR: ");
Serial.print(RLDR);
Serial.print(" ohms | Luminosidade: ");
Serial.print(lux);
Serial.println(" lux");
delay(1000); // Atraso de 1 segundo entre as leituras
}