Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #include <LiquidCrystal.h>
- int buttonState1 = 0;
- int buttonState2 = 0;
- int lastButtonState1 = 0;
- int lastButtonState2 = 0;
- float temperature = 21;
- int MaxTemperature = 35;
- int MinTemperature = 6;
- int sensePin = A0;
- int RelayPin = 10;
- int Hyst = 7;
- int sensorInput;
- float PreviousTemp;
- float Hystersensis = 0.50;
- double temp;
- int buttonState = 0;
- int lastButtonState = 0;
- int buttonPushCounter = 3;
- char * LOGO = " Arduino Thermostate ";
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
- void setup() {
- pinMode(8, INPUT);
- pinMode(9, INPUT);
- pinMode(RelayPin, OUTPUT);
- pinMode(Hyst, INPUT);
- #define PinTempSensor 0
- pinMode(PinTempSensor, INPUT_PULLUP);
- Serial.begin(9600);
- lcd.begin(16, 2);
- for (int letter = 0; letter <= strlen(LOGO) - 16; letter++)
- {
- showLetters(0, letter);
- }
- //delay(2000);
- lcd.clear();
- lcd.setCursor(12, 1);
- lcd.print(temperature);
- lcd.setCursor(14, 1);
- lcd.print(" C");
- }
- void showLetters(int printStart, int startLetter)
- {
- lcd.setCursor(printStart, 0);
- for (int letter = startLetter; letter <= startLetter + 15; letter++) // Print only 16 chars in Line #2 starting 'startLetter'
- {
- lcd.print(LOGO[letter]);
- }
- lcd.print(" ");
- delay(100);
- }
- void loop() {
- buttonState1 = digitalRead(8);
- buttonState2 = digitalRead(9);
- if (lastButtonState1 < 1)
- {
- if (temperature > MinTemperature)
- {
- if (buttonState1 > 0)
- {
- temperature = temperature -0.5;
- if (temperature < 10)
- {
- lcd.clear();
- lcd.setCursor(14, 1);
- lcd.print(" C");
- lcd.setCursor(10, 1);
- } else
- {
- lcd.clear();
- lcd.setCursor(14, 1);
- lcd.print(" C");
- lcd.setCursor(9, 1);
- }
- lcd.print(temperature);
- Serial.println(temperature);
- lastButtonState1 = 1;
- }
- }
- }
- if (lastButtonState1> 0)
- {
- if (buttonState1 < 1)
- {
- lastButtonState1 = 0;
- }
- }
- if (lastButtonState2 < 1)
- {
- if (temperature < MaxTemperature)
- {
- if (buttonState2 > 0)
- {
- temperature = temperature +0.5;
- if (temperature < 10)
- {
- lcd.clear();
- lcd.setCursor(14, 1);
- lcd.print(" C");
- lcd.setCursor(10, 1);
- } else
- {
- lcd.clear();
- lcd.setCursor(14, 1);
- lcd.print(" C");
- lcd.setCursor(9, 1);
- }
- lcd.print(temperature);
- Serial.println(temperature);
- lastButtonState2 = 1;
- }
- }
- }
- if (lastButtonState2> 0)
- {
- if (buttonState2 < 1)
- {
- lastButtonState2 = 0;
- }
- }
- sensorInput = analogRead(A0);
- temp = (double)sensorInput / 1024;
- temp = temp * 5;
- temp = temp - 0.5;
- temp = temp * 100;
- if (temp >= 0 && temp < 10)
- {
- lcd.setCursor(10,0);
- } else
- {
- if (temp > 9 ) lcd.setCursor(9,0);
- }
- if (temp > 100) lcd.setCursor(8,0);
- if (temp < 0 && temp > -10)
- {
- lcd.setCursor(9,0);
- }
- if (temp < -10)
- {
- lcd.setCursor(8,0);
- }
- lcd.print(temp);
- {
- lcd.setCursor(14, 0);
- lcd.print(" C");
- }
- if (temp == PreviousTemp)
- {
- } else
- {
- lcd.clear();
- PreviousTemp = temp;
- if (temperature < 10)
- {
- lcd.clear();
- lcd.setCursor(14, 1);
- lcd.print(" C");
- lcd.setCursor(10, 1);
- } else
- {
- lcd.clear();
- lcd.setCursor(14, 1);
- lcd.print(" C");
- lcd.setCursor(9, 1);
- }
- lcd.print(temperature);
- lastButtonState2 = 1;
- }
- if (temp < temperature - Hystersensis)
- {
- digitalWrite(RelayPin,HIGH);
- } else
- {
- digitalWrite(RelayPin,LOW);
- }
- buttonState = digitalRead(Hyst);
- if (buttonState != lastButtonState) {
- if (buttonState == HIGH) {
- buttonPushCounter += 1;
- if (buttonPushCounter > 9) buttonPushCounter = 1;
- Serial.println("on");
- Serial.print("number of button pushes: ");
- if (buttonPushCounter == 1) Hystersensis = 0.00;
- if (buttonPushCounter == 2) Hystersensis = 0.25;
- if (buttonPushCounter == 3) Hystersensis = 0.50;
- if (buttonPushCounter == 4) Hystersensis = 0.75;
- if (buttonPushCounter == 5) Hystersensis = 1.00;
- if (buttonPushCounter == 6) Hystersensis = 1.25;
- if (buttonPushCounter == 7) Hystersensis = 1.50;
- if (buttonPushCounter == 8) Hystersensis = 1.75;
- if (buttonPushCounter == 9) Hystersensis = 2.00;
- lcd.setCursor(1, 1);
- lcd.print(Hystersensis);
- Serial.println(buttonPushCounter);
- } else {
- Serial.println("off");
- }
- delay(5);
- }
- lastButtonState = buttonState;
- if (buttonPushCounter % 4 == 0) {
- digitalWrite(13, HIGH);
- } else {
- digitalWrite(13, LOW);
- }
- lcd.setCursor(1, 1);
- lcd.print(Hystersensis);
- //delay(100);
- }
Add Comment
Please, Sign In to add comment