#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Configurações do LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C do display e dimensões
const int sensorPin = 34; // Pino ADC onde o sensor está conectado
const int redPin = 27; // Pino onde o LED vermelho está conectado
const int greenPin = 25; // Pino onde o LED verde está conectado
const int yellowPin = 26; // Pino onde o LED amarelo está conectado
void setup() {
// Inicializa o LCD
lcd.init(); // Inicializa o display
lcd.backlight(); // Liga a luz de fundo do LCD
lcd.print("Temp: "); // Exibe "Temp: " no LCD
pinMode(sensorPin, INPUT); // Configura o pino do sensor como entrada
pinMode(redPin, OUTPUT); // Configura o pino do LED vermelho como saída
pinMode(greenPin, OUTPUT); // Configura o pino do LED verde como saída
pinMode(yellowPin, OUTPUT); // Configura o pino do LED amarelo como saída
}
void loop() {
int sensorValue = analogRead(sensorPin); // Lê o valor analógico do sensor (ADC)
// Converte o valor lido em uma escala de temperatura (0 a 100°C)
float voltage = sensorValue * (3.3 / 4095.0); // Converte para tensão
float temperature = (voltage / 3.3) * 100.0; // Agora o valor vai de 0 a 100
// Exibe a temperatura no LCD
lcd.setCursor(6, 0); // Move o cursor para a posição da temperatura
lcd.print(temperature); // Exibe a temperatura
lcd.print(" C "); // Exibe a unidade "C"
// Controle dos LEDs com base na temperatura
if (temperature <= 26) {
// Verde
digitalWrite(greenPin, HIGH);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, LOW);
} else if (temperature <= 34) {
// Amarelo
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, HIGH);
digitalWrite(redPin, LOW);
} else {
// Vermelho
digitalWrite(greenPin, LOW);
digitalWrite(yellowPin, LOW);
digitalWrite(redPin, HIGH);
}
delay(1000); // Atualiza a cada 1 segundo
}