Full Otomatik Kuluçka Makinası v2

Arduino ile yapılabilecekleriniz içerisinde hiç şüphesiz Kuluçka makinasıdır. Yaptığınız projenizin sonuçlarını görmeniz sizleri çok mutlu edecektir.

Bu projeyi İBRAHİM SELÇUK gerçekleştirmiş ve çıkım almıştır. Bundan dolayı bu projenin bağlantılarını fritzingde derledikten sonra paylaşmaya karar verdim.

Öncelikle Temel Özelliklerimiz:

1. Otomatik/Manuel Cevirme
2. Cevirme Süresi tanımlama (60-120-180-240-300 DK)
3. Otomatik Isı Kontrol
4. Otomatik Nem Kontrol
5. Gunde bir kere istenen sürede sogutma. (60 – 120 DK.)
6. LCD Gosterge Paneli
7. Maksimum Isı Göstergesi
8. Gun Hesabı – Son 3 Gun cevirmeyi durdurma
9. Detaylı veri kaydetme ve Raporlama(Geliştirme Sürecinde)

Kullanılan Malzemeler

1 X Arduino Uno
1 X 12 Volt Adaptor
1 X Arduino Proto Shield
1 X 4 Lu Röle Seti
1 X Dht 22 Isı Sensörü (0,1 Derece Hassasiyetli)
1 X 20 X 4 LCD Ekran
3 X Kırmızı Led
3 X Led Yuvası Metalik
1 X RTC Zaman Modulu
3 X Push Button Düğme (Renk Sari ve Lacivert)
1 X Nem Nozulu
1 X 5 V Adaptor (Nem Nozulu İçin)
1 X 200 Watt Tüp Isıtıcı Resistans
3 X 2 delikli Kosebent (Resistansi baglamak icin)
1 X Power Supply Girişi Sigortalı
1 X Guc Kablosu
2 X 48 lık kendinden motorlu Viyol
1 X 15 Watt Led Ampul
1 X e27 Duy
1 X 12 CM 220 Volt Fan
1 X Klemens Orta Boy
3 Metre Izole 3 X 1,5 Elektirik Kablosu
3 Metre 8 telli telefon kablosu yada Ethernet kablosuda olur. (Sensorler için)
60 5 X 5 Vida
3 X Tabaka Mavi Izolasyon Kopugu
4 X Tekerlek
2 X Menteşe
1 X Çektirmeli Kilit
+ Sunta

Arkadaşlar projeyi nekadar sürede tamamladı bilemiyorum ama mükemmel bir sonuç çıkarmış sizde bana hak vereceksiniz.

Projenin Yapım Aşaması.

İlk aşamasında projenin 100 yumurtalık olmasından dolayı yeteri kadar büyüklükte bir kutu yapılması gerekmektedir. Bu oranı düşürebilir ve boyutu küçültebilirsiniz. Burada suntalar ile iki adet kutu yapılmış ve araya yalıtım malzemesi yerleştirilmiştir.

 

kulucka1 kulucka2 kulucka3

Bu projenin diğer adımları şu şekildedir.

kulucka4

Yukardaki resimde görüldüğü gibi nem yapmak için yeşil usb ile çalışan nem nozulu kullanılmış.

kulucka5

Bu resimde görüldüğü gibi kontrol mekanizması için geniş bir kutu ayarlaması yapılmış. Butonlar ile ayarlamalar yapılmaktadır.

kulucka6 kulucka7 kulucka8

Resimde gördüğünüz yuvarlak daire şeklindeki ısıtıcıdır. Bu kutunun büyüklüğüne göre lamba kullanılanilir.

kulucka9

Akadaşlar projede önemli olan nokta hiç şüphesiz arduinonun programlaması ve bunun kontrolü arduinonun yerleştirildiği kutunun içerisi şu şekilde.

kulucka10

İçerisi oldukça karışık görünüyor ama bağlantı şemasını kontrol ettiğinizde tüm fikriniz değişecektir.

kulucka11

Yukardaki ekran görüntüsünde bilinmesi gereken bazı noktalar şunlar
1. Satir.
D: (Programlı Derece) (Suanki Ölçulen Derece) M: (Maksimum ölçülen derece)
2. Satir
N: (Programlı Nem) (Suanki Olculen NEm)
3. Satir.
G: (Toplam Kulucka Suresi) (Kalan Kulucka Suresi) Cev: (Bir sonraki cevirme saati )
4. Satir
(Saat )

5. Projenin geliştirilmesiyle yumurtadan çıkımlar alındığı zaman alarm çalmasını sağlayabilirsiniz.

Projenin Bağlantı Şeması

kulucka-2-baglanti

 

Kuluçka Makinasının diğer versiyonu için

Full Otomatik Kuluçka Makinası v1

//////////////////////////////////////////
// Sahansiz  Yumurta Ver. 0.0002
// I. S. Elmas 31 / 03 / 2016
// Guncel Versiyon icin
// http://www.kuluckaclub.com/konu-amator-arduino-ile-kulucka-makinasi.html
//
// Ne Nereye Baglanacak
/*
      Sıcaklık Sensoru  Pin 3
      RTC I2C uzerine
      LCD I2C uzerine

      Yukari Dugmesi    Pın 7
      Asagi Dugmesi     PIN 8
      Tamam Dugmesi     PIN 9

      Isıtıcı Relay Pin 4
      Nem     Relay Pin 5
      Viyol 1 Relay Pin 6
      Viyol 2 Relay Pin 10

      Isıtıcı Led   Pin 14
      Nem Led       Pin 15
      Cevirme Led   Pin 16

      Dugmelere ve Ledlere gerekli dirençlerin Bağlanması Gerekmektedir!

    // Yazılımın Temel Calisma Mantığı

    Arduino İlk acildiginda EEPROM'dan gerekli bilgileri okur eğer bilgi yok ise direkt Ayar Menusu ekrana gelir.
    Zaman Modulu sayesinde, Saniye 15 ve 45 geçe mevcut isi ve nemi kontrol eder. Eğer açmak gerekiyor ise isiticiyi yada 
    nem nozulunu acar. Her saniye Isı ve Nem Degeri kontrol edilir. Eğer Isı veya Nem istenen değerin ustunde veya eşit ise 
    Isıtıcıyı yada Nem Nozulunu Kapatir. 

    Her Saat Basi Cevirme yapılıp yapılmayacagini kontrol eder. Eğer O Saat diliminde cevirme yapılacak ise saniye 30 olduğunda
    çevirme işlemini başlatır. Çevirme Süresi ayarlardan ne kadar girildi ise çevirme işlemini girilen saniye süresince yapar sonra
    kapatir. 

    Soğutma işlemini Öğlen Saat 12:00 ile 14:00 arasi yapar. Eğer 60 dakika seçildi ise 12 ile 13 arasi isitici açmaz. Eğer 
    120 Dakika girildi ise 12:00 ile 14:00 arasi isitma ve nem relaylerini açmaz.

    Eğer herhangi bir sebepten Arduino kilitlenir yada isi nem sensoru bozulur ise kendine reset atar. Eğer düzelmez ise 
    bu kısır döngü devam eder.

    Ağağı düğmesine basılı tutulur ise birinci viyolu, yukarı düğmesine basılı tutulursa ikinci viyolu basılı tutulduğu sürece
    döndürür. 

    Ana Menuye girmek icin Tamam duğmesine 5 Sn basılı tutmak gerekir. Menu icinde asagi yukari ile menu değiştirilir. Tamam 
    duğmesi ile seçim yapılır. Eğer değer giriliyor ise yine Aşağı Yukarı düğmesi ile değer seçilir/girilir Tamam ile onaylanır ve
    sonraki seçeneklere geçilir.

    Tespit Edilen Eksikler:
    - Son iki gün çevirme durdurulabilir.
    - Isıtma Fonksiyonu biraz daha zamana göre akıllı çalışabilir. Mesela ısıtıcı maksimum 3 dk devamlı çalışır gibi bir
    koruma konulabilir. Yada Isı farkı sadece 0.10 derece ise 10 sn ısıt sonra kapat denilebilir.
*/

