Introduction: Arduino Project #2
This is the second project I have done with Arduino.
This particular project functions as a thermostat where you can see the current temperature (in Fahrenheit or in Celsius), you can set the desired temperature, and you can switch between °Fahrenheit and °Celsius. There is a LED light that automatically turns on when the current temperature is greater than the desired temperature. There is supposed to be a DC motor implemented instead of the light, however I did not have a working DC motor.
Step 1: THE PARTS
Below shows the required parts to build the thermostat:
1 Arduino Uno R3
1 LCD 16x2 Screen
2 Potentionmeters
1 Pushbutton
1 2 kohm Resistor
1 LED light / 1 DC motor (if you have one, this should work just fine)
Approximately 30 Wires
Step 2: THE WIRING
Attached is a picture that shows how to build this thermostat:
Step 3: THE CODE
Below is the code required to program this thermostat:
You can copy this code into an Arduino program and it should run fine:
int cel;
int far;
char let;
boolean cf;
int desC;
int desF;
int inputDes;
int temp;
int changeTime = 2;
float voltage;
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
pinMode(8, INPUT);
pinMode(9, OUTPUT);
}
void loop() {
voltage = getVoltage(0); //initializers
desC = (getVoltage(5) / 10) * 100;
desF = Far(desC) + 20;
inputDes = (analogRead(5) / 20.5);
cel = (voltage - 0.5) * 100;
far = ((cel * 9) / 5) + 32;
lcd.setCursor(0, 0); //LCD code
lcd.print("Temperature:");
lcd.setCursor(13, 0);
lcd.print(temp);
lcd.setCursor(15, 0);
lcd.print(let); //Display
lcd.setCursor(0, 1);
lcd.print("Desired:");
lcd.setCursor(9,1);
if (cf == true) {
lcd.print(desF);
lcd.setCursor(11,1);
} else {
lcd.print(desC);
lcd.setCursor(11,1);
if (desC < 10) {
lcd.print(" ");
lcd.setCursor(10,1);
}
}
lcd.print(let);
if (cf) { //Temp Toggle
let = 'F';
temp = far;
} else {
let = 'C';
temp = cel;
}
if (cel > desC) {
digitalWrite(8, HIGH);
} else {
digitalWrite(8, 0);
}
changeTime--;
if (analogRead(4) > 1000 && changeTime < 0) { //temp toggle input
cf = !cf;
changeTime = 2;
}
delay(150);
}
float Far (float a) { //farenheit conversion
float b = (a * (9 / 5)) + 32;
return b;
}
float getVoltage (float a) {
float b = (analogRead(a) * 0.004882814);
return b;
}
Step 4: THE INITIATION
If the previous steps work, then you should be done!
All that is left is to run the program and marvel at its glorious temperature detecting.