Arduino EEprom değişken problemi

peki hocam asıl projeme nasıl ekliyeceğiz bunu ilişkilendirmeye gerek kalmıyor sanırsam zamanı rtc den değişkene aktardım. 2 tane değişkenimin hafızaya almasını istiyorum
sabitay ,yeniyıl3 değişkenlerini hafızaya alsa yeter. Nasıl yapabiliriz ??


[CODE title="RTC kodlarım;"] #include <EEPROM.h>
//---------------------------
#define buton_pin D3
#define led_pin D4
int buton_durum = 0;
//---------------------------

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

int sabitay ;
int yeniyıl3;

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

pinMode(D13, OUTPUT);
pinMode(buton_pin, INPUT);
pinMode(led_pin, OUTPUT);

//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;

Serial.println("***************buton koşulu buranın içerisinde gerçekleşiyor******");
//Eğer değer "1" ise( yani 1 rakamına bastığımızda,)
int buton_durum = digitalRead(buton_pin);
if(buton_durum == 1){
Serial.println("Butona basıldı");
digitalWrite(led_pin, HIGH);
Serial.println("");

yeniyıl2+=1;
yeniyıl3=yeniyıl2;
sabitay = ay2 ;
}
else{
Serial.println("Butona basılmadı");
digitalWrite(led_pin, LOW);
}
delay(100);
Serial.println(" ***************buton koşulu buranın yukarısında gerçekleşiyor***********if koşulun bitimi");

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


Serial.println("");
Serial.print(Saat.month);
Serial.print("==");
Serial.print(sabitay);
Serial.print("&&");
Serial.print(yıl2);
Serial.print("==");
Serial.println(yeniyıl3);

Serial.print("▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲");//yeni bir dizinin başlangıcı
}[/CODE]

Eki Görüntüle 1371507
Dile çok hakim değilsen, buradan birisi de yardımcı olsa işin zor. Projeyi hazır, parayla birine yaptır.
 
Açıkladım ya kaç defa açıklayacağım? Teker teker uğraşmamak için struct tanımlayıp onunla işlem yapıyoruz, verileri blok halinde eeprom'a yazıyoruz. Bu son örnek olsun, artık gerisini bir şekilde hallet.

C++:
#include <EEPROM.h>
#include <virtuabotixRTC.h>

#define buton_pin D3
#define led_pin D4

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

struct Tarih{

    uint8_t month;
    int year;
};

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

  pinMode(D13, OUTPUT);
  pinMode(buton_pin, INPUT);
  pinMode(led_pin, OUTPUT);

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

}

void loop() {

  Saat.updateTime();
 
  if ( digitalRead(buton_pin) ) {

    Tarih alarmTarihi = { 7, 2022};
    EEPROM.put(0, alarmTarihi);

    digitalWrite(led_pin, HIGH);
    Serial.println("Alarm kuruldu!");

  } else {

    digitalWrite(led_pin, LOW);

  }

  Tarih kayitliAlarmTarihi;
  EEPROM.get(0, kayitliAlarmTarihi);

  if (Saat.year >=  kayitliAlarmTarihi.year && Saat.month >= kayitliAlarmTarihi.month ) {

    Serial.println("Alarm cal!");
  }


  delay(1000);
}
Hocam attığınız örnek kod üzerinde uğraşıyorumda kayitliAlarmTarihi ile alarmTarihi ni serial ekrana bir türlü yazdırmadım.



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

#define buton_pin D3
#define led_pin D4

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


struct Tarih{


uint8_t month;
int year;
};

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

pinMode(D13, OUTPUT);
pinMode(buton_pin, INPUT);
pinMode(led_pin, OUTPUT);

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

}

void loop() {

Saat.updateTime();




Serial.println("***************buton koşulu buranın içerisinde gerçekleşiyor******");
//Eğer değer "1" ise( yani 1 rakamına bastığımızda,)
int buton_durum = digitalRead(buton_pin);
if(buton_durum == 1){
Serial.println("Butona basıldı");
digitalWrite(led_pin, HIGH);
Serial.println("");

Tarih alarmTarihi = { 7, 2022};
EEPROM.put(0, alarmTarihi);
// Serial.println(EEPROM.put(0, alarmTarihi));


digitalWrite(led_pin, HIGH);
Serial.println("Alarm kuruldu!");
}
else{
Serial.println("Butona basılmadı");
digitalWrite(led_pin, LOW);
}
delay(100);
Serial.println(" ***************buton koşulu buranın yukarısında gerçekleşiyor***********if koşulun bitimi");






Tarih kayitliAlarmTarihi;
EEPROM.get(0, kayitliAlarmTarihi);


if (Saat.year >= kayitliAlarmTarihi.year && Saat.month >= kayitliAlarmTarihi.month ) {

Serial.println("Alarm cal!");

}





delay(1000);
}[/CODE]
 

Technopat Haberler

Yeni konular

Geri
Yukarı