8bit alana 16bit veri yazmaya kalktığın için, temel veri tiplerini dahi bilmediğin için...
#include <EEPROM.h>
struct Tarih{
//...
uint8_t hours;
uint8_t dayofweek;
uint8_t month;
int year;
};
void setup() {
Serial.begin(9600);
EEPROM.begin(256);
}
void loop() {
Tarih yazilanTarih = {24, 30, 12, 2022};
if (button_state) {
//tarihi kaydet
EEPROM.put(0, yazilanTarih);
}
Tarih okunanTarih;
//tarihi oku
EEPROM.get(0, okunanTarih);
Serial.println( okunanTarih.year);
}
Senin öncelikle kullanmaya çalıştığın programlama dilini öğrenmeye ihtiyacın var, boş yere vakit kaybediyorsun.
Açtığın diğer konular için şu örnek kod üzerinden gitmeyi dene, daha da yardımcı olamayacağım.
C++:#include <EEPROM.h> struct Tarih{ //... uint8_t hours; uint8_t dayofweek; uint8_t month; int year; }; void setup() { Serial.begin(9600); EEPROM.begin(256); } void loop() { Tarih yazilanTarih = {24, 30, 12, 2022}; if (button_state) { //tarihi kaydet. EEPROM.put(0, yazilanTarih); } Tarih okunanTarih; //tarihi oku. EEPROM.get(0, okunanTarih); Serial.println( okunanTarih.year); }
Senin öncelikle kullanmaya çalıştığın programlama dilini öğrenmeye ihtiyacın var, boş yere vakit kaybediyorsun.
Açtığın diğer konular için şu örnek kod üzerinden gitmeyi dene, daha da yardımcı olamayacağım.
C++:#include <EEPROM.h> struct Tarih{ //... uint8_t hours; uint8_t dayofweek; uint8_t month; int year; }; void setup() { Serial.begin(9600); EEPROM.begin(256); } void loop() { Tarih yazilanTarih = {24, 30, 12, 2022}; if (button_state) { //tarihi kaydet. EEPROM.put(0, yazilanTarih); } Tarih okunanTarih; //tarihi oku. EEPROM.get(0, okunanTarih); Serial.println( okunanTarih.year); }
Sa, hocam ksb yine rahatsız ediyourum ama yine takıldığın bir kısım oldu bakabilir misin sizim ilk kodu üzerinde biraz oynayarak düzenleme yaptım ilkin yılı elektrik gittiğinde de ekrana yazıyordu şimdi tekrar 1104412672 yazıyor ne alaka anlamadım beynim yandı gerçekten. Nereyi neyi unutuyorum hocam şu kısma yardım eder misiniz ??(eeprom kısmına hücre 1 e şunu al demiştim 12 yi almıştı sonra sildim bu durumlar karşılaştım eepromu mu EEPROM.clear() mı yapmam lazım?)Neden garip geldi anlamadım, herhangi bir özellik değil bu kendi yazdığımız tarih struct'undan bir nesne oluşturduk 24, 30, 12, 2022 verisi ile ilklendirdik ve bunu eeprom'a yazdık, ardından eeprom'dan okuyup başka bir tarih nesnesine yazdık.
struct Tarih{
//...
uint8_t hours;
uint8_t dayofweek;
uint8_t month;
int year;
};
struct Tarih{
//...
uint8_t minutes; //yeni
uint8_t hours;
uint8_t dayofweek;
uint8_t month;
int year;
};
Tarih yazilanTarih = { 12 ,24, 30, 12, 2022};
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İlk birkaç adrese zaten Tarih verisini yazdık, o adreslere tekrar başka bir şey yazdırırsan veriler bozulur. Her adres 8bit veri tutabiliyor, illa tek byte veri ekleyeceksen int adres =sizeof(Tarih); kaç dönerse o adresten itibaren yazdır, o donanımda struct kaç byte hizalanıyor bilmediğimden direk şu adresten itibaren yazdır diyemem . Ekstra veri eklemek istiyorsan tarih struct'una ekle, aynı şekilde ilklendirilirken de sıralamayı bozma.
örn;
C++:struct Tarih{ //... uint8_t hours; uint8_t dayofweek; uint8_t month; int year; }; struct Tarih{ //... uint8_t minutes; //yeni uint8_t hours; uint8_t dayofweek; uint8_t month; int year; }; Tarih yazilanTarih = { 12 ,24, 30, 12, 2022};
#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);
}
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.