I made a simple code that allows the user to enter a temp number through the serial monitor. From there it then turns on either a green or red led depending on if the set temp is higher or lower than the one the user put in. my issue is if I put the temp as 80 and the temp of the room is 70 the serial monitor still reads it as high when it should be reading low.
float tempC;
float tempF;
int tempSet;
int reading;
float referenceVoltage;
int tempPin = 0; //Analog pin connected to LM35
const int ledRed = 8; //red led, temp High
const int ledGreen = 9; //green led, temp Low
void setup()
{
pinMode(ledRed, OUTPUT); //Red led, temp. high
pinMode(ledGreen, OUTPUT); //Green led, temp low
Serial.begin(9600);
Serial.flush();
analogReference(INTERNAL);
referenceVoltage = 1.1;
Serial.println("Set Temp."); // user enters temp.
while (Serial.available() == 0) {} //wait for user to set temp.
tempSet - Serial.parseInt(); //save temp.
}
void loop()
{
reading = 0;
for (int i = 0; i < 10; i++) { // Average 10 readings for accurate reading
reading += analogRead(tempPin);
delay(20);
}
tempC = (referenceVoltage * reading * 10) / 1023;
// Convert to Fahrenheit
tempF = (tempC * 9 / 5) + 32;
Serial.print(tempC, 1); //Print one decimal
Serial.println(" C");
Serial.print(tempF, 1); //Print one decimal
Serial.println(" F");
Serial.println(" ");
delay(1500);
{
if (tempF >= tempSet) {
digitalWrite(ledRed, HIGH);
Serial.println("HOT");
} else {
digitalWrite(ledRed, LOW);
}
if (tempF < tempSet) {
digitalWrite(ledGreen, HIGH);
Serial.println("COLD");
} else {
digitalWrite(ledGreen, LOW);
}
}
}