/*UYGULAMA1 HATALI YERLER DÜZELTİLECEK
/*
//BU BÖLÜMÜMÜZDE KULLANACAĞIMIZ METARYALLERİ UYGULAMAMIZA YÜKLEDİK//
#include <LiquidCrystal.h>
#include <Keypad.h>
#include <EEPROM.h>
LiquidCrystal lcd(11,10,9,8,7,6);
const byte ROWS = 4; //SATIR
const byte COLS = 4; //SÜTUN
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},//BU BÖLÜMDE TUŞ TAKIMIMIZLA AYNI ŞEKİLDE YAZDIK ANLAŞILABİLİR OLSUN DİYE//
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte satir_pin [ROWS] = {3,2,1,0};
byte sutun_pin [COLS] = {A1,A2,A3,A4};
Keypad keypad = Keypad(makeKeymap(keys),satir_pin,sutun_pin, ROWS , COLS ); //keypad satır sütun tanımlamaları.
const int blueled= 4; //MAVİ LED ÇIKIŞI
const int redled = 5 ; //KIRMIZI LED ÇIKIŞI
const int TMP36 = A0; //TMP36 SENSÖR ÇIKIŞ
// FLOAT DEĞER
float ISITICISET = 0.0;
float FANSET = 0.0;
// SETUP //
void setup() {
pinMode(blueled, OUTPUT);
pinMode(redled, OUTPUT);
lcd.setCursor(1, 0);
lcd.print("!UYGULAMA BASLIYOR!");
for(int counter = 3 ; counter < 27; counter++)
{
lcd.scrollDisplayLeft();
delay(180);
}
lcd.begin(16, 2);
lcd.print("!HELLO,!");
lcd.setCursor(0,1);
lcd.print("LET'S GO");
delay(4000);
lcd.setCursor(0, 1);
lcd.print("S1-A S2-B ");
FANSET = EEPROM.read(0) * 0.1;
ISITICISET = EEPROM.read(1) * 0.1;
}
// LOOP //
void loop() {
char key = keypad.getKey();
if (key) {
menuKey(key);
}
float temperature = sicaklikOkuma();
lcd.setCursor(0, 0);
lcd.print("sicaklik: ");
lcd.print(temperature);
lcd.print(" C");
ledControl(temperature);
}
void menuKey (char key) {
switch (key) {
case 'A':
lcd.clear();
lcd.print("FAN ");
lcd.setCursor(0, 1);
lcd.print("FAN DEGER: ");
FANSET = getSetpoint();
EEPROM.write(0, FANSET * 10);
break;
case 'B':
lcd.clear();
lcd.print("ISITICI ");
lcd.setCursor(0, 1);
lcd.print("ISI DEGER: ");
ISITICISET = getSetpoint();
EEPROM.write(1, ISITICISET * 10);
break;
}
}
float getSetpoint() {
char key;
String setpointStr = "";
do {
key = keypad.getKey();
if ((key >= '0' && key <= '9') || key == '.') {
setpointStr += key;
lcd.print(key);
} else if (key == '*') {
lcd.clear();
break;
}
} while (key != '*');
return setpointStr.toFloat();
}
float sicaklikOkuma() {
int sensor = analogRead(TMP36);
float temperatureC = -40+(sensor-18)/6;
return temperatureC;
}
void ledControl(float temperature) {
if (FANSET != 0.0 && temperature >= FANSET * 1.2) {
digitalWrite(redled, HIGH);
} else {
digitalWrite(redled , LOW);
}
if (ISITICISET != 0.0 && temperature <= ISITICISET * 0.8) {
digitalWrite(blueled, HIGH);
} else {
digitalWrite(blueled, LOW);
}
}