Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
14
Cevap
254
Tıklama
0
Öne Çıkarma
EEPROM Nano Boyut ve Koda ekleme
P
9 yıl
Teğmen
Konu Sahibi

Selamlar. aşağıdaki kod a "beklenengun"e EEPROM Kaydetmek istiyorum. Ama Şu an da Similasyonda denediğim de olup olmadığını deneyemiyorum. Acaba buna nasıl ekleriz. Aşağıda Kendim ekledim acaba doğru şekildemi yaptım.


 
#include <EEPROM.h>
#include <LiquidCrystal.h>

#define yukari 9
#define asagi 10
#define _menu 8

LiquidCrystal lcd(12,11,5,4,3,2);

#define menu_adet 4
#define menu_sicaklik 1
#define menu_nem 2
#define menu_Maxsicaklik 3
#define menu_Maxnem 4
#define menu_kalangun 0
int beklenengun=22;
int oncekikalangunzaman=0;
int Saatdegiskenkalangun=24;

long sureYukari;
long sureAsagi;
long sureMenu;

bool yukariTetik;
bool asagiTetik;
bool menuTetik;

int menu = menu_kalangun;






void setup() {
pinMode(yukari, INPUT);
pinMode(asagi, INPUT);
pinMode(_menu, INPUT);
lcd.begin(16,2);
lcd.clear();
}

void loop() {

kalangun();

if(menu==0){
lcd_kalangun_ayar();
}

}
void kalangun(){
unsigned long kalangunzaman=millis();
long saat=saatdegiskenkalangun*10;


//*************DEGISTIREBILIRLER/////////////
//"1 günde 1 düşecek"
if (kalangunzaman - oncekikalangunzaman >= saat) {
//********************************************

oncekikalangunzaman = kalangunzaman;

//Saniye veya ile calisacak kodlar buraya
beklenengun=beklenengun-1;
//Saniye ile calisacak kodlar buraya

}
if (beklenengun==0){
beklenengun=22;
}
EEPROM.write(0,beklenengun);
EEPROM.read(0);

}



void lcd_kalangun_ayar(){
lcd.setCursor(0,0);
lcd.print("Kalan Gun:");
lcd.setCursor(11,0);
lcd.print(beklenengun);
}



DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



L
9 yıl
Teğmen

Sorudan tam anlasilmiyor aslinda sormak istediginiz sey.
beklenengun = EEPROM.read(0); seklinde okuma yapabilabilir.
Ayrica eepromlarin belli yazma sayisi omru var. 100000-1000000 arasi sanirim. Ayrica eeproma yazmak belli bir sure tutuyor. Bu yuzden loop icinden surekli eeproma veri yazmaniz yanlis.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
P
9 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: lucky16

Sorudan tam anlasilmiyor aslinda sormak istediginiz sey.
beklenengun = EEPROM.read(0); seklinde okuma yapabilabilir.
Ayrica eepromlarin belli yazma sayisi omru var. 100000-1000000 arasi sanirim. Ayrica eeproma yazmak belli bir sure tutuyor. Bu yuzden loop icinden surekli eeproma veri yazmaniz yanlis.

nasıl yapabilirim benim ama beklenen gün 7 oldu elektrik kesildi setup da yapsam nasıl olur . amacım elektrik kesinde 7. günü kaybetmemek



< Bu ileti mobil sürüm kullanılarak atıldı >

L
9 yıl
Teğmen

Setupda eeprom'dan beklenengun'e kayit yapin.
Eeproma yazma isini sadece beklenengun degeri degisince yapin(bunun icin beklenengun degiskenini loop'un en sonunda tempbeklenengun seklinde bir degiskene atayin. bu satirdan once de tempbeklenengun esit mi beklenen gun seklinse karsilastirin esit degilse beklenengun'u eeproma yazin).

Bir hatirlatma da yapayim. millis() fonksiyonunun degeri 49 gun sonra overflow oluyor.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
P
9 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: lucky16

Setupda eeprom'dan beklenengun'e kayit yapin.
Eeproma yazma isini sadece beklenengun degeri degisince yapin(bunun icin beklenengun degiskenini loop'un en sonunda tempbeklenengun seklinde bir degiskene atayin. bu satirdan once de tempbeklenengun esit mi beklenen gun seklinse karsilastirin esit degilse beklenengun'u eeproma yazin).

Bir hatirlatma da yapayim. millis() fonksiyonunun degeri 49 gun sonra overflow oluyor.

teşekkürler anladım . if ile tempdegisken beklenengun den eşit değilse veya küçükse
Eeprom Write yapacam ama bunu setup a koyacam. okuma işleminde sıkıntı yok o zaman loop da kalmasının dimi ?



< Bu ileti mobil sürüm kullanılarak atıldı >

L
9 yıl
Teğmen

Oldugunu sanmiyorum da, setupta bir kere okumaniz yeterli.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
P
9 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: lucky16

Oldugunu sanmiyorum da, setupta bir kere okumaniz yeterli.

teşekkür ederim yardımınız için şöyle bir mantık kullandım ama doğru olur mu bilmiyorum.

if (beklenengun=beklenengun-1){
EEPROM.write(addr,beklenengun)
}


