#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHT_PIN 2
#define HEATING_PIN 3
#define COOLING_PIN 4
#define POWER_SWITCH_PIN 5
#define BUZZER_PIN 6
#define POTENTIOMETER_PIN A0
#define ALARM_RESET_BUTTON 7
#define LCD_ADDRESS 0x27
LiquidCrystal_I2C lcd(LCD_ADDRESS, 16, 2);
void setup() {
pinMode(HEATING_PIN, OUTPUT);
pinMode(COOLING_PIN, OUTPUT);
pinMode(POWER_SWITCH_PIN, INPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(ALARM_RESET_BUTTON, INPUT);
lcd.begin(16, 2);
lcd.print("Klimatyzator");
}
void loop() {
float temperature0 = analogRead(2);
float celsius = 1 / (log(1 / (1023. / temperature0 - 1)) / 3950 + 1.0 / 298.15) - 273.15;
float temperature = analogRead(POTENTIOMETER_PIN);
float setTemperature = map(temperature, 0, 1023, 10, 50);
if (digitalRead(POWER_SWITCH_PIN) == HIGH) {
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(celsius);
lcd.print(" C ");
lcd.setCursor(0, 0);
lcd.print("Zadana: ");
lcd.print(setTemperature);
lcd.print(" C ");
if (celsius > setTemperature) {
digitalWrite(COOLING_PIN, HIGH);
digitalWrite(HEATING_PIN, LOW);
} else {
digitalWrite(COOLING_PIN, LOW);
digitalWrite(HEATING_PIN, HIGH);
}
if (celsius > 45 || celsius < 5) {
digitalWrite(BUZZER_PIN, HIGH);
} else {
digitalWrite(BUZZER_PIN, LOW);
}
} else {
digitalWrite(COOLING_PIN, LOW);
digitalWrite(HEATING_PIN, LOW);
digitalWrite(BUZZER_PIN, LOW);
}
if (digitalRead(ALARM_RESET_BUTTON) == HIGH) {
digitalWrite(BUZZER_PIN, LOW);
}
delay(1000);
}