#define PIN_ANALOG_IN 2
#define LED_VERDE 33
#define LED_AMARELO 32
#define LED_VERMELHO 26
#define LED_AZUL 25
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(115200);
Wire.begin(16, 17);
lcd.init();
lcd.backlight();
pinMode(LED_VERDE, OUTPUT);
pinMode(LED_AMARELO, OUTPUT);
pinMode(LED_VERMELHO, OUTPUT);
pinMode(LED_AZUL, OUTPUT);
}
void loop() {
int adcValue = analogRead(PIN_ANALOG_IN);
double voltage = adcValue * 3.3 / 4095.0;
double Rt = 10 * voltage / (3.3 - voltage);
double tempK = 1 / (1 / 298.15 + log(Rt / 10) / 3950.0);
double tempC = tempK - 273.15;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(tempC, 1);
lcd.print(" C");
if (tempC > 10 && tempC <= 30) {
digitalWrite(LED_VERDE, HIGH);
lcd.setCursor(0, 1);
lcd.print("LED Verde aceso");
} else if (tempC > 30 && tempC <= 40) {
digitalWrite(LED_AMARELO, HIGH);
lcd.setCursor(0, 1);
lcd.print("LED Amarelo aceso");
} else if (tempC > 40) {
digitalWrite(LED_VERMELHO, HIGH);
lcd.setCursor(0, 1);
lcd.print("LED Vermelho aceso");
} else {
digitalWrite(LED_AZUL, HIGH);
lcd.setCursor(0, 1);
lcd.print("LED Azul aceso");
}
digitalWrite(LED_VERDE, (tempC > 10 && tempC <= 30) ? HIGH : LOW);
digitalWrite(LED_AMARELO, (tempC > 30 && tempC <= 40) ? HIGH : LOW);
digitalWrite(LED_VERMELHO, (tempC > 40) ? HIGH : LOW);
digitalWrite(LED_AZUL, (tempC <= 10) ? HIGH : LOW);
delay(1000);
}