#include <LiquidCrystal.h>
#include <Keypad.h>
#include <EEPROM.h>
//LCD BACAK UCLARI TANIMANDI//
LiquidCrystal lcd(12,11,5,4,3,2); // LCD bacaklarını tanımlandı
//LCD BACAK UCLARI TANIMANDI//
//KEYPAD KOMUTLARI HAZIRLANDI
const byte satir = 4; //Keypad satır sayısı belirlendi.
const byte sutun = 4; //Keypad sütun sayısı belirlendi.
char keys[satir][sutun] { //tus haritasını belirledik
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte satir1[satir] = {10,9,8,7}; //satır pinlerini belirledik
byte sutun1[sutun] = {A2, A3, A4, A5}; //sutun pinlerini belirledik
Keypad keypad = Keypad(makeKeymap(keys), satir1, sutun1, satir, sutun); //Keypad sınıfından keypad nesne oluşturduk
//KEYPAD KOMUTLARI HAZIRLANDI//
//ledler ve potansiyemetrenin bacakları tanımlandı//
const int red = 13; //Fan için led pini
const int blue = 1; //ısıtıcı için led pini
const int sensorpin = A0; //tmp36 için pin
//ledler ve potansiyemetrenin bacakları tanımlandı//
//BAŞLANGIÇ DEĞERLERİ AYARLANDI//
float fandgr = 0; // fanın başlangıç degeri 0.0 olarak ayarlanıyor
float isiticidgr = 0; // ısıtıcının başlangıç degeri 0.0 olarak ayarlanıyor
const float fan1 = (fandgr*10) /100; // Histeresis değeri
const float isitici1 = (isiticidgr*10) /100; // Histeresis değeri
//BAŞLANGIÇ DEĞERLERİ AYARLANDI//
void setup() {
lcd.begin(16,2);
float fandgr = 0;
float isiticidgr = 0;
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
delay(1000);
lcd.clear();
lcd.setCursor(1, 1);
lcd.print("furkan goven 22330178");
for(int kaydir = 0 ; kaydir < 31; kaydir++){
lcd.scrollDisplayLeft();
delay(150);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fan=A Isitici=B");
delay(1500);
lcd.clear();
fandgr = EEPROM.read(0)*0.1; //
isiticidgr = EEPROM.read(1)*0.1; //
}
// döngü giriş
void loop() {
char key = keypad.getKey();
if (key) {
menuKey(key);
}
float temperature = sicaklikDegerOkuma();
temperatureControl(temperature);
lcd.setCursor(0,0);
lcd.print("Sicaklik: ");
lcd.print(temperature);
lcd.print(" C");
}
//döngü çıkış
void menuKey(char key){
if (key=='A'){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fan Deger: ");
fandgr=getSetabc();
EEPROM.put(0,fandgr*10);
}
else if(key=='B'){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Istc Deger: ");
isiticidgr=getSetabc();
EEPROM.put(0,isiticidgr*10);
}else if (key=='C') {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Fan Deger: ");
lcd.setCursor(12,0);
lcd.print(fandgr);
EEPROM.put(0,fandgr*10);
delay(2000);
}else if(key=='D'){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Istc Deger: ");
lcd.setCursor(12,0);
lcd.print(isiticidgr);
EEPROM.put(0,isiticidgr*10);
delay(2000);
}
}
float getSetabc() {
char key;
String Setcba = "";
do {
key = keypad.getKey();
if ((key >= '0' && key <= '9')) {
Setcba += key;
lcd.print(key);
} else if (key == '#') {
lcd.clear();
break;
}
} while (key != '#');
return Setcba.toFloat();
}
float sicaklikDegerOkuma() {
float sensorDeger = analogRead(sensorpin);
float sicaklik = (5000 * sensorDeger) / 1023;
sicaklik = (sicaklik - 500) / 10;
return sicaklik;
}
void temperatureControl(float temperature) {
if (temperature > fandgr + fan1) {
digitalWrite(blue, HIGH);
digitalWrite(red, LOW);
}
else if (temperature < isiticidgr - isitici1) {
digitalWrite(red, HIGH);
digitalWrite(blue, LOW);
}
if (temperature < fandgr - fan1) {
digitalWrite(blue, LOW);
digitalWrite(red, LOW);
}
else if (temperature > isiticidgr + isitici1) {
digitalWrite(red, LOW);
digitalWrite(blue, LOW);
}
}