Bu mesaja 1 cevap geldi.
P
9 yıl
Teğmen
Konu Sahibi

Orijinalden alıntı: goçhisar

Abi bu konu seni bekliyor :D

teşekkür ederim yardımınız için şöyle bir mantık kullandım ama doğru olur mu bilmiyorum.

if (beklenengun=beklenengun-1){
EEPROM.write(addr,beklenengun)
}

Abi bu konu seni bekliyor :D



L
9 yıl
Teğmen

= yerine == yazmaniz gerek. Birincisi atama, ikincisi karsilastirma operatoru.
Yine de burada dogrudan != kullansaniz daha iyi olur sanki.
Ayrica ayni degiskeni karsilastirmaniz yanlis olur. if fonsiyonunun icindeki herhangi bir atama islemi 1 degerini dondurur ve if kosulu saglanarak icindeki islevlerin calismasi gerceklesir. Yani surekli eeprom'a veri yazmaya devam ediyor.
C seviyeniz anladigim kadariyla yeterli seviyede degil ama ben yardimci olabilirim, yapmak istediginiz konuda.
if(beklenengun != tempbeklenengun)
{
// Burada eeprom'a yazin
}

loop() fonsiyonunun son satirinda
tempbeklenegun = beklenengun;
Seklinde atama yapin.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.
P
9 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: lucky16

= yerine == yazmaniz gerek. Birincisi atama, ikincisi karsilastirma operatoru.
Yine de burada dogrudan != kullansaniz daha iyi olur sanki.
Ayrica ayni degiskeni karsilastirmaniz yanlis olur. if fonsiyonunun icindeki herhangi bir atama islemi 1 degerini dondurur ve if kosulu saglanarak icindeki islevlerin calismasi gerceklesir. Yani surekli eeprom'a veri yazmaya devam ediyor.
C seviyeniz anladigim kadariyla yeterli seviyede degil ama ben yardimci olabilirim, yapmak istediginiz konuda.
if(beklenengun != tempbeklenengun)
{
// Burada eeprom'a yazin
}

loop() fonsiyonunun son satirinda
tempbeklenegun = beklenengun;
Seklinde atama yapin.

Çok Teşekkür ederim. Yardımınız için .

Evet C Bilgim fazla yok. Mantıkları anlamaya ve araştırmaya ve örneklere bakmaya çalışıyorum. Tabi görebildiğim örnekler kadar bilgim var. Acaba Nasıl C Bilgimi artırabilirim. Doğru yoldamıyım C öğrenmek için



L
9 yıl
Teğmen

Bence baştan başlayın C'ye, az çok yeterli seviyeye gelmeniz çok uzun sürmez. Kodlardan, örneklerden bakarak anlamaya çalışmanızdan daha yararlı olur bence. Temel C anlatımlarını kolayca bulabilirsiniz Internette.



< Bu ileti mobil sürüm kullanılarak atıldı >

P
9 yıl
Teğmen
Konu Sahibi

quote:

Orijinalden alıntı: lucky16

= yerine == yazmaniz gerek. Birincisi atama, ikincisi karsilastirma operatoru.
Yine de burada dogrudan != kullansaniz daha iyi olur sanki.
Ayrica ayni degiskeni karsilastirmaniz yanlis olur. if fonsiyonunun icindeki herhangi bir atama islemi 1 degerini dondurur ve if kosulu saglanarak icindeki islevlerin calismasi gerceklesir. Yani surekli eeprom'a veri yazmaya devam ediyor.
C seviyeniz anladigim kadariyla yeterli seviyede degil ama ben yardimci olabilirim, yapmak istediginiz konuda.
if(beklenengun != tempbeklenengun)
{
// Burada eeprom'a yazin
}

loop() fonsiyonunun son satirinda
tempbeklenegun = beklenengun;
Seklinde atama yapin.

Selamlar. EEPROM oluyor fakat ekranda ki 22 den geriyo doğru saydığında 25 de başlıyor . sanki 255 yazar gibi .

3 haneye çıkıyor. normalde sayan siliniyor ve de 2 saniye de değişen bu sefer daha geç değişiyor eeprom kodunu silersen yine normal e dönüyor .

Video :https://youtu.be/q5hJPuVHf1c





< Bu mesaj bu kişi tarafından değiştirildi prax -- 23 Ağustos 2016; 22:44:03 >
Bu mesaja 1 cevap geldi.
P
9 yıl
Teğmen
Konu Sahibi

Sorunu çözdüm. ekranı yazdıracak yeri eeprom 0 ekledim kayıttakini gösterince gayet güzel çalışıyor



< Bu ileti mobil sürüm kullanılarak atıldı >

P
9 yıl
Teğmen
Konu Sahibi

düzeldi sanmıştım yine aynı şekilde kapayıp açınca Videodaki hata oluyor yine


Bu mesaja 1 cevap geldi.
P
9 yıl
Teğmen
Konu Sahibi

if (beklenengun>22)
beklenengun=22

yapınca oldu. acaba EEPROM ilk Başta niye kayıt ettiği yerden Başlamıyorda 255 den başlıyor.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.