#include "RTClib.h"
#include <DHT.h>
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#define DHTTYPE DHT22
int xPin = A0;
int yPin = A1;
int butonPin =A2;
int menu = 0;
int anamenu = 0;
int sensor = A3;
int isitici=3;
int cevirme=5;
int pot=0;
int dakika=0;
int pos = 0;
int ayarsa = 0;
int ayarsu = 0;
int ayarn = 0;
int dakikan =0;
int basilan_tus = 0;
#define ileri 0
#define yukari 1
#define asagi 2
#define geri 3
#define sec 4
#define yok 5
int xPozisyon;
int yPozisyon;
int butonDurum;
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo myServo;
Servo servoM;
DHT dht(sensor, DHTTYPE);
RTC_DS1307 rtc;
void setup() {
lcd.begin(16,2);
lcd.backlight();
Serial.begin(9600);
dht.begin();
rtc.begin();
delay(100);
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(butonPin, INPUT_PULLUP);
pinMode(isitici, OUTPUT);
pinMode(cevirme, OUTPUT);
myServo.attach(7);
servoM.attach(9);
}
byte buton_bul() {
if (xPozisyon ==1023)
return ileri;
if (xPozisyon == 0)
return geri;
if (yPozisyon==1023)
return yukari;
if (yPozisyon ==0)
return asagi;
if (butonDurum ==1)
return sec;
}
void loop() {
xPozisyon = analogRead(xPin);
yPozisyon = analogRead(yPin);
butonDurum = digitalRead(butonPin);
basilan_tus = buton_bul();
DateTime now = rtc.now();
float nem = dht.readHumidity();
float sicaklik = dht.readTemperature();
pot= ayarn -dht.readHumidity();
dakika=now.minute();
if (sicaklik > ayarsu){
digitalWrite(isitici, LOW);
}
else if (sicaklik < ayarsa){
digitalWrite(isitici, HIGH);
}
delay(10);
if (0<pot< 70){
myServo.write(pot);
}
else{
myServo.write(0);
}
delay(10);
if (dakika ==dakikan){
delay(10);
for (pos = 0; pos <= 45; pos += 1)
delay(20);
servoM.write(pos);
delay(30);
}
else{
for (pos = 45; pos >= 0; pos -= 1)
delay(20);
servoM.write(pos);
}
//menu1
delay(10);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("C: ");
lcd.setCursor(2,0);
lcd.print(sicaklik);
lcd.setCursor(12,0);
lcd.print("T: ");
lcd.setCursor(14,0);
lcd.print(dakika);
lcd.setCursor(0,1);
lcd.print("\t%: ");
lcd.setCursor(2,1);
lcd.print(nem);
lcd.setCursor(12,1);
lcd.print("P: ");
lcd.setCursor(14,1);
lcd.print(pot);
delay(100);
//anamenu
//TUŞ TANIMLAMA
switch (basilan_tus)
{
case yukari:
{
if (menu == 2) ayarsa++;
if (menu == 3) ayarsu++;
if (menu == 4) ayarn++;
if (menu == 5) dakikan++;
updateMenu();
break;
}
case asagi:
{
if (menu == 2) ayarsa--;
if (menu == 3) ayarsu--;
if (menu == 4) ayarn--;
if (menu == 5) dakikan--;
updateMenu();
break;
}
case ileri:
{
if (menu == 2) menu++;
updateMenu();
break;
}
case geri:
{
if (menu == 2) menu--;
updateMenu();
break;
}
}
if (basilan_tus==yukari) {
menu++;
updateMenu();
while(yPozisyon == 512){
yPozisyon = analogRead(yPin);
}
}
if (yPozisyon == 0) {
menu--;
updateMenu();
while(yPozisyon == 512){
yPozisyon = analogRead(yPin);
}
}
if (!digitalRead(butonPin)){
executeAction();
updateMenu();
while (!digitalRead(butonPin));
}
}
//MENU2
void updateMenu() {
switch (menu) {
case 0:
menu = 1;
break;
case 1:
lcd.clear();
lcd.print(" >SICAKLIK");
lcd.setCursor(0, 1);
lcd.print("NEM");
break;
case 2:
lcd.clear();
lcd.print(" SICAKLIK");
lcd.setCursor(0, 1);
lcd.print(">NEM");
break;
case 3:
lcd.clear();
lcd.print(">NEM");
lcd.setCursor(0, 1);
lcd.print(" VIYOL CEVIRME");
break;
case 4:
lcd.clear();
lcd.print(" VIYOL CEVIRME");
lcd.setCursor(0, 1);
lcd.print(">GUN");
break;
case 5:
lcd.clear();
lcd.print(">FAN");
lcd.setCursor(0, 1);
lcd.print(" MenuItem6");
break;
case 6:
lcd.clear();
lcd.print(" MenuItem5");
lcd.setCursor(0, 1);
lcd.print(">MenuItem6");
break;
case 7:
lcd.clear();
lcd.print(">MenuItem7");
lcd.setCursor(0, 1);
lcd.print(" MenuItem8");
break;
case 8:
lcd.clear();
lcd.print(" MenuItem7");
lcd.setCursor(0, 1);
lcd.print(">MenuItem8");
break;
case 9:
menu = 8;
break;
}
}
void executeAction() {
switch (menu) {
case 1:
action1();
break;
case 2:
action2();
break;
case 3:
action3();
break;
case 4:
action4();
break;
case 5:
action5();
break;
case 6:
action6();
break;
case 7:
action7();
break;
case 8:
action8();
break;
}
}
void action1() {
lcd.clear();
lcd.print(">Executing #1");
delay(1500);
}
void action2() {
lcd.clear();
lcd.print(">Executing #2");
delay(1500);
}
void action3() {
lcd.clear();
lcd.print(">Executing #3");
delay(1500);
}
void action4() {
lcd.clear();
lcd.print(">Executing #4");
delay(1500);
}
void action5() {
lcd.clear();
lcd.print(">Executing #5");
delay(1500);
}
void action6() {
lcd.clear();
lcd.print(">Executing #6");
delay(1500);
}
void action7() {
lcd.clear();
lcd.print(">Executing #7");
delay(1500);
}
void action8() {
lcd.clear();
lcd.print(">Executing #8");
delay(1500);
}