// Makina acip kapatildiginda bilgileri hafızada tutmak icin kullanılan EEPROM'a kayıt yapabilmek icin kullanılan Kutuphane
#include <EEPROM.h>
// Zaman hesapları ve Saat makina kapalı olsada calismasi ve zamani tutmasi icin gerekli kutuphane
#include <RTCx.h>
// I2C ile calisan Saat (RTC) ve LCD ile haberlesmek icin gereken kutuphane
#include <Wire.h>
// Arduino kilitlenirse bunu tespit edip Arduino'yu tekrardan baslatacak olan Kutuphane
#include <avr/wdt.h>
// LCD Ekran ile haberlesmek icin gereken iki Kutuphane
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
// Sıcaklik sensoru DHT11 veya DHT22 yi kullanabilmek icin gereken kutuphane
#include "DHT.h" // sıcaklık kütüphanesi

#define DHTPIN 3        // DHT11PIN olarak Dijital 3 belirtiyorum belirliyoruz.
#define DHTTYPE DHT22   // DHT 22 Sensoru Kullandigimizi belirtiyoruz.

//LCD
LiquidCrystal_I2C  lcd(0x27,2,1,0,4,5,6,7); // 0x27 is the I2C bus address for an unmodified module

//Sicaklık Tanımlaması Yapıyoruz
DHT dht(DHTPIN, DHTTYPE);

//////////////////////////////////////////
// Tum Program icinde kullanıcagımız degiskenleri tanımlıyoruz. EPPROM da tutulan degerler yanında belirtilmistir.
float derece = 0;                     // İstenen Sıcaklık Derecesi                                                    (EEPROM)
float derece_olcum;                   // Olculen Sicaklık Derecesi
float derece_kalibre = 0;             // İsi donanımında kalibrasyon yapmak icin (Fabrika Reset Sonrasi 0 Olur)       (EEPROM)        (-5.00 ... 0 .. +5.00 )
long dereceolcmesec = 0;              // Her Saniyede 1 Kere sicaklik olcumu yapmak icin gerekli TEMP degisken
float derece_max;                     // Sıcaklık yukseldigi takdirde en yuksek sicaklıgı ekranda gostermek icin
int nem = 0 ;                         // Istenen Nem Değeri                                                           (EEPROM)
float nem_olcum;                      // Olculen Nem Degeri
int dondurme_saniye = 0;              // Viyollerin Kac Saniye Dondurulecegini tutan degisken                         (EEPROM)       (1 - 15 Sn)
int dondurme_zaman = 0;               // Viyollerin Kac Dakikada bir dondurulecegini tutan degisken                   (EEPROM)       (60 - 120 - 180 240 Dk)
int sogutma_suresi = 0;               // Günde 1 defa yumurta dinlendirme işlem süresi                                (EEPROM)       (0 - 60 - 120 Dk)
int kulucka_suresi = 21;              // Kulucka Suresi Gun olarak                                                    (EEPROM)       (1 - 45 Gun)
long kulucka_suresi_baslangic = 0;    // Kulucka baslangic tarihi Unixtimestamp olarak tutuluyor                      (EEPROM)       
long kalan_gun = 0;                   // Ekranda kalan gunu gostermek icin

int siradaki_dondurme_zamani = -1;    // Bir sonraki dondurme zamanını hesaplayıp tutar. Saat olarak (14:45:55 ise 14 tutar )
int son_dondurme_zamani = -1;         // Aynı saat icinde iki kere dondurmesin diye son Dondurme Zamanını tutar Saat olarak (14:45:55 ise 14 tutar )
long cevirmeMillis = 0;               // Cevirme Baslangic suresi ms olarak tutulur. Suanki ms > cevirme ms + (dondurme_saniye * 1000) ise dondurme kapatilir.
char mode = 'S';                      // Menuler icin yardimci degisken S = Setup   R = Calis   W = Saat Ayarlama M = Ana Menu
int menu = 0;                         // Ana menu icin yardimci degisken  0 => Ayarlama Menusu 1=> Saat Ayarlama 2=> Fabrika Ayarları 3=>Isı Kalibarasyon 4=>Yeni Kulucka Girisi 5=>Cikis
char ayar_duzenle = 'H';              // Menuler icin yardimci degisken H = Baslangic Tarih Sıfırlar E = Tarih Sabit Kalır

//////////////////////////////////////////
// Dugmeler
int asagiPin  = 8;                    // Asagi  Dugmesi Arduino ustunde 8 Nolu pin e baglanacak
int yukariPin = 7;                    // Yukari Dugmesi Arduino ustunde 7 Nolu pin e baglanacak
int okPin     = 9;                    // Tamam  Dugmesi Arduino ustunde 9 Nolu pin e baglanacak
int asagi     = 0;                    // Asagi Dugmesi icin degisken
int yukari    = 0;                    // Yukari Dugmesi icin degisken
int ok        = 0;                    // Tamam dugmesi icin degisken

//////////////////////////////////////////
// Relaylar
#define RELAY_ISI  4                  // Isı Acma Kapama icin Pın Tanımlama
#define RELAY_NEM  5                  // Nem acma Kapama icin Nem Tanımlama
#define RELAY_CEVIR  6                // Birinci Viyol icin Pin Tanımlama
#define RELAY_CEVIR_B  10             // İkinci Viyol icin Pin Tanımlama

//////////////////////////////////////////
// LED ler
int LED0 = 14;                        // Isıtıcı Led Pin Tanımlama
int LED1 = 15;                        // Nem Led Pin Tanımlama
int LED2 = 16;                        // Cevirici Led Pin Tanımlama

// LCD Ekran Korucu
int screensaver = 0 ;                 // Ekran koruyucu icin gecici degisken

