RTC üzerinde ayları sabit değere çekme

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ı.
hocam dediğiniz gibi değiştirdim bir türlü okumuyor değeri


yok_olmadı.PNG
 
Başka önerim kalmadı maalesef. Daha hakim birisi bakabilir konuya.
YAPMAYIN HOCAM buluruz bi çaresini bizi bırakmayın :(
YAPMAYIN HOCAM buluruz bi çaresini bizi bırakmayın :(
Arduino'dan EEPROM değerlerini okuma.

şöyle bişey buldum denicem bişeyler
Başka önerim kalmadı maalesef. Daha hakim birisi bakabilir konuya.
DS1307 ile Gerçek Zaman Saati (RTC) Yapımı ve Arduino ile Kullanımı | Arduino Türkiye

hocam burda da hafızaya alma işlemi var bi bakabilir misin ??
 
Son düzenleme:
Aciklamandan hicbir sey anlasilmiyor, anladigim kadariyla butona basinca bir baslangic tarihi kaydetmek istiyorsun o halde loop fonksiyonu icinde update fonksiyonu cagrildiktan sonra bir if tanimla, bu if buton basilinca calissin ve tarih degerlerini global degiskenlere atasin, kontrol islemini de bu global degisken ve guncel tarihi karsilastirarak ikinci bir if yordamiyla halledersin.
 
Aciklamandan hicbir sey anlasilmiyor, anladigim kadariyla butona basinca bir baslangic tarihi kaydetmek istiyorsun o halde loop fonksiyonu icinde update fonksiyonu cagrildiktan sonra bir if tanimla, bu if buton basilinca calissin ve tarih degerlerini global degiskenlere atasin, kontrol islemini de bu global degisken ve guncel tarihi karsilastirarak ikinci bir if yordamiyla halledersin.
hocam değişkene atıyoruz ama (sabitay =saat.month) yani ay değişince değişkende değişiyor yani butona basıldığı an hangi aydaysa o ayı çekicek
 
hocam değişkene atıyoruz ama (sabitay =saat.month) yani ay değişince değişkende değişiyor yani butona basıldığı an hangi aydaysa o ayı çekicek
Ay degisince degisken niye degissin bu islem buton basilinca yapilacak eger buton basilmissa global sabitay = saat.month, ben mi yanlis anliyorum yoksa.
 
Ay degisince degisken niye degissin bu islem buton basilinca yapilacak eger buton basilmissa global sabitay = saat.month, ben mi yanlis anliyorum yoksa.
hocam çünkü değşken mesela int sabitay=saat.month a eşit oluyor ay devam ederken değişmiyor ama yeni aya girerken saat.mont değişince değişkenin içide değişmiş oluyor ister istemez.
 
hocam çünkü değşken mesela int sabitay=saat.month a eşit oluyor ay devam ederken değişmiyor ama yeni aya girerken saat.mont değişince değişkenin içide değişmiş oluyor ister istemez.
Tamam da sen yerel degisken mi tanimliyorsun, yoksa bu tarih atama islemini bir kosula mi baglamadin.

Benim demek istedigim bu, asagidaki gibi bir kosula bagladiginda niye degissin.

C++:
uint8_t month;

void loop() {
  Saat.updateTime(); //Bu kod ile RTC deki anlık zamanı alıyoruz.

  if (buton_basildi) {
    month = Saat.month;
  }

  if (Saat.month >= month) {
    Serial.print("alarm cal");
  }

  delay(1000); // 1 saniye bekletiyoruz.
}
 
Tamam da sen yerel degisken mi tanimliyorsun, yoksa bu tarih atama islemini bir kosula mi baglamadin.

Benim demek istedigim bu, asagidaki gibi bir kosula bagladiginda niye degissin.

C++:
uint8_t month;

void loop() {
  Saat.updateTime(); //Bu kod ile RTC deki anlık zamanı alıyoruz.

  if (buton_basildi) {
    month = Saat.month;
  }

  if (Saat.month >= month) {
    Serial.print("alarm cal");
  }

  delay(1000); // 1 saniye bekletiyoruz.
}
HOCAM yaptığım kodları koyuyorum öyle anlaşılır olsun.
butonu kodlar üzerinden 1 kere basıldığında yaptım açıklama yaptım zaten kod kısmında

BBBB.PNG




[CODE title="rtc_alarm"]
#include <EEPROM.h>
#include<SoftwareSerial.h>
int buzzerPin = D5;

#include <virtuabotixRTC.h>
virtuabotixRTC Saat(D6, D7, D8); // CLK -> 6, ,//Data -> 7 RST -> 8
String gunler[] = {"PAZARTESI", "SALI", "CARSAMBA", "PERSEMBE", "CUMA", "CUMARTESI", "PAZAR"};
int aylar[] = {1,2,3,4,5,6,7,8,9,10,11,12};

int sabitay ;

void setup() {

Serial.begin(9600);
pinMode(buzzerPin,OUTPUT); // Buzzer'in bağlı olduğu pini çıkış olarak ayarladık.
// saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl
Saat.setDS1302Time(24, 59, 23,4, 31, 05, 2022);

}

void loop() {

Saat.updateTime(); //Bu kod ile RTC deki anlık zamanı alıyoruz.
Serial.println(" ");
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.
Serial.print(" ");
Serial.println(aylar[Saat.month - 1]); //Hangi güne denk geldiğini bularak yazdırıyoruz.
delay(1000); // 1 saniye bekletiyoruz.


int saat,dakika,saniye,gün,ay,yıl;

int saat2=Saat.hours;
int dakika2=Saat.minutes;
int saniye2=Saat.seconds;
int gün2=Saat.dayofmonth;
int ay2=Saat.month;
int yıl2=Saat.year;

int yeniyıl2=Saat.year;


//boolean dogrumu = saat2 == 17; // "dogrumu" değişkeni değeri "true" (doğru) olur
//Serial.println(dogrumu);

int deger = 1 ;
if(deger == 1)
{
Serial.println("");
Serial.print("deger == 1 olduuuuuuuuu...");


for(int h=0 ; h<1;h++) // 1 kez çalıştırmak için konuldu....
{
//Eğer Android'ten gelen değer "1" ise( yani 1 rakamına bastığımızda,)
digitalWrite(buzzerPin,LOW); //digitalWrite ile BUZZER pinini (low) yaparak yeni alarm kurulacağı için PASİF DURUMA GETİRİLDİ.
Serial.println("");
Serial.print("h değeri =");
Serial.println(h);

sabitay = ay2 ;
yeniyıl2+=1;
//(aylar[Saat.month-1])+=12;
//Serial.println(aylar[Saat.month-1]);

Serial.print("1 yıl alarm kuruldu"); //Yıl

Serial.println("");
Serial.print("yeniyıl2 = ");
Serial.println(yeniyıl2);
Serial.print("sabitay = ");
Serial.println(sabitay);


}
}
//***********************************if koşulun bitimi


int o = yeniyıl2;

if((sabitay==Saat.month) && (yıl2 == o))
{
Serial.print("ALARM");
Serial.print("(");
Serial.print(saat2);
Serial.print(":");
Serial.print(dakika2);
Serial.print(":");
Serial.print(saniye2);
Serial.print(" ");
Serial.print(gün2);
Serial.print("-");
Serial.print(ay2);
Serial.print("-");
Serial.print(yeniyıl2);
Serial.println(")");

Serial.println("");
Serial.println("-------------------");
Serial.println("");

Serial.print("==");
Serial.print(aylar[Saat.month - 1]);

Serial.println("");
Serial.print(yıl2); // yıl
Serial.print("==");
Serial.print(o);
Serial.println("-------------------");


for (int i=0; i<7884000; i++)///15
{
Serial.println("");
Serial.print(i);
digitalWrite(buzzerPin,HIGH);
delay(2000);
digitalWrite(buzzerPin,LOW);
delay(2000);

}

}

Serial.print("▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲");
}
[/CODE]
 

Technopat Haberler

Yeni konular

Geri
Yukarı