RTC üzerinde ayları sabit değere çekme

ay atlayınca saat month 6 olmuş çıktıda


[CODE title="serial ekranı çıktısı"]
23:59:57 31/5/2022 PERSEMBE
1 yıl alarm kuruldu EEPROM KISMIIIII
Saat.year = 2022
Saat.month = 5


23:59:59 31/5/2022 PERSEMBE
5
0:0:0 1/6/2022 CUMA
1 yıl alarm kurulduEEPROM KISMIIIII
Saat.year = 2022
Saat.month = 6
[/CODE]
 
Saat.moth'un artması normal alarm tarihini artık EEPROM.read(1) ile alacaksın.
 
Saat.moth'un artması normal alarm tarihini artık EEPROM.read(1) ile alacaksın.

pardon hocam alarm kısmını yazdırmayı unutmuşum serial ekrana 0 olark atanmışlar


Kod:
23:59:57 31/5/2022 PERSEMBE
 5
23:59:58 31/5/2022 PERSEMBE
1 yıl alarm kurulduEEPROM KISMIIIII
Saat.year = 2022
Saat.month = 5alrm KISMIIIII
alarmYear = 0
alarmMonth = 0
2023
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
23:59:59 31/5/2022 PERSEMBE
 5
0:0:0 1/6/2022 CUMA
1 yıl alarm kurulduEEPROM KISMIIIII
Saat.year = 2022
Saat.month = 6alrm KISMIIIII
alarmYear = 0
alarmMonth = 0
2023
 
hocam bluetooth kısmını ayarlayıp bakayıp butona basıldığındaki
alarmYear = 0 (butona basılmamış değerler)
alarmMonth = 0 değerlere
 
Write kısmının önce çalışması lazım
 
Write kısmının önce çalışması lazım
tmm hocam şu bluetooth bağlantılarını gerçekleştirip testleri gerçekleştiriyim en yakın zamanda dönücem.
Write kısmının önce çalışması lazım
hocam anlaşılabilir sade olması için yeni proje açıp eeprom ekledim .
alarm kısmı hala 0 durumda ?
bluetooth kısmında sıkıntı yaşadığım için şimdilik buton kısmını proje içinde deger ==1 ise for ile 1 kez çalıştır dedim o şekilde şuan buton yerine kullanıyorum.


[CODE title="rtc"]
#include <EEPROM.h>

#include <virtuabotixRTC.h>
virtuabotixRTC Saat(D6, D7, D8); //CLK -> 6, Data -> 7, RST -> 8
String gunler[] = {"PAZARTESI", "SALI", "CARSAMBA", "PERSEMBE", "CUMA", "CUMARTESI", "PAZAR"};


void setup() {
Serial.begin(9600);

// RTC üzerindeki tarih ve saati aşağıdaki kod ile ayarlayabilirsiniz.
// saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl

Saat.setDS1302Time(24, 59, 23,4, 31, 05, 2022);

// 19.01.2021 11:40:50 2(Salı günü anlamına geliyor).
// Haftanın günü Pazartesi=>1 .... Pazar=>7 yazıyoruz


}
void loop() {
Saat.updateTime(); //Bu kod ile RTC deki anlık zamanı alıyoruz.
Serial.print(Saat.hours); //Saat
Serial.print(":");
Serial.print(Saat.minutes); //Dakika
Serial.print(":");
Serial.print(Saat.seconds); //Saniye
Serial.print(" ");
Serial.print(Saat.dayofmonth); //Gün
Serial.print("/");
Serial.print(Saat.month); //Ay
Serial.print("/");
Serial.print(Saat.year); //Yıl
Serial.print(" ");
Serial.println(gunler[Saat.dayofweek - 1]); //Hangi güne denk geldiğini bularak yazdırıyoruz.
delay(1000); // 1 saniye bekletiyoruz.



int deger =1;
if(deger==1)
{
for(int i=0;i<1;i++) // for dögüsünü butona 1 kere basıldığı gibi kullandık.
{

EEPROM.write(0, Saat.year + 1);
EEPROM.write(1, Saat.month);

Serial.println("");
Serial.println("EEPROM KISMIIIII ");
Serial.print("Saat.year = "); //Saat
Serial.println(Saat.year);
Serial.print("Saat.month = "); //Dakika
Serial.println(Saat.month);



}

int alarmYear = EEPROM.read(0);
int alarmMonth = EEPROM.read(1);

Serial.println("");
Serial.println("alrm KISMIIIII ");
Serial.print("alarmYear = "); //Saat
Serial.println(alarmYear);
Serial.print("alarmMonth = "); //Dakika
Serial.println(alarmMonth);
Serial.println("");




if(Saat.year == alarmYear && Saat.month == alarmMonth)
{
// ALARM
Serial.println("");
Serial.print("ALARMMMMMMMMMMMMMMMMMMMMMMMMMMMMM "); //Saat

}

}

}
[/CODE]



