Skip to content

Instantly share code, notes, and snippets.

@sethyanow
Created October 10, 2014 23:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sethyanow/4885b79e325bbe01e928 to your computer and use it in GitHub Desktop.
Save sethyanow/4885b79e325bbe01e928 to your computer and use it in GitHub Desktop.
Thermostat
/*
Thermo
Seth
It's a really hacky thermostat, getting cold outside
*/
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
#define RELAY1 6
#define RELAY2 7
#define RELAY3 8
#define RELAY4 9
const int sensorPin = A0;
const float baselineTemp = 20.0;
double averageTemp = 0;
int numReadings = 0;
double totalTemp = 0;
void setup()
{
// Initialise the Arduino data pins for OUTPUT
pinMode(RELAY1, OUTPUT);
pinMode(RELAY2, OUTPUT);
pinMode(RELAY3, OUTPUT);
pinMode(RELAY4, OUTPUT);
Serial.begin(9600);
lcd.begin(16, 2);
lcd.clear();
lcd.setCursor(0,0);
}
void loop()
{
lcd.setCursor(0,0);
int sensorVal = analogRead(sensorPin);
Serial.print("Sensor Value: ");
Serial.print(sensorVal + '\n');
float voltage = (sensorVal/1024.0) * 5.0;
Serial.print(", Volts: ");
Serial.print(voltage);
Serial.print(", degrees F: ");
float temperature = (voltage - .5) * 100;
float tempFH = (temperature * 1.8) + 32;
Serial.println(tempFH);
lcd.print("Ambient: ");
lcd.print(tempFH);
lcd.print(" F");
if (numReadings % 50 == 0) {
numReadings = 0;
totalTemp = 0;
}
numReadings++;
totalTemp += tempFH;
averageTemp = totalTemp / numReadings;
Serial.print("Average: ");
Serial.println(averageTemp);
lcd.setCursor(0,1);
lcd.print("Average: ");
lcd.print(averageTemp);
lcd.print(" F");
if (averageTemp < 68) {
digitalWrite(RELAY1, LOW); //turn on relay
} else {
digitalWrite(RELAY1, HIGH); //turn off relay
}
delay(300);
}
@sethyanow
Copy link
Author

By "average" I really mean "somewhat stable-ish reading" since the single-wire sensor I have gives pretty erratic readings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment