#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define lm35 A0
#define red 10
#define green 9
#define blue 8
void setup() {
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(green, OUTPUT);
pinMode(blue, OUTPUT);
lcd.init();
lcd.backlight();
}
void loop() {
int reading = map(analogRead(lm35), 0, 1023, -55, 150); // LM35 range −55C to +150C
float tempC = reading;
float tempF = (tempC * 9.0 / 5.0) + 32.0;
lcd.setCursor(0, 0);
lcd.print("Temp:");
zeropadLCD(tempC);
lcd.print(tempC);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("Temp:");
zeropadLCD(tempF);
lcd.print(tempF);
lcd.print("F");
Serial.print("Temperature:");
zeropadMON(tempC);
Serial.print(tempC);
Serial.print("C");
zeropadMON(tempF);
Serial.print(tempF);
Serial.println("F");
if (tempC < 0) {
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
}
if (tempC >= 0 && tempC < 10) {
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
}
else if (tempC >= 10 && tempC < 23) {
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
digitalWrite(blue, LOW);
}
else if (tempC >= 23 && tempC < 33) {
digitalWrite(red, LOW);
digitalWrite(green, LOW);
digitalWrite(blue, HIGH);
}
else if (tempC >= 33) {
digitalWrite(red, HIGH);
digitalWrite(green, HIGH);
digitalWrite(blue, HIGH);
}
delay(2000);
}
void zeropadLCD(float temp) {
if (abs(temp) < 100)
lcd.print(" ");
if (abs(temp) < 10)
lcd.print(" ");
if (temp > 0)
lcd.print(" ");
}
void zeropadMON(float temp) {
if (abs(temp) < 100)
Serial.print(" ");
if (abs(temp) < 10)
Serial.print(" ");
if (temp > 0)
Serial.print(" ");
}