Kuluçka Makinası V.2.0

Kuluçka Makinası V.2.0

Arduino ile yapılmış olan kuluçka makinamı tanıtmak istiyorum.Devre Şeması ve yazılım eklenmiştir.RTC ile her iki saat te servo yardımıyla dönme işlevi yapar.Lm35 ile sıcaklık DHT11 ile nem değeri ölçülmektedir.Detaylı anlatım video da mevcuttur..

Baskı devre şeması pdf dosyası nı buradan indiriniz. kuluçka baskı

 

 

 

 

#include <EEPROM.h>
#include <dht11.h>

#include <LiquidCrystal.h>
#include <DS1302RTC.h>
#include <Time.h>

#include<Servo.h>
Servo sg90;
DS1302RTC RTC(5, 6, 7);
# define role 4
int aci = 90;
int yumurta_gun = 1;
int servo = 0;
float sicaklik = 0;
const int Lm35 = A5;

int sifirla = 0;
int gelen_veri = 0;
float voltaj_deger = 0;

float ortalama = 0;
int say =0;
int address = 50;                                    // eepromdaki değişken adres
int kayit = 0;                                  // eepromdan okunarak tutulan data

int servo_konum=0;

//            lcd(RS,  E, d4, d5, d6, d7)
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
dht11 DHT11;
int saat = 0;
int dakika = 0;
int saniye = 0;
int yil = 0;
int ay = 0;
int gun = 0;
int alt_seviye=0;
int ust_seviye=0;


int layer[4] = {A0, A1, A2, A3};
int chk = 0;
#define DHT11_PIN 2 // Sensor is connected to Arduino pin 2
void setup()
{
  // Setup LCD to 16x2 characters

  //  DHT11.attach(2);
  Serial.begin(9600);
  lcd.begin(16, 2);

 

  for (int i = 0; i < 4; i++)
  {
    pinMode(layer[i], OUTPUT);
  }
  pinMode(role, OUTPUT);

  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.println("KULUCKA MAKINASI");
  lcd.setCursor (0, 1);
  lcd.println("*robotdevreleri*");
  delay(2000);
  lcd.clear();

  sg90.attach(3);
  delay(1000);

  // Check clock oscillation
  lcd.clear();
  if (RTC.haltRTC())
    lcd.print("Saat durdu!");
  else
    lcd.print("Saat aktif");

  // Check write-protection
  lcd.setCursor(0, 1);
  if (RTC.writeEN())
    lcd.print("Yazmaya izin ver.");
  else
    lcd.print("Yazma korumali.");

  delay (200);

  // Setup Time library
  lcd.clear();
  lcd.print("RTC Senk.");
  setSyncProvider(RTC.get); // the function to get the time from the RTC
  if (timeStatus() == timeSet)
    lcd.print(" Tamam!");
  else
    lcd.print(" HATALI!");

  delay (200);



  lcd.clear();
  
  yumurta_gun = EEPROM.read(address);                  // adresten yumurta_guni oku
}