kod kısmını bida güncelledim alarmı butonun dışına aldım.
 
Son düzenleme:
Kod:
#include <EEPROM.h>

#include <virtuabotixRTC.h>
virtuabotixRTC Saat(D6, D7, D8); //CLK -> 6, Data -> 7, RST -> 8
String gunler[] = {"PAZARTESI", "SALI", "CARSAMBA", "PERSEMBE", "CUMA", "CUMARTESI", "PAZAR"};


void setup() {
  Serial.begin(9600);
 
  // RTC üzerindeki tarih ve saati aşağıdaki kod ile ayarlayabilirsiniz.
  // saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl
 
     Saat.setDS1302Time(24, 59, 23,4, 31, 05, 2022);

  //  19.01.2021 11:40:50 2(Salı günü anlamına geliyor).
  // Haftanın günü Pazartesi=>1 .... Pazar=>7 yazıyoruz

 
}
void loop() {
  Saat.updateTime(); //Bu kod ile RTC deki anlık zamanı alıyoruz.
  Serial.print(Saat.hours);  //Saat
  Serial.print(":");
  Serial.print(Saat.minutes);  //Dakika
  Serial.print(":");
  Serial.print(Saat.seconds);  //Saniye
  Serial.print(" ");
  Serial.print(Saat.dayofmonth); //Gün
  Serial.print("/");
  Serial.print(Saat.month);  //Ay
  Serial.print("/");
  Serial.print(Saat.year); //Yıl
  Serial.print(" ");
  Serial.println(gunler[Saat.dayofweek - 1]); //Hangi güne denk geldiğini bularak yazdırıyoruz.
  delay(1000); // 1 saniye bekletiyoruz.



int deger =1;
if(deger==1)
{
  for(int i=0;i<1;i++) // for dögüsünü butona 1 kere basıldığı gibi kullandık.
  {
    int address = 0;
    EEPROM.put(address, Saat.year + 1);
    address += sizeof(int);
    EEPROM.put(address, Saat.month);
    
  Serial.println("");
  Serial.println("EEPROM KISMIIIII ");
  Serial.print("Saat.year = ");  //Saat
  Serial.println(Saat.year);
  Serial.print("Saat.month = ");  //Dakika
  Serial.println(Saat.month);
    
    
    
    }
  int address = 0;
  int alarmYear = EEPROM.get(address);
  address += sizeof(int);
  uint8_t alarmMonth = EEPROM.get(address);

  Serial.println("");
  Serial.println("alrm KISMIIIII ");
  Serial.print("alarmYear = ");  //Saat
  Serial.println(alarmYear);
  Serial.print("alarmMonth = ");  //Dakika
  Serial.println(alarmMonth);
  Serial.println("");


 

    if(Saat.year == alarmYear && Saat.month == alarmMonth)
     {
    // ALARM
     Serial.println("");
     Serial.print("ALARMMMMMMMMMMMMMMMMMMMMMMMMMMMMM ");  //Saat

    }
 
  }
 
}
Bunu deneyebilir misin?
 
Write kısmının önce çalışması lazım
deniyim


bu hatayı verdi
 
Son düzenleme:
Kod:
  int address = 0;
  int alarmYear = 0;
  uint8_t alarmMonth = 0;
  EEPROM.get(address, alarmYear);
  address += sizeof(int);
  EEPROM.get(address, alarmMonth);
Bu şekilde düzenleyin o kısmı.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…