• Arkadaşlar merhablar ben ds1302 modülü ile saati ve tarihi görebiliyorum. Fakat enerji kesildikten sonra ayarladığım saat tarih sıfırlanıyor bunu gidermek için internetten

    #include < Wire.h> // Wire kütüphanesini ekliyoruz.
    #include < DS1307new.h> // DS1307new kütüphanesini ekliyoruz.

    // Değişkenler
    uint16_t startAddr = 0x0000; // NV-RAM'de saklamak için başlangıç adresi
    uint16_t lastAddr; // NV-RAM'de saklamak için yeni adres
    uint16_t TimeIsSet = 0xaa55; // Saatin tekrar ayarlanmamasına yardımcı olur.

    void setup()
    {
    Serial.begin(9600);
    // Store startAddr in NV-RAM address 0x08
    RTC.setRAM(0, (uint8_t *)&startAddr, sizeof(uint16_t));

    RTC.getRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
    if (TimeIsSet != 0xaa55)
    // Saat ve tarih daha önce ayarlanmış mı kontrol ediyoruz. Eğer ayarlanmamışsa
    // TimeIsSet değişkeni 0xaa55 değerine eşit değilse aşağıda girdiğimiz
    // verilerle saati ayarlamış oluruz.
    {
    RTC.stopClock();

    // Bu kısımdan sketchi yüklemeden önce tarih ve saati ayarlayabilirsiniz.
    // Bir kez ayarlayıp yükledikten sonra tekrar tarih saat ayarı yapabilmek
    // için entegreye bağlı batarya bağlantısı ve Arduinodan sağladığımız
    // 5v enerjiyi kesip bir süre beklemek gerekiyor. Daha sonra programda tarih
    // ve saati ayarladıktan sonra yüklediğinizde NV-RAMe ayarladığınız tarih ve
    // saat bilgileri kaydedilecektir. İlk satırı (Yıl,Ay,Gün), ikinci satırı
    // (Saat,Dakika,Saniye) formatında yazmanız gerekiyor.

    RTC.fillByYMD(2011,4,8);
    RTC.fillByHMS(22,7,0);

    RTC.setTime();
    TimeIsSet = 0xaa55;
    RTC.setRAM(54, (uint8_t *)&TimeIsSet, sizeof(uint16_t));
    RTC.startClock();
    }
    else
    {
    RTC.getTime();
    }

    Serial.println("DS1307new Kutuphanesi Test Programi");
    Serial.println("Tarih Saat Formati "SS:DD:ss GG-AA-YYY DDD"");
    Serial.println("Her saniye alt satira gecerek o anki zamani gosterir.");
    Serial.println();
    }
    void loop()
    {
    RTC.getTime(); // Saat ve Tarih verilerini al

    if (RTC.hour < 10)
    {
    Serial.print("0");
    Serial.print(RTC.hour, DEC);
    }
    else
    {
    Serial.print(RTC.hour, DEC);
    }
    Serial.print(":");
    if (RTC.minute < 10)
    {
    Serial.print("0");
    Serial.print(RTC.minute, DEC);
    }
    else
    {
    Serial.print(RTC.minute, DEC);
    }
    Serial.print(":");
    if (RTC.second < 10)
    {
    Serial.print("0");
    Serial.print(RTC.second, DEC);
    }
    else
    {
    Serial.print(RTC.second, DEC);
    }
    Serial.print(" ");
    if (RTC.day < 10)
    {
    Serial.print("0");
    Serial.print(RTC.day, DEC);
    }
    else
    {
    Serial.print(RTC.day, DEC);
    }
    Serial.print("-");
    if (RTC.month < 10)
    {
    Serial.print("0");
    Serial.print(RTC.month, DEC);
    }
    else
    {
    Serial.print(RTC.month, DEC);
    }
    Serial.print("-");
    Serial.print(RTC.year, DEC); // Yılda herhangi bir değişikliğe gerek yok
    Serial.print(" ");
    switch (RTC.dow) // Haftanın günü
    {
    case 1:
    Serial.print("PZT");
    break;
    case 2:
    Serial.print("SAL");
    break;
    case 3:
    Serial.print("CAR");
    break;
    case 4:
    Serial.print("PER");
    break;
    case 5:
    Serial.print("CUM");
    break;
    case 6:
    Serial.print("CTS");
    break;
    case 7:
    Serial.print("PAZ");
    break;
    }
    Serial.println();
    delay(1000); // 1 saniye bekle
    }
    kodunu yüklediğim zamanda 165:165:85 165-165-2165 PZT şeklinde anlamsız değer alıyorum. Bunu nasıl çözebilirim enerji kesilse dahi bile saat nasıl devam edebilir. Teşekkür ederim
  • pil tak kenarına
  • ds1302 in VCC gnd yerine mi dışardan pil takayım hocam
  • hangi bordu kullanıyorsun ds1302 nın datasheete bak pil için ayrı bir pin olur. aldıgın bordun altındada düğme pil yuvası olabılır oraya da takabılırsın başka bısey yapmana gerek kalmaz
  • Hocam kullandığım modülüm üzerinde zaten pil var ama ona rağmen arduinonun enerjisi kesildiği an saat sıfırlanıp fabrika ayarlarına dönüyor
  • programın başında bazı saat resetleme kodları olabilir eproma bır bılgı yaz ılk calıstıgında daha sonra her acıldıgında bu bılgı senın kaydettıgınse sıfırlama kodlarını yollama. birde kodun ds 1307 ye gore ama sen ds1302 kullanıyorum demıssın emınmıyız bundan
  • forumda arattırma yapmadınız galiba !
    sağ üst köşedeki kutucuğa ds1302 yazıp enter a basınız.
    sahte çip te olabilir o ds1302.
  • Saati bir daha kurup kodu yükledikten sonra , saati kurduğnuuz kısmı silerek kodu tekrar yükleyin. enerji kesilince haliyle ilk kurulan saate göre işlem yapacaktır eğer silmezseniz.
  • Herkese teşekkür ederim. Çipi değiştirdiğimde sıkıntı çözüldü.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.