void setup() {
  // Kilitlenme
  wdt_enable(WDTO_4S);                 // Kilitlenme Olursa diye 4 Saniyelik bir sure tanımlıyoruz ve fonk. baslatiyoruz. Eğer program 4 sn icinde tekrar aynı yere gelmez ise Arduino Reset atacak kendine
    dht.begin();                       // Isı Sensorunu Baslatiyoruz
  // Ledlerin Cikis oldugunu belirtiyoruz
  pinMode(LED0, OUTPUT); 
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  // Ses
  pinMode(3, OUTPUT);                

  // Relaylar
  pinMode(RELAY_ISI, OUTPUT);
  pinMode(RELAY_NEM, OUTPUT);
  pinMode(RELAY_CEVIR, OUTPUT);
  pinMode(RELAY_CEVIR_B, OUTPUT);

  digitalWrite(RELAY_ISI,HIGH);
  digitalWrite(RELAY_NEM,HIGH);
  digitalWrite(RELAY_CEVIR,HIGH);
  digitalWrite(RELAY_CEVIR_B,HIGH);
    
  // Bilgisayara Bagli iken DEBUG mod icin
  // Serial.begin(9600);

  // I2C iletişimi icin Wire protokolunu baslatiyoruz
  Wire.begin();                     
  ////////////////////////////////////  
  //Saat Başlatma
  uint8_t addressList[] = {RTCx::MCP7941xAddress, RTCx::DS1307Address};
  if (rtc.autoprobe(addressList, sizeof(addressList))) {
    // Serial.print("Autoprobe found ");
    switch (rtc.getDevice()) {
      case RTCx::DS1307:
    // Serial.print("DS1307");
  break;
    case RTCx::MCP7941x:
      // Serial.print("MCP7941x");
      break;
    default:
      // Ooops. Must update this example!
      // Serial.print("unknown device");
      break;
    }
    // Serial.print(" at 0x");
    // Serial.println(rtc.getAddress(), HEX);
  }
  else {
    // Nothing found at any of the addresses listed.
    // Serial.println("No RTCx found");
    return;
  }

  // Enable the battery backup. This happens by default on the DS1307
  // but needs to be enabled on the MCP7941x.
  rtc.enableBatteryBackup();

  // Ensure the oscillator is running.
  rtc.startClock();

  if (rtc.getDevice() == RTCx::MCP7941x) {
    // Serial.print("Calibration: ");
    // Serial.println(rtc.getCalibration(), DEC);
    // rtc.setCalibration(-127);
  }

  rtc.setSQW(RTCx::freq4096Hz);
  ////////////////////////////////////////////////////////////
  // Saat Baslatma bitti
  
  
  mode =  EEPROM.read(16);   // Calisma Modunu EEPROMdan okuyoruz
  if(mode == 0)
  {
      // Mode yok ise Direkt ayarlama Menusune Gidiyoruz.
      mode = 'S';               
      EEPROM.write(16, mode);
  }
  
  // Eger Mod calisma modunda ise EEPROMdan gerekli bilgileri sadece 1 kereye mahsus okuyoruz. 
  if(mode == 'R')
  {
     //derece =  EEPROM.read(20);
     EEPROM_readAnything(20, derece);
     nem = EEPROM.read(24);
     dondurme_saniye = EEPROM.read(28);
     dondurme_zaman = EEPROM.read(32);
     sogutma_suresi = EEPROM.read(36);
     kulucka_suresi = EEPROM.read(40);
     // Bitis timestamp okuyoruz
     EEPROM_readAnything(44, kulucka_suresi_baslangic);
     // Kalibrasyon Okuma
     EEPROM_readAnything(54, derece_kalibre);
  }

  // Ekrani aciyor ve temizliyoruz
  lcd.setBacklightPin(3,POSITIVE);
  lcd.setBacklight(HIGH);
  lcd.begin(20, 4);
  lcd.clear();

  // Dugmelerin Giriş Oldugunu tanimliyoruz.
  pinMode(asagiPin, INPUT);
  pinMode(yukariPin, INPUT);
  pinMode(okPin, INPUT);
}

  // Dugmelere basili tutuldugunu anlamak icin gerekli gecici Degiskenler
  long onTime = 0;
  int lastReadingOk = LOW;
  int hold = 0;
  // Saat Ayarlama icin gerekli gecici degiskenler
  int saat_menu = 1;
  int temp_tarih = 0;
  int temp_gun = 0;
  int temp_ay = 0;
  int temp_yil = 0;
  int temp_saat = 0;
  int temp_dakika = 0;


// Ana Program Burda Basliyor

void loop() {
  wdt_reset();      // Kilitlenme İcin Gerekli Fonksiyonu Cagiriyoruz. Eğer 4 sn icinde program tekrar bu satıra gelmez ise Reset atıyor kendine
  //Saat icin
  struct RTCx::tm tm;
        ///////////////////////
        // Saat ayarlamasına Giriş Ekranı
       if(mode == 'W')
       {
        asagi = digitalRead(asagiPin);
        yukari = digitalRead(yukariPin);
        ok = digitalRead(okPin);
        
        lcd.setBacklight(HIGH);
          
        lcd.setCursor(0, 0);
        lcd.print("Tarih Ayarlama     ");

        if(temp_tarih == 0)
        {
            rtc.readClock(tm);
            temp_gun = tm.tm_mday;
            temp_ay = tm.tm_mon+1;
            temp_yil = tm.tm_year+1900;
            temp_saat = tm.tm_hour;
            temp_dakika = tm.tm_min;
            temp_tarih = 1; // Kayitta Sifirlanacak
        }

        lcd.setCursor(1, 2);
        if(temp_gun < 10){lcd.print(" ");}
        lcd.print(temp_gun);
        lcd.print("/");
        if(temp_ay < 10){lcd.print(" ");}
        lcd.print(temp_ay);
        lcd.print("/");        
        lcd.print(temp_yil);
        lcd.print("-");
        if(temp_saat < 10){lcd.print("0");}
        lcd.print(temp_saat);
        lcd.print(":");
        if(temp_dakika < 10){lcd.print("0");}
        lcd.print(temp_dakika);

                  
          lcd.setCursor(0, 3);
          lcd.print("Ayarla OK");
          
          if(saat_menu == 1)
          {
            //Gun Ayarla
            lcd.setCursor(2, 2);
            lcd.blink();
            if(asagi == HIGH)
             {
                temp_gun = temp_gun - 1;
             }
             if(yukari == HIGH)
             {
                temp_gun = temp_gun + 1;
             }
             if(temp_gun < 1) { temp_gun = 1; } if(temp_gun > 31)
             {
              temp_gun = 31;
             }
          }
          if(saat_menu == 2)
          {
            //Ay Ayarla
            lcd.setCursor(5, 2);
            lcd.blink();
            if(asagi == HIGH)
             {
                temp_ay = temp_ay - 1;
             }
             if(yukari == HIGH)
             {
                temp_ay = temp_ay + 1;
             }
             if(temp_ay < 1) { temp_ay = 1; } if(temp_ay > 12)
             {
              temp_ay = 12;
             }
          }
          if(saat_menu == 3)
          {
            //Yil Ayarla
            lcd.setCursor(10, 2);
            lcd.blink();
            if(asagi == HIGH)
             {
                temp_yil = temp_yil - 1;
             }
             if(yukari == HIGH)
             {
                temp_yil = temp_yil + 1;
             }
             if(temp_yil < 2016) { temp_yil = 2016; } if(temp_yil > 2020)
             {
              temp_yil = 2020;
             }
          }
          if(saat_menu == 4)
          {
            //Saat Ayarla
            lcd.setCursor(13, 2);
            lcd.blink();
            if(asagi == HIGH)
             {
                temp_saat = temp_saat - 1;
             }
             if(yukari == HIGH)
             {
                temp_saat = temp_saat + 1;
             }
             if(temp_saat < 0) { temp_saat = 0; } if(temp_saat > 23)
             {
              temp_saat = 23;
             }
          }
          if(saat_menu == 5)
          {
            //Dakika Ayarla
            lcd.setCursor(16, 2);
            lcd.blink();
            if(asagi == HIGH)
             {
                temp_dakika = temp_dakika - 1;
             }
             if(yukari == HIGH)
             {
                temp_dakika = temp_dakika + 1;
             }
             if(temp_dakika < 0) { temp_dakika = 59; } if(temp_dakika > 59)
             {
              temp_dakika = 0;
             }
          }
          
          if(ok != HIGH)
           {
            
             saat_menu ++;
             if(saat_menu > 5)
             {
             if(ok != HIGH)
             {
                 // Clock Set
                 
                 tm.tm_min   = temp_dakika;
                 tm.tm_hour  = temp_saat;
                 tm.tm_wday  = 0;
                 tm.tm_mday  = temp_gun;
                 tm.tm_mon   = temp_ay-1;
                 tm.tm_year  = temp_yil-2000;

                 rtc.setClock(&tm);
                 saat_menu = 1;
                 temp_tarih = 0;
                 mode = 'R';
                 lcd.clear();
                 lcd.noBlink();
             }
             }
           }
           delay(100);
       }

  ////////////////////////////
  // Ana Menu 
  if(mode == 'A')
  {
     // Menuye girerse Isıtıcı ve Nemi Kapa
     if(digitalRead(RELAY_ISI)!=HIGH)
     {
       digitalWrite(RELAY_ISI,HIGH);
       delay(50);
       digitalWrite(LED0,LOW);
     }
     if(digitalRead(RELAY_NEM)!=HIGH)
     {
       digitalWrite(RELAY_NEM,HIGH);
       delay(50);
       digitalWrite(LED1,LOW);
     }
         
     // Menu 0 -> Ayar
     // Menu 1 -> Saat
     // Menu 2 -> Reset
     // Menu 3 -> Isı Kalibre
     // Menu 4 -> Yeni Kulucka Girisi
     // Menu 5 -> Cikis
     asagi = digitalRead(asagiPin);
     yukari = digitalRead(yukariPin);
     ok = digitalRead(okPin);
     lcd.setCursor(0, 0);
     lcd.print("MENU SEC            ");
     if(asagi == HIGH)
     {
        menu = menu - 1;
     }
     if(yukari == HIGH)
     {
        menu = menu + 1;
     }
     if(menu < 0){menu = 5;} if(menu > 5){menu = 0;}
          
     if(menu == 0)
     {
        lcd.setCursor(0, 1);
        lcd.print("Ayarlari Duzenle    ");
     }
     if(menu == 1)
     {
        lcd.setCursor(0, 1);
        lcd.print("Saat Ayarlama Menusu");
     }
     if(menu == 2)
     {
        lcd.setCursor(0, 1);
        lcd.print("Fabrika Ayarlari    ");
     }
     if(menu == 3)
     {
        lcd.setCursor(0, 1);
        lcd.print("Isi Kalibrasyon     ");
     }
     if(menu == 4)
     {
        lcd.setCursor(0, 1);
        lcd.print("Yeni Kulucka Girisi ");
     }
     if(menu == 5)
     {
        lcd.setCursor(0, 1);
        lcd.print("Cikis               ");
     }
     if(ok == LOW)
     {
          lcd.clear();
          if(menu == 0)
          {
            ayar_duzenle = 'E';
            mode = 'S';
          }
          if(menu == 1)
          {mode = 'W';}
          if(menu == 2)
          {
              /////////////
              // Eppromu sil
              mode = 'S';
              for (int i = 0 ; i < EEPROM.length() ; i++) { EEPROM.write(i, 0); } } if(menu == 3) { // Isı Kalibrasyonu Yap mode = 'H'; lcd.clear(); lcd.setCursor(0, 0); lcd.print("Isi Kalibrasyon"); } if(menu == 4) { // Yeni Kulucka Girisi mode = 'S'; ayar_duzenle = 'H'; } if(menu == 5) { // Calismaya DeVam Et mode = 'R'; } menu = 0; } delay(150); } /////////////////////////////// // ISI Sensor Kalibrasyon + - if(mode == 'H') { asagi = digitalRead(asagiPin); yukari = digitalRead(yukariPin); ok = digitalRead(okPin); Serial.println(asagi); if(asagi == LOW) { derece_kalibre = derece_kalibre + 0.1; } if(yukari == LOW) { derece_kalibre = derece_kalibre - 0.1; } if(derece_kalibre > 5) {derece_kalibre = +5;}
  if(derece_kalibre < -5) {derece_kalibre = -5;}
  lcd.setCursor(0, 1);
  lcd.print(derece_kalibre);
  lcd.print(" ");
  if(ok == LOW)
  {
      // Derece Kalibre Et
      EEPROM_writeAnything(54, derece_kalibre);
      mode = 'A';
      menu = 3;
      delay(150);
  }
  delay(100);
}


  // Kulucka Genel Ayarlama Menusu
  if(mode == 'S')
  {
      lcd.setCursor(0, 0);
      lcd.print("KURULUM MENUSU");
      asagi = digitalRead(asagiPin);
      yukari = digitalRead(yukariPin);
      ok = digitalRead(okPin);
      /////////////////
      // Sıcaklık Ayarı
      if(menu == 0)
      {
          if(derece == 0) { derece = 37,5;};
          lcd.setCursor(0, 1);
          lcd.print("SICAKLIK: ");
          if(asagi == HIGH)
           {
              derece = derece - 0.1;    
           }
           if(yukari == HIGH)
           {
              derece = derece + 0.1;    
           }
           if(derece <= 25) { derece = 25; } if(derece > 41)
           {
            derece = 41;
           }
           if(ok != HIGH)
           {
               while(ok != HIGH)
               {
                    ok = digitalRead(okPin);
               }
               menu = 1;
               lcd.clear();
           }
          lcd.print(derece);
          lcd.print(" C");
          lcd.setCursor(0, 4);
          lcd.print("SONRAKI ICIN OK");
       }
       // Nem Ayarı
       if(menu == 1)
       {
           lcd.setCursor(0, 1);
           lcd.print("NEM : ");
           if(nem == 0) { nem = 50;};

           if(asagi == HIGH)
           {
              nem = nem - 1;    
           }
           if(yukari == HIGH)
           {
              nem = nem + 1;    
           }
           if(nem <= 40) { nem = 40; } if(nem > 85)
           {
            nem = 85;
           }
           lcd.print(nem);
          lcd.print(" %");
          lcd.setCursor(0, 4);
          lcd.print("SONRAKI ICIN OK");
          if(ok != HIGH)
           {
               while(ok != HIGH)
               {
                ok = digitalRead(okPin);
               }
               menu = 2;
               lcd.clear();
           }
       }
       // Dondurme Ayarı Açı
       if(menu == 2)
       {
           if(dondurme_saniye == 0) {dondurme_saniye = 10;};
           lcd.setCursor(0, 1);
           lcd.print("Dondurme Sn   : ");
           lcd.setCursor(0, 2);
           lcd.print("Dondurme Suresi: ");
           lcd.setCursor(0, 4);
           lcd.print("SONRAKI ICIN OK");
           lcd.setCursor(17, 1);
           lcd.print(dondurme_saniye);
           lcd.print(" ");
           lcd.setCursor(14, 1);
           lcd.blink();

           if(asagi == HIGH)
           {
              dondurme_saniye = dondurme_saniye - 1;    
           }
           if(yukari == HIGH)
           {
              dondurme_saniye = dondurme_saniye + 1;    
           }
           if(dondurme_saniye <= 1) { dondurme_saniye = 1; } if(dondurme_saniye > 15)
           {
            dondurme_saniye = 15;
           }
           
           if(ok != HIGH)
           {
               while(ok != HIGH)
               {
                ok = digitalRead(okPin);
                lcd.noBlink();
               }
               menu = 3;
               lcd.clear();
           }
       }
       // Dondurme Zamani
       if(menu == 3)
       {
           if(dondurme_zaman == 0) {dondurme_zaman = 60;};
           lcd.setCursor(0, 1);
           lcd.print("Dondurme Sn   :  ");
           lcd.setCursor(0, 2);
           lcd.print("Dondurme Suresi:   ");
           lcd.setCursor(17, 1);
           lcd.print(dondurme_saniye);
           lcd.print(" ");
           lcd.setCursor(16, 2);
           if(dondurme_zaman == 60) {lcd.setCursor(17, 2);};
           lcd.print(dondurme_zaman);
           lcd.setCursor(0, 4);
           lcd.print("SONRAKI ICIN OK");
           
           lcd.setCursor(15, 2);
           lcd.blink();

           if(asagi == HIGH)
           {
              dondurme_zaman = dondurme_zaman - 60;    
           }
           if(yukari == HIGH)
           {
              dondurme_zaman = dondurme_zaman + 60;    
           }
           if(dondurme_zaman <= 60) { dondurme_zaman = 60; } if(dondurme_zaman > 240)
           {
            dondurme_zaman = 240;
           }
             if(ok != HIGH)
             {
                 while(ok != HIGH)
                 {
                  ok = digitalRead(okPin);
                  lcd.noBlink();
                 }
                 menu = 4;
                 // Ayarlar değiştir dondurme tekrar hesaplanacak
                 siradaki_dondurme_zamani = -1;
                 son_dondurme_zamani = -1;
                 lcd.clear();
             }
           
       }
       // Sogutma Zamanı
       if(menu == 4)
       {
          lcd.setCursor(0, 1);
          lcd.print("Sogutma Suresi dk.:  ");

          lcd.setCursor(10, 2);
          if(sogutma_suresi < 70) {lcd.print(" "); lcd.setCursor(11, 2);};
          
          lcd.print(sogutma_suresi);

          if(asagi == HIGH)
           {
              sogutma_suresi = sogutma_suresi - 60;    
           }
           if(yukari == HIGH)
           {
              sogutma_suresi = sogutma_suresi + 60;    
           }
           if(sogutma_suresi <= 0) { sogutma_suresi = 0; } if(sogutma_suresi > 120)
           {
            sogutma_suresi = 120;
           }
           
             if(ok != HIGH)
             {
                 while(ok != HIGH)
                 {
                  ok = digitalRead(okPin);
                  lcd.noBlink();
                 }
                 menu = 5;
                 lcd.clear();
             }
           
       }
       if(menu == 5)
       {
          lcd.setCursor(0, 1);
          lcd.print("Kulucka Suresi Gun:  ");

          lcd.setCursor(10, 2);
          if(kulucka_suresi < 10) {lcd.print(" "); lcd.setCursor(11, 2);};
          
          lcd.print(kulucka_suresi);

          lcd.setCursor(0, 3);
          lcd.print("Sonraki icin OK");

          if(asagi == HIGH)
           {
              kulucka_suresi = kulucka_suresi - 1;    
           }
           if(yukari == HIGH)
           {
              kulucka_suresi = kulucka_suresi + 1;    
           }
           if(kulucka_suresi <= 1) { kulucka_suresi = 1; } if(kulucka_suresi > 45)
           {
            kulucka_suresi = 45;
           }
           if(ok != HIGH)
           {
             if(ok != HIGH)
             {
                 while(ok != HIGH)
                 {
                  ok = digitalRead(okPin);
                  lcd.noBlink();
                 }
                  mode = 'R';
                  menu = 0;
                  lcd.clear();
                  
                  EEPROM.write(16, mode);
                  // Degişkenleri Yaz
                  // Kulucka Derecesi
                  //EEPROM.write(20, derece);
                  EEPROM_writeAnything(20, derece);
                  // Nem
                  EEPROM.write(24, nem);
                  // Dondurme acisi
                  EEPROM.write(28, dondurme_saniye);
                  // Dondurme Zaman
                  EEPROM.write(32, dondurme_zaman);
                  // Sogutma Suresi
                  EEPROM.write(36, sogutma_suresi);
                  // Kulucka Suresi
                  EEPROM.write(40, kulucka_suresi);
                  // Kulucka Suresi Bitis
                  rtc.readClock(tm);
                  RTCx::time_t t = RTCx::mktime(&tm);
                   
                  if(ayar_duzenle == 'E')
                  {
                    
                  }
                  if(ayar_duzenle == 'H')
                  {
                    // Suani baslangic gunu olarak yaziyoruz. Unixtimestamp
                    // Edit te yazmamak lazım !!!
                    EEPROM_writeAnything(44, t);
                  }
             }
           }
       }
      delay(100);
  }
  //////////////////
  // Calisma Menusu
  if(mode == 'R')
  {
    
    asagi = digitalRead(asagiPin);
    yukari = digitalRead(yukariPin);
    // Yukari Dugmesine basinca 1. viyolu dondurur
    while(yukari != HIGH)
    {
        if(digitalRead(RELAY_CEVIR)!=LOW)
        {
          digitalWrite(RELAY_CEVIR,LOW);
          digitalWrite(LED2,HIGH);
        }
        asagi = digitalRead(asagiPin);
        yukari = digitalRead(yukariPin);
        // Kilitlenme
        wdt_reset(); // Kilitlenme İcin Gerekli Fonksiyonu Cagiriyoruz. Eğer 4 sn icinde program tekrar bu satıra gelmez ise Reset atıyor kendine
    }

    // Asagi Dugmesine basinca 2. viyolu dondurur
    while(asagi != HIGH)
    {
        if(digitalRead(RELAY_CEVIR_B)!=LOW)
        {
          digitalWrite(RELAY_CEVIR_B,LOW);
          digitalWrite(LED2,HIGH);
        }
        asagi = digitalRead(asagiPin);
        yukari = digitalRead(yukariPin);
        // Kilitlenme
        wdt_reset(); // Kilitlenme İcin Gerekli Fonksiyonu Cagiriyoruz. Eğer 4 sn icinde program tekrar bu satıra gelmez ise Reset atıyor kendine
    }
    
    // Dugmeler
    ok = digitalRead(okPin);
    
    // Isi Kontrol
    lcd.setCursor(0, 0);
    lcd.print("D: ");
    lcd.setCursor(2, 0);
    lcd.print(derece);
    lcd.setCursor(0, 1);
    lcd.print("N:");
    lcd.setCursor(2, 1);
    lcd.print(nem);
    lcd.setCursor(0, 2);
    lcd.print("G:");
    lcd.setCursor(2, 2);
    lcd.print(kulucka_suresi);
    /////////////////
    // Ekran Koruyucu Devreye giriyor
    screensaver ++ ;
    if(screensaver > 150)
    {
        if(screensaver < 200)
        {
        lcd.clear();
        lcd.setBacklight(LOW);
        screensaver = 200;
        }        
    }
    /////////////////
    // Ekran Koruyucu pasif
    if(ok != HIGH)
    {
        lcd.setBacklight(HIGH);
        screensaver = 0;
    }    
     ///////////////////////////////////////////////////////////
     // Ortam Sıcaklıgı ve Nem Ölçme Her saniye kontrol ediliyor
     // 
     if(dereceolcmesec !=  tm.tm_sec)
     {
      derece_olcum = dht.readTemperature();
      derece_olcum = derece_olcum + derece_kalibre;
      nem_olcum = dht.readHumidity();
      dereceolcmesec = tm.tm_sec;
     }
     /////////////////////////
     // Nem Almayi Kapa
     if(nem < nem_olcum)
      {
        // NEM vermeyi kapa
        digitalWrite(RELAY_NEM,HIGH);
        delay(20);
        digitalWrite(LED1,LOW);
        // Fark cok ise nem alma icin bir relay ayarlanabilir.
        lcd.setCursor(19, 1);
        lcd.print(" ");
      }
     // Isıtıcıyı Kapa
     if(derece < derece_olcum) { // Isıtıcı Kapa digitalWrite(RELAY_ISI,HIGH); delay(50); digitalWrite(LED0,LOW); lcd.setCursor(19, 0); lcd.print(" "); } ///////////////////////////////////////////// // Isı Sensoru Hata kontrol if (isnan(nem_olcum) || isnan(derece_olcum)) { // Nem Sensoru Bozuk lcd.clear(); lcd.setCursor(5, 3); lcd.print("Hata"); if (isnan(nem_olcum)) { lcd.print(" Nem"); } if (isnan(derece_olcum)) { lcd.print(" ISI"); } // Hata verirse isitici ve nemi kapa if(digitalRead(RELAY_ISI)!=HIGH) { digitalWrite(RELAY_ISI,HIGH); delay(50); } if(digitalRead(RELAY_NEM)!=HIGH) { digitalWrite(RELAY_NEM,HIGH); delay(50); } // Isı sensoru hatalı oldugu icin Reset atsin diye 5 SN delay veriyoruz delay(5000); } else { lcd.setCursor(12, 3); lcd.print(" "); lcd.setCursor(8, 0); lcd.print(derece_olcum, 2); if(derece_olcum > derece_max)
        {
          derece_max = derece_olcum;
        }
        // Maksimum Derece Yazdırma
        lcd.print("M");
        lcd.print(derece_max, 2);
      
        lcd.setCursor(8, 1);
        lcd.print(nem_olcum);

        // Kalan Gun Hesabı
        rtc.readClock(tm);
        RTCx::time_t t = RTCx::mktime(&tm);
        ///////////////////////////////////////
        // Bitis suresinden bugunu cikartiyoruz
        kalan_gun = t - kulucka_suresi_baslangic;
        // Kalan gunu hesaplıyoruz
        kalan_gun = kalan_gun / 60 / 60 / 24;
        kalan_gun = kulucka_suresi - kalan_gun;

        //Serial.println(kulucka_suresi_baslangic);
        
        lcd.setCursor(5, 2);
        lcd.print(kalan_gun);
        lcd.setCursor(7, 2);
        lcd.print(" Gun");
        
        rtc.readClock(tm);
        lcd.setCursor(1, 3);
        printTm(Serial, &tm);
        
        
        lcd.setCursor(13, 2);
        lcd.print("Cev:");
        if(siradaki_dondurme_zamani < 10 && siradaki_dondurme_zamani > 0){lcd.print("0"); }
        if(siradaki_dondurme_zamani > -1)
        {
        lcd.print(siradaki_dondurme_zamani);
        }
        delay(100);
     }
    /////////////////
    // Cevirme Kapama
     
    if (millis() - cevirmeMillis >= dondurme_saniye*1000 && cevirmeMillis>0) 
    {
        digitalWrite(RELAY_CEVIR,HIGH);
        delay(50);
        digitalWrite(RELAY_CEVIR_B,HIGH);
        delay(50);
        digitalWrite(LED2,LOW);
        cevirmeMillis = 0;
    }
    if(tm.tm_sec == 30)
    {
      ////////////////////////////////////////
      // Yumurta Çevirme
      // dondurme_zaman 60->1 120->2 180->3 240->4

      //Dondurme Set edilmedi ise
      if(siradaki_dondurme_zamani == -1)
      {
          // Daha Once hiç Donmedi ise makina ilk acildiginda 1 kere dondurme islemi yapmasını sağlıyoruz
          siradaki_dondurme_zamani =  tm.tm_hour;
      }
      
      if(tm.tm_hour == siradaki_dondurme_zamani && son_dondurme_zamani != siradaki_dondurme_zamani or ok != HIGH)
      {
            // Yumurta Dondur
            //Serial.print(digitalRead(RELAY_CEVIR));
            
            digitalWrite(RELAY_CEVIR,LOW);
            delay(50);
            digitalWrite(RELAY_CEVIR_B,LOW);
            delay(50);
            digitalWrite(LED2,HIGH);
            cevirmeMillis = millis();
            
            if(dondurme_zaman == 60)
            {siradaki_dondurme_zamani = tm.tm_hour+1;}
            if(dondurme_zaman == 120)
            {siradaki_dondurme_zamani = tm.tm_hour+2;}
            if(dondurme_zaman == 180)
            {siradaki_dondurme_zamani = tm.tm_hour+3;}
            if(dondurme_zaman == 240)
            {siradaki_dondurme_zamani = tm.tm_hour+4;}
            // Bir Daha Bu saatte Donmesin
            son_dondurme_zamani = tm.tm_hour;
            if(siradaki_dondurme_zamani > 23) {siradaki_dondurme_zamani = siradaki_dondurme_zamani-24;}
      }
    }
    
    if(tm.tm_sec == 15 or tm.tm_sec == 45)
    {
            ///////////////
            // Sogutma Kodu
            if((tm.tm_hour == 12 && sogutma_suresi > 0) or (tm.tm_hour == 13 && sogutma_suresi > 60))
            {
               // ISI ve Nemi kapa
               if(digitalRead(RELAY_ISI)!=HIGH)
               {
                 digitalWrite(RELAY_ISI,HIGH);
                 delay(50);
               }
               if(digitalRead(RELAY_NEM)!=HIGH)
               {
                 digitalWrite(RELAY_NEM,HIGH);
                 delay(50);
               }
               lcd.setCursor(19, 0);
               lcd.print("S");
            }
            else
            {
              // Isi Kontrol
              if(derece > derece_olcum)
              {
                // Isıtıcı Aç
                digitalWrite(RELAY_ISI,LOW);
                delay(50);
                digitalWrite(LED0,HIGH);
                delay(50);
                lcd.setCursor(19, 0);
                lcd.print("C");
              }
              //////////////////////////////////////////
              // Nem Kontrol 
              // Nem Az
              if(nem > nem_olcum)
              {
                // Nem Vermeyi etkinleştir
                digitalWrite(RELAY_NEM,LOW);
                digitalWrite(LED1,HIGH);
                lcd.setCursor(19, 1);
                lcd.print("C");
              }
            }
    }
    
    
    
    // Setup a Geri Donme
    // Menu İçin Basılı Tutma
    if (ok == LOW && lastReadingOk == HIGH) {
        // Serial.println("bas 1");
        onTime = millis();
    }
    //held
   if (ok == LOW && lastReadingOk == LOW) {
     if ((millis() - onTime) > 2500) {
       hold = 1;
        if ((millis() - onTime) > 5000) {
          hold = 2;
        }
     }
   }
   if (ok == HIGH && lastReadingOk == LOW) 
   {
       onTime = 0;
       if (hold == 1) {
             hold = 0;
             mode = 'A';
             lcd.clear();
       }
       if (hold == 2) {
             hold = 0;
             mode = 'A';
             lcd.clear();
       }
   }
   lastReadingOk = ok;
    delay(20);
  }
}

// Saat i ekrana bastirmak icin fonksiyon
void printTm(Stream &str, struct RTCx::tm *tm)
{
  lcd.setCursor(0, 3);
  // Yıl gun ay bastirmiyoruz
  /*
  if(tm->tm_mday<10){lcd.print('0');} lcd.print(tm->tm_mday);
  lcd.print('/');
  if(tm->tm_mon<10){lcd.print('0');} lcd.print(tm->tm_mon + 1);
  lcd.print('/');
  lcd.print(tm->tm_year + 1900);
  
  lcd.print(' ');
  */
  if(tm->tm_hour<10){lcd.print('0');} lcd.print(tm->tm_hour);
  lcd.print(':');
  if(tm->tm_min<10){lcd.print('0');} lcd.print(tm->tm_min);
  lcd.print(':');
  if(tm->tm_sec<10){lcd.print('0');} lcd.print(tm->tm_sec);
}

// EEPROM a uzun degerleri kaydetmek ve okumak icin gerekli fonksiyon
template <class T> int EEPROM_writeAnything(int ee, const T& value)
{
    const byte* p = (const byte*)(const void*)&value;
    unsigned int i;
    for (i = 0; i < sizeof(value); i++)
          EEPROM.write(ee++, *p++);
    return i;
}

template <class T> int EEPROM_readAnything(int ee, T& value)
{
    byte* p = (byte*)(void*)&value;
    unsigned int i;
    for (i = 0; i < sizeof(value); i++)
          *p++ = EEPROM.read(ee++);
    return i;
}

Projenin daha detaylı anlatımı için  http://www.kuluckaclub.com/konu-amator-arduino-ile-kulucka-makinasi.html adresini ziyaret ediniz.

Kullanılan kütüphane dosyaları

 

Boş zamanlarda arduino ile uğraşan kendi halinde bir Öğretmen.

 
  1. Arduinocu 5 Temmuz 2017 13:48

    Muhtemelen Arduino IDE de sikinti var Degisik bir IDE surumu kullanarak tekrar deneyin

    Cevapla
  2. Alperen 12 Haziran 2017 17:24

    MERHABA BEN BU HATA MESAJINI ALIYORUM DA NE YAPMALIYIM?? YARDIMCI OLURSANIZ ÇOK MEMNUN OLURUM 🙂

    Arduino:1.8.3 (Windows Store 1.8.6.0) (Windows 10), Kart:”Arduino/Genuino Uno”

    C:\Users\Alperen\Documents\Arduino\kuluk_ka_makinas__v2\kuluk_ka_makinas__v2.ino: In function ‘void setup()’:

    kuluk_ka_makinas__v2:157: error: ‘EEPROM_readAnything’ was not declared in this scope

    EEPROM_readAnything(20, derece);

    ^

    C:\Users\Alperen\Documents\Arduino\kuluk_ka_makinas__v2\kuluk_ka_makinas__v2.ino: In function ‘void loop()’:

    kuluk_ka_makinas__v2:485: error: ‘EEPROM_writeAnything’ was not declared in this scope

    EEPROM_writeAnything(54, derece_kalibre);

    ^

    kuluk_ka_makinas__v2:761: error: ‘EEPROM_writeAnything’ was not declared in this scope

    EEPROM_writeAnything(20, derece);

    ^

    kuluk_ka_makinas__v2:914: error: ‘printTm’ was not declared in this scope

    printTm(Serial, &tm);

    ^

    kuluk_ka_makinas__v2:1074: error: a function-definition is not allowed here before ‘{‘ token

    {

    ^

    kuluk_ka_makinas__v2:1116: error: expected ‘}’ at end of input

    }

    ^

    kuluk_ka_makinas__v2:1116: error: expected ‘}’ at end of input

    “EEPROM.h” için birden fazla library bulundu
    Kullanılıyor: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.6.0_x64__mdqgnx93n4wtt\hardware\arduino\avr\libraries\EEPROM
    Kullanılmıyor: C:\Users\Alperen\Documents\Arduino\libraries\UC1701
    exit status 1
    ‘EEPROM_readAnything’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    Cevapla
  3. tlghn1 23 Mayıs 2017 23:16

    emeğinize sağlık güzel çalışma.

    Cevapla
  4. ATO 12 Ocak 2017 20:31

    kodun son halini atarmısınız lütfen malzemeleri aldım ama kodu bir türlü yapamadım yardımıcı olursanız sevinirim şimdiden teşekür ederim.

    Cevapla
  5. devre 1 Ocak 2017 12:31

    Çalışan çözüm

    Cevapla
  6. devre 1 Ocak 2017 09:26

    İbrahim bey öncelikle böyle farklı bir yöntemle kuluçka makinesi yapmanızı ve bu makineyi ayrıntılıarı ile paylaşmanızdan dolayı sizi kutlarım.

    Verdğiniz linkteki 3 sayfayı okudum ve gerçekten farklı bir çalışma olmuş.Çalışmanızdan sonra nasıl olacağını merak ettim ve bu makineyi yapmaya karar verdim. Yorumlarınızda projenin ilk yazdığınız kod’dan sonra yaşadığınız çıkım denemelerinde yaşadığınız sıkıntılar nedeniyle kod’da düzeltmeler yapmışsınız. Sizin için sıkıntı olmaz ise projenin kodlarında yaptığınız değişiklerin olduğu kodun en son halini paylaşır mısınız?

    İyi Çalışmalar dilerim.

    Cevapla
  7. aktepe43 28 Aralık 2016 19:02

    Sayın arkadaşlar LCD.h hatasını çözemedim hala Allah aşkına bı yardımcı Olurmusunz malzemeler elimde Kaldı Kimse yardımcı olamuyor

    Cevapla
  8. devre 28 Aralık 2016 14:04

    Paylaşımınız için teşekkürler.Bu projeyi daha geliştirdiniz mi? En son versiyonunun kodlarını paylaşırmısınız?

    Cevapla
  9. Ahmet aslan 24 Aralık 2016 13:47

    Değerli Arkadaşlarım LCD.h hatası alıyorum çözemedim Herhalde LCD Kütüphanesi olması lazmmmis yardımlarınızı Bekliyorum
    Bu siteyi kuran kardeşlerimize Candan Teşekkürler sitemizi takip ediyorum devamlı faydalı yararlı programlar var bütün arkadaşlarıma Teşekkür ler.iyi Gunler

    Cevapla
    • Arduinocu 24 Aralık 2016 14:49

      ahmet bey eski kutuphaneler kullanilmis. Suanda kullanilan kutuphanelerde LCD.h yok . Bundan dolayi ya eski kutuphaneler ve IDE kullanmalisiniz yada programda bazi degisiklikler yapmalisiniz .

      Cevapla
      • Ahmet aslan 24 Aralık 2016 23:01

        Sayın Efendim Öncelikle yorumu görüp cvp Verdiğiniz İcn Canı gönülden teşekkür ediyorum Ben Hazır kod kullanarak Arduino ya direk aktarmak İstiyorum anlatmak istediğim kod yazmayi Bilmiyorum Demiş olduğunuz Degisiklikleri nasıl Yapabilirim LCD.h Başıma dert oldu kuluçka makinesi için Gayet güzel bir program elimdeki malzemelerde aynı onun için Bu nu yaparsam çok ii olacak Kesinlikle Emek verilerek yapılmış program ellerine sağlık arkadaşın hayırlı geceler bütün Arduino ekibine

        Cevapla
    • aktepe43 25 Aralık 2016 18:09

      Ahmet bey aynı hata bendede var hatayı cozerseniz Bana da yardımcı Olursanız sevinirim

      Cevapla
  10. aktepe43 21 Aralık 2016 22:18

    Hocam hata hala devam ediyor bütün malzemelerini aldım sadece kotta sıkıntı var LCD.h lütfen admin arkadaşlar yrdiminiza ihtiyacım var Teşekkür ler

    Cevapla
  11. aktepe43 14 Aralık 2016 13:58

    Arduino:1.6.13 (Windows 7), Kart:”Arduino/Genuino Uno”

    C:\Users\ADMÄ°N\Downloads\kulucka2\kulucka2.ino:68:17: fatal error: LCD.h: No such file or directory

    compilation terminated.

    exit status 1
    Error compiling for board Arduino/Genuino Uno.

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    Cevapla
    • Arduinocu 14 Aralık 2016 16:54

      Ismail bey bu problem iki seyden dolayi olabilir .
      Birincisi kutuphane digeri ise IDE surumu
      Kutuphane problemini library managerdan LCD.h kutuphanesini indirin.
      Ikincisinde bu programi 1.6.5 surumunde denedim ve program calisiyordu. IDE surumunu dusurerek deneyebilirsiniz.

      Cevapla
      • aktepe43 15 Aralık 2016 11:39

        Sa Hocam sizin dediğimiz gibi ide 1.6.5indirdim olmadı lcd.h kutuphanesi Lazm lcd.h kütüphanesi yok kodu sizde Pc nzde denerseniz hatayı gorursunz lcd.h kutuphanesi bulamadım .

        Cevapla
  12. Hasan Hüseyin Yılmaz 14 Ekim 2016 10:11

    İbrahim Selçuk beni çok büyük bir dertten kurtardın . Çok güzel bir çalışma olmuş . Ekran kullanımını biraz daha güzelleştirebilrsen. Daha güzel olacağı kanaatindeyim .

    Teşekkürler

    Değerli Admin Sitenizi zevkle takip ediyorum . Kolay gelsin

    Cevapla
    • ismail aktepe 13 Aralık 2016 19:37

      sa elınıze saglık ıbrahım bey ve sıte yonetıcılerı paylasımlarınız gercekten cok yararlı bı sorunum varr bu projede herseyı aldım fakat kodlama yaparken LCD.H HATASI ALIYORUM KÜTÜPHANESINI VARMI ? YARDIMCI OLURSANIZ SEVINIRIM

      Cevapla
      • Arduinocu 14 Aralık 2016 10:34

        Ismail bey eger hata mesajini paylasabilirseniz daha yararli olabiliriz .
        Kolay gelsin

        Cevapla
        • aktepe43 14 Aralık 2016 13:49

          Arduino:1.6.13 (Windows 7), Kart:”Arduino/Genuino Uno”

          C:\Users\ADMÄ°N\Downloads\kulucka2\kulucka2.ino:68:17: fatal error: LCD.h: No such file or directory

          compilation terminated.

          exit status 1
          Error compiling for board Arduino/Genuino Uno.

          This report would have more information with
          “Show verbose output during compilation”
          option enabled in File -> Preferences.

          Cevapla
    • Arduinocu 14 Aralık 2016 10:33

      Tesekkurler Hasan Huseyin Bey

      Cevapla
      • ahmet kalkan 17 Mayıs 2017 19:59

        merhabalar öncelikle elinize sağlık
        bunun degerleriyle tam halini nerden bulabilirim yardımcı olurmusunuz

        Cevapla

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.