#include <LiquidCrystal_I2C.h> // Biblioteca para o LCD
#include <Wire.h> // Biblioteca que permite enviar e receber dados por meio de uma interface I2C
#define LDR_PIN 32 // Pino conectado ao sensor de luz (LDR)
#define led 17
// Características do LDR
const float GAMMA = 0.7; // Valor gama para a curva de resposta do LDR
const float RL10 = 50; // Resistência de referência (presumivelmente em ohms)
LiquidCrystal_I2C lcd(0x27, 20, 4); // Criação do objeto para o display LCD
void setup() {
Serial.begin(115200); // Inicializa a comunicação serial (para depuração)
Wire.begin(21, 22); // Inicializa a comunicação I2C com os pinos SDA e SCL
pinMode(LDR_PIN, INPUT); // Configura o pino LDR_PIN como entrada
pinMode(led, OUTPUT);
lcd.init(); // Inicializa o display LCD
lcd.backlight(); // Liga a retroiluminação do display
lcd.setCursor(5, 0);
lcd.print("ETEC - ABH");
lcd.setCursor(0, 3);
lcd.print("Beatriz C. M. Batel");
}
void loop() {
int analogValue = analogRead(LDR_PIN); // Lê o valor analógico do pino LDR_PIN
float voltage = analogValue / 4096. * 5; // Converte o valor para tensão (assumindo resolução de 12 bits)
float resistance = 2000 * voltage / (1 - voltage / 5); // Calcula a resistência do LDR
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA)); // Calcula o valor em lux
Serial.printf("O valor analogico: %d\t | O valor de iluminancia é: %.2f lux\t\n ", analogValue, lux);
lcd.setCursor(0, 1); // Define a posição do cursor na segunda linha do display
lcd.print("Lux: "); // Exibe a mensagem "Lux: "
lcd.print(lux); // Exibe o valor de lux medido
lcd.print(" "); // Limpa o restante da linha
if (lux <= 0.2){
lcd.setCursor(0, 2);
lcd.print(" ");
digitalWrite(led, HIGH);
lcd.setCursor(0, 2);
lcd.print("Lua Cheia");
}
else if (lux >= 0.2 && lux <= 1){
lcd.setCursor(0, 2);
lcd.print(" ");
digitalWrite(led, HIGH);
lcd.setCursor(0, 2);
lcd.print("Crepusculo Profundo");
}
else if (lux >= 1 && lux <= 50){
lcd.setCursor(0, 2);
lcd.print(" ");
digitalWrite(led, HIGH);
lcd.setCursor(0, 2);
lcd.print("Crepusculo");
}
else if (lux >= 50 && lux <= 100){
lcd.setCursor(0, 2);
lcd.print(" ");
digitalWrite(led, LOW);
lcd.setCursor(0, 2);
lcd.print("Nascer do Sol");
}
else if (lux >= 100 && lux <= 600){
lcd.setCursor(0, 2);
lcd.print(" ");
digitalWrite(led, LOW);
lcd.setCursor(0, 2);
lcd.print("Iluminacao Ambiente");
}
else if (lux >= 600 && lux <= 1000){
lcd.setCursor(0, 2);
lcd.print(" ");
digitalWrite(led, LOW);
lcd.setCursor(0, 2);
lcd.print("Dia Nublado");
}
else{
lcd.setCursor(0, 2);
lcd.print(" ");
digitalWrite(led, LOW);
lcd.setCursor(0, 2);
lcd.print("Luz do Dia");
}
delay(100); // Pequeno atraso antes de repetir o loop
}