void loop()
{
  
EEPROM.write(address,(yumurta_gun));                 // eeprom adrese değeri yaz

    sifirla = analogRead(A4);
    if (sifirla > 500)
    {
      yumurta_gun = 1;
    }
  saniye = second();
  saat = hour();
  dakika = minute();
  gun = day();
  ay = month();
  yil = year();
  lcd.setCursor (0, 0);
  lcd.setCursor (0, 0);
  if (ay < 10)
  {
    lcd.print("0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(ay);
  if (gun < 10)
  {
    lcd.print("-0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(gun);
  lcd.setCursor (8, 0);
  if (saat < 10)
  {
    lcd.print("0");
  }
  lcd.print(saat);
  if (dakika < 10)
  {
    lcd.print("-0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(dakika);
  if (saniye < 10)
  {
    lcd.print("-0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(saniye);

  ortalama = 0;
  for (int a = 0; a < 10; a++)
  {

    gelen_veri = analogRead(Lm35);
    voltaj_deger = ((gelen_veri / 1023.0) * 5000);
    sicaklik = voltaj_deger / 10.0;
    ortalama = ortalama + sicaklik;
    delay(100);
  }
  float ort = ortalama / 10;

  chk = DHT11.read();
  lcd.setCursor (0, 1);
  lcd.print("%");
  lcd.print((float)DHT11.humidity, DEC);
  lcd.setCursor (3, 1);
  //  sicaklik = (float)DHT11.temperature;
  lcd.print("C:");
  lcd.print(ort);

     lcd.setCursor (9, 1);
    
  lcd.print(" ");
  lcd.print(yumurta_gun);
  lcd.print(".GUN ");

  digitalWrite(role, HIGH); // ısıtıcı açık
  digitalWrite(layer[1], 1);//kırmızı





    if (saat == 12 && dakika == 0 && saniye < 3 )
  {
    yumurta_gun++;
    if (yumurta_gun == 22)
    {
      yumurta_gun =1;
    }

     lcd.setCursor (9, 1);
    
  lcd.print(" ");
  lcd.print(yumurta_gun);
  lcd.print(".GUN ");
    delay(3000);
  }

  if (yumurta_gun <= 18)
  {
    alt_seviye = 37;
    ust_seviye = 37.7;
  }

    if (yumurta_gun > 18)
  {
    alt_seviye = 36;
    ust_seviye = 36.7;
    servo_konum = 1;
  }

  if (ort > 38.5)

  {
    digitalWrite(role, LOW);// ısıtıcı kapalı
    lcd.setCursor (0, 1);
    lcd.print("%");
    lcd.print((float)DHT11.humidity, DEC);
    lcd.setCursor (3, 1);
    //  sicaklik = (float)DHT11.temperature;
    lcd.print("C:");
    lcd.print(ort);
    lcd.setCursor (9, 1);
    
  lcd.print(" ");
  lcd.print(yumurta_gun);
  lcd.print(".GUN ");
    digitalWrite(layer[0], 1); //buzzer
    digitalWrite(layer[1], 1);//kırmızı
    delay(100);
    digitalWrite(layer[0], 0); //buzzer
    digitalWrite(layer[1], 0);//kırmızı
    delay(50);
  }

  if (ort >= ust_seviye)
  {

    
    while (say == 0)
    {
      ortalama = 0;
      for (int a = 0; a < 10; a++)
      {

        gelen_veri = analogRead(Lm35);
        voltaj_deger = ((gelen_veri / 1023.0) * 5000);
        sicaklik = voltaj_deger / 10.0;
        ortalama = ortalama + sicaklik;
        delay(100);
      }
      float ort = ortalama / 10;
      if (ort < alt_seviye)
      {
        say=1;
      }

          sifirla = analogRead(A4);
    if (sifirla > 500)
    {
      yumurta_gun = 1;
    }
      digitalWrite(role, LOW); // ısıtıcı kapalı
      digitalWrite(layer[1], 0);//kırmızı


  saniye = second();
  saat = hour();
  dakika = minute();
  gun = day();
  ay = month();
  yil = year();
  lcd.setCursor (0, 0);
  if (ay < 10)
  {
    lcd.print("0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(ay);
  if (gun < 10)
  {
    lcd.print("-0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(gun);
  lcd.setCursor (8, 0);
  if (saat < 10)
  {
    lcd.print("0");
  }
  lcd.print(saat);
  if (dakika < 10)
  {
    lcd.print("-0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(dakika);
  if (saniye < 10)
  {
    lcd.print("-0");
  }
  else
  {
    lcd.print("-");
  }
  lcd.print(saniye);



      
      lcd.setCursor (0, 1);
      lcd.print("%");
      lcd.print((float)DHT11.humidity, DEC);
      lcd.setCursor (3, 1);
      //  sicaklik = (float)DHT11.temperature;
      lcd.print("C:");
      lcd.print(ort);
        lcd.setCursor (9, 1);
    
  lcd.print(" ");
  lcd.print(yumurta_gun);
  lcd.print(".GUN ");
    }
  }
       lcd.setCursor (9, 1); 
  lcd.print(" ");
  lcd.print(yumurta_gun);
  lcd.print(".GUN ");

  digitalWrite(role, HIGH); // ısıtıcı açık
  digitalWrite(layer[1], 1);//kırmızı

say=0;

if (servo_konum == 0)
{
  if (saat == 0 || saat == 1 || saat == 4 || saat == 5 || saat == 8 || saat == 9 || saat == 12 || saat == 13 || saat == 16 || saat == 17 || saat == 20 || saat == 21 )
  {
    for (int a = aci; a > 40; a--)
    {
      digitalWrite(layer[2], 0);//sarı
      digitalWrite(layer[3], 1);//mavi
      sg90.attach(3);
      sg90.write(a);
      aci = a;
      delay(100);
    }
  }
  if (saat == 2 || saat == 3 || saat == 6 || saat == 7 || saat == 10 || saat == 11 || saat == 14 || saat == 15 || saat == 18 || saat == 19 || saat == 22 || saat == 23)

  {
    for (int a = aci; a < 140; a++)
    {
      digitalWrite(layer[2], 1);//sarı
      digitalWrite(layer[3], 0);//mavi
      sg90.attach(3);
      sg90.write(a);
      aci = a;
      delay(100);
    }
  }

}

}


 

 

Sosyal Medyada Paylaş Facebook Twitter Google+

Etiketler: , ,
Eklenme Tarihi: 30 Ocak 2018

Konu hakkında yorumunuzu yazın