#include <Wire.h>
#include <LiquidCrystal_I2C_Hangul.h>
LiquidCrystal_I2C_Hangul lcd(0x27,16,2);
// SABİTLER
#define hizPot A0
#define isiPot A1
#define isiSen A2
#define buzzer 2
#define dirPin 3
#define stepPin 4
#define kirLed 5 // Resiztans çalışırken yanacak.
#define yesLed 6 // Makine çalışırken yanacak.
#define mavLed 7 // Kayıt sırasında 3 defa göz kırpacak.
#define menuBtn 8
#define geriBtn 9
#define ileriBtn 10
#define okBtn 11
#define role 12
// DEĞİŞKENLER
int isiPotDurum = 0;
int isiSenDurum = 0; // SENSÖR TAKILINCA KENDİ OKUYACAK!
int sayac = 0;
int menuDurum = 1;
int geriDurum = 1;
int ileriDurum = 1;
int okDurum = 1;
int motorYonu = 1; // Sol:0 Sağ:1
int adim = 0; // Nema 11 varsayılan adım sayısı.
int hizVar = 0; // Varsayılan hızdeğeri.
int hiz = 0; // hizPot değeri olacak.
int isiVar = 0; // isiPot değeri olacak.
int isi = 0; // NTC'den gelen isi olacak.
void setup()
{
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(menuBtn, INPUT_PULLUP);
pinMode(geriBtn, INPUT_PULLUP);
pinMode(ileriBtn, INPUT_PULLUP);
pinMode(okBtn, INPUT_PULLUP);
pinMode(hizPot, INPUT);
pinMode(isiPot, INPUT);
pinMode(isiSen, INPUT);
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
pinMode(role, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(kirLed, OUTPUT);
pinMode(yesLed, OUTPUT);
pinMode(mavLed, OUTPUT);
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("AYSUBEY");
lcd.setCursor(2, 1);
lcd.print("FILAMENT MAK.");
delay(5000);
sabitEkran(adim, hiz, isiVar, isi);
}
void loop() {
menuDurum = digitalRead(menuBtn);
geriDurum = digitalRead(geriBtn);
ileriDurum = digitalRead(ileriBtn);
okDurum = digitalRead(okBtn);
hiz = digitalRead(hizPot);
isi = digitalRead(isiPot);
Serial.print("hizPot değer :");
Serial.println(hizPot);
delay(1000);
Serial.print("isiPot değer :");
Serial.println(isiPot);
delay(1000);
if(!digitalRead(menuBtn))
{
Serial.println("Menu Basıldı.");
sayac = 1;
menu();
while (!digitalRead(menuBtn));
}
if (!digitalRead(ileriBtn) && sayac < 5 && sayac >0)
{
Serial.println("İleri Basıldı.");
sayac++;
menu();
delay(100);
while (!digitalRead(ileriBtn));
Serial.println(sayac);
}
if (!digitalRead(geriBtn) && sayac > 1)
{
Serial.println("Geri Basıldı.");
sayac--;
menu();
delay(100);
while(!digitalRead(geriBtn));
Serial.println(sayac);
}
if (!digitalRead(okBtn))
{
Serial.println("Ok Basıldı.");
aksiyon();
menu();
delay(100);
while (!digitalRead(okBtn));
}
}
void menu()
{
switch(sayac)
{
case 1:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("> BASLAT");
lcd.setCursor(0, 1);
lcd.print(" DURDUR");
break;
case 2:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" BASLAT");
lcd.setCursor(0, 1);
lcd.print("> DURDUR");
break;
case 3:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("> HIZ AYARI");
lcd.setCursor(0, 1);
lcd.print(" ISI AYARI");
break;
case 4:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" HIZ AYARI");
lcd.setCursor(0, 1);
lcd.print("> ISI AYARI");
break;
case 5:
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("> CIKIS");
break;
default:
sabitEkran(adim, hiz, isiVar, isi);
break;
}
}
void aksiyon()
{
// BAŞLAT
if(okDurum == 0 && sayac == 1)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Mak.Basliyor...");
delay(250);
for(int x=0; x<14; x++)
{
lcd.setCursor(x, 1);
lcd.print("=>");
delay(1000);
Serial.println(x);
}
delay(100);
sayac = 0;
isiKontrol(isi, isiVar);
}
// DURDUR
if(okDurum == 0 && sayac == 2)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Mak.Kapatiliyor.");
delay(250);
for(int x=14; x>=1; x--)
{
lcd.setCursor(x, 1);
lcd.print("<=");
delay(1000);
Serial.println(x);
}
delay(100);
sayac = 0;
}
// HIZ AYARI
if(okDurum == 0 && sayac == 3)
{
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("HIZ AYARI");
lcd.setCursor(0, 1);
lcd.print("--");
lcd.setCursor(4, 1);
lcd.print(hiz);
lcd.setCursor(14, 1);
lcd.print("++");
delay(5000);
}
// ISI AYARI
if(okDurum == 0 && sayac == 4)
{
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("ISI AYARI");
lcd.setCursor(0, 1);
lcd.print("--");
lcd.setCursor(4, 1);
lcd.print(isiVar);
lcd.setCursor(14, 1);
lcd.print("++");
delay(5000);;
}
// ÇIKIŞ
if(okDurum == 0 && sayac == 5)
{
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Menuden");
lcd.setCursor(2, 0);
lcd.print("cikiliyor.");
delay(250);
sabitEkran(adim, hiz, isiVar, isi);
}
}
int sabitEkran(int vh, int h, int vi, int i)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("HIZ: ");
lcd.setCursor(4, 0);
lcd.print(adim);
lcd.setCursor(7, 0);
lcd.print("/");
lcd.setCursor(8, 0);
lcd.print(hiz);
lcd.setCursor(13, 0);
lcd.print("rpm");
lcd.setCursor(0, 1);
lcd.print("ISI: ");
lcd.setCursor(4, 1);
lcd.print(isiVar);
lcd.setCursor(7, 1);
lcd.print("/");
lcd.setCursor(8, 1);
lcd.print(isi);
lcd.setCursor(13, 1);
lcd.print("C");
}
int isiKontrol(int isiVar, int isi)
{
while(isi >= isiVar)
{
sabitEkran(adim, hiz, isiVar, isi);
delay(5000);
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("BISMILLAH");
lcd.setCursor(2, 1);
lcd.print("ISI YETERLI");
delay(3000);
return;
}
}
int motorKontrol(int hiz, int motorYonu)
{
digitalWrite(dirPin, motorYonu);
digitalWrite(stepPin, HIGH);
delayMicroseconds(hiz);
digitalWrite(stepPin, LOW);
delayMicroseconds(hiz);
}