#include <LiquidCrystal.h>
#include <Servo.h>
const int tempPin1 = A0;
const int tempPin2 = A1;
const int redLed = 2;
const int greenLed = 3;
const float BETA = 3950;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
Servo oviServo;
int pos = 0;
void setup() {
lcd.begin(16, 2);
oviServo.attach(53);
Serial.begin(9600);
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
}
void loop() {
int tempReading1 = analogRead(tempPin1);
int tempReading2 = analogRead(tempPin2);
float celsius1 = getTemperatureCelsius(tempReading1);
float celsius2 = getTemperatureCelsius(tempReading2);
lcd.setCursor(0, 0);
lcd.print("OutTemp C");
lcd.setCursor(0, 1);
lcd.print("InTemp C");
lcd.setCursor(8, 0);
lcd.print(celsius1);
lcd.setCursor(8, 1);
lcd.print(celsius2);
if (celsius1 > celsius2) {
turnOnRedLed();
turnOffGreenLed();
moveServo(0, 90, 1);
} else {
turnOffRedLed();
turnOnGreenLed();
moveServo(90, 0, -1);
}
delay(10000);
}
float getTemperatureCelsius(int tempReading) {
float resistance = (1023. / tempReading) - 1;
resistance = 10000 / resistance;
float celsius = 1 / (log(resistance / 10000) / BETA + 1.0 / 298.15) - 273.15;
return celsius;
}
void turnOnRedLed() {
digitalWrite(redLed, HIGH);
}
void turnOffRedLed() {
digitalWrite(redLed, LOW);
}
void turnOnGreenLed() {
digitalWrite(greenLed, HIGH);
}
void turnOffGreenLed() {
digitalWrite(greenLed, LOW);
}
void moveServo(int startPos, int endPos, int increment) {
for (pos = startPos; pos != endPos; pos += increment) {
oviServo.write(pos);
}
oviServo.write(endPos);
}