Arduino ile gerçek zaman saati hafta karşılaştırma
  • Merhaba. Arduino nano ve ds1302 kullanarak gerçek zaman saati yapdım. Sonucu lcd16x2 (saat tarih ve hafta olarak) gösteriyorum. Önceden tayin etdiyim zamanlarda led yanıyor. Buraya kadar sorun yok. Yapamadığım haftaya göre karşılaştırmadır. Yani belirtdiyim saat ancak hafta için çalışsın. Hafta sonu çalışmasın. Bunun için şarta haftanın gününü karşılaştırmak istiyorum. Kodum şu şekilde:

    #include
    #include
    Time t;
    LiquidCrystal lcd(12,11,5,4,3,2);
    DS1302 rtc(8,7,6);
    int hours = 11;
    int mins = 49;
    int saniye = 05;
    void setup() {
    lcd.begin(16, 2);
    rtc.setDOW(FRIDAY);
    rtc.setTime(12, 12, 0);
    rtc.setDate(25,11,2016);

    pinMode(9, OUTPUT);
    }

    void loop() {
    lcd.setCursor(6, 1);
    lcd.print(rtc.getDateStr());
    lcd.setCursor(0, 0);
    lcd.print(rtc.getTimeStr());
    lcd.setCursor(10, 0);
    lcd.print("Ders 1");
    lcd.print(" ");
    lcd.setCursor(0, 1);
    lcd.print(rtc.getDOWStr());
    t = rtc.getTime();
    if ((t.hour == 00) && (t.min == 06) && (t.sec >= 40 && t.sec <=45 ))<br />{
    digitalWrite(9,HIGH);
    }
    else
    {
    digitalWrite(9,LOW);
    }
    delay (1000);

    }

    Bu kodda haftanın günlerini nasıl karşılaştıra bilirim?
  • t. dow ile yapabilirsiniz. Haftanın günü. 1.gün pazartesi. Kütüphaneyi değiştirip pazar da yapabilirsiniz
  • t.dow<6 ise şunları yap gibi
  • Bu şekilde denedim ama olmadı

    void loop()
    {
    lcd.setCursor(6, 1);
    lcd.print(rtc.getDateStr());

    lcd.setCursor(0, 0);
    lcd.print(rtc.getTimeStr());

    lcd.setCursor(0, 1);
    lcd.print(rtc.getDOWStr());

    t = rtc.getTime();

    if(t. dow != 0 || t. dow != 6)
    {
    KontrolAlarm(00,43,40,50);
    }
    }


    void KontrolAlarm(int saat,int deqiqe, int saniye1, int saniye2)
    {
    if( (t.hour == saat) && (t.min == deqiqe) && (t.sec >= saniye1 && t.sec <=saniye2 ))<br /> {
    lcd.setCursor(10,0);
    lcd.print("Alarm");
    }
    }
  • Bilgisayara geçince bendeki örneği göndreyeyim. t.dow 1-7 arası değer alıyor
  • Time t =rtc.getTime(); ordaki satırı şu şekilde güncelleyin bence.
    aşağıdaki kodda yapılan iş: haftanın günleri salı, cuma ve pazar ise dmd p10'daki 50 kere yazıları kaydır.

    dmd.drawMarquee(rtc.getDOWStr(),strlen(rtc.getDOWStr()),(32*DISPLAYS_ACROSS)-1,0);
    if (t.dow==2 ||t.dow==5 ||t.dow==7){
    for (int c=1; c<50; c++){dmd.stepMarquee(-1,0);delay(pot);} }<br />
    Aşağıdaki kodta da günler pazartesi, çarşamba, perşembe ve cumartesi ise 80 kere kaydır. Çünkü kısa günlere aynı kodu kullanırsam satır sonlarında çok boş yer oluyor.

    if (t.dow==1 ||t.dow==3 || t.dow==4 ||t.dow==6){
    for (int c=1; c<80; c++){dmd.stepMarquee(-1,0);delay(pot);} }<br />Linklerde yaptığım örnek çalışmalar var. buton ile saat tarih ayarlanabilen.
    https://yadi.sk/d/chxPCTd332AYzt

    http://forum.arduinoturkiye.com/index.php?p=/discussion/6636/arduino-uno-p10-bmp180-basinc-sensoerue-ds1302-buton#Item_1

    http://forum.arduinoturkiye.com/index.php?p=/discussion/6077
  • Yardımlarınız için teşekkür ediyorum. Şartı bu iki şekilde kullandım

    1-ci

    if(t.dow == 5 || t.dow == 4 || t.dow == 3 || t.dow == 2 || t.dow == 1)
    {
    Alarm kodu;
    }

    2-ci

    if(t.dow <= 5)<br />{
    Alarm kodu;
    }

    Proqram sorunsuz çalışıyor. Cok sag olun. Benim anlıyamadığım neden != koşul çalışmıyor.

    if(t. dow != 6 || t. dow != 7)
    {
    Alarm kodu;
    }

    Neden şartda birden fazla eşit diyil (!=) koşulu kullandığımda çalışmaması. Şartda bir tane eşit diyil koşulu kullandığımda çalışıyor ama or (||) kullandığımda böyle yani

    if(t. dow != 6 || t. dow != 7)

    çalışmıyor. Bu nede ola bilir?
  • ben de biilmiyorum. her türlü deneyerek buluyorum. bir de kütüphaneyi dreamwaver veya visual stdyo gibi bir program ile açıp günleri veya ayları türkçeye çevirebilirsinz. ben yapılmış örnekleri koydum. dilerseniz kendi ds1302 ktüphaneniz ile değiştirebilirsiniz. eskisini yedekleyerek. bişey olursa ordan alırsınız. günü tarihi göster komutundaki paranteze (0),(1)..(3) yazınca değişik biçimlerde tarih saat görüntüsü alabilirsiniz.
  • Guzel olur. Örnek nerde nereye koymusunuz?
  • linklerde var.
  • Cook sag olun.Tesekkurler
  • kullandığınız kütüphaneleri rica edebilir miyim?
    ds1302 ile zamanlayıcı konusunu bir türlü çözemedim.

Howdy, Stranger!

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

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