Arduino

Dâhili EEPROM Nedir ve Nasıl Kullanılır?

EEPROM, ihtiyacımız olan değişken verilerini tutabilen, elektriksel olarak bu verileri yazıp silebilen küçük depolama birimidir. Arduino’nun mikroişlemcisinde dâhili olarak bulunan EEPROM’a verilerimizi kaydedebilir, istediğimiz zaman bu verileri tekrar kullanabiliriz.

Arduino’nun enerjisi kesilse dahi EEPROM’daki veriler silinmez. Bu özellikten dolayı Arduino’nun çalışmaya başladığında ilk olarak yapması gereken önemli işlerin verileri bu alanda depolanır. EEPROM depo alanı, Arduino’nun üzerinde bulunan mikroişlemcinin türüne göre değişmektedir. ATmega328’in 1024 byte, ATmega168 ve ATmega8’in 512 byte, ATmega1280 ve ATmega2560’ın ise 4 kb depolama alanı vardır. Bu alanlar projelerimiz için yeterli olacak. Yeterli olmadığı durumlarda hafıza alanının artırılması için harici EEPROM’lar da kullanılabilir.

Uygulamalarda Arduino’nun dâhili EEPROM’u kullanılacaktır. Bunun için öncelikle EEPROM.h kütüphanesini projemize dâhil etmeliyiz. EEPROM kütüphanesini dâhil etmemizle artık EEPROM’a yazma ve EEPROM’dan okuma fonksiyonlarını kullanabiliriz. EEPROM’a veri yazmak için “EEPROM.write” fonksiyonu kullanılır.

Bu fonksiyon veri olarak sırasıyla EEPROM’da kaydedilecek adresi ve kaydedilmesi gereken veriyi almaktadır. EEPROM’a kaydedilecek adres kullanıcı tarafından belirlenmektedir. Böylece kullanıcı kaydettiği verinin hangi adreste olduğunu bilmektedir. İhtiyaç olunduğunda bu verinin geri alınması için “EEPROM.read” fonksiyonu kullanılır. Bu fonksiyon veri olarak EEPROM’un okunmak istenen adresini almaktadır.

Uygulama: Kaldığı yeri hatırlayan servo motor

Servo motorlar tek yönlü PWM sinyaliyle kontrol edilir. Bu kontrolün tek yönlü olması nedeniyle Arduino’ya geri bilgi gelmez. Arduino servo motoru kontrol ettikten sonra kapatılıp açılırsa, servo motorun en son hangi konumda kaldığını hatırlayamaz. Bu durum bazı projeler için sorun teşkil edebilir. Servo motorun en son konumunu Arduino’ya hatırlatmak için, servoyu kontrol ettikten sonra Arduino’nun EEPROM’una en son yollanan açıyı kaydedeceğiz. Böylece Arduino’nun gücü kesilip tekrar başlatılsa bile, servo motor en son konumundan başlayacak.

EEPROM kullanmanın yaratacağı fark görülmesi için aşağıda verilen ilk kodda EEPROM kullanılmamıştır. İkinci kodda son açı EEPROM’a kaydedilmiş ve servonun kaldığı yerden çalışması sağlanmıştır.

Bu uygulamayı yapmak için ihtiyacımız olan malzemeler:

  • 1 x Arduino
  • 1 x Servo motor

Aşağıdaki kodda yukarıdaki koddan farklı olarak açı ve yön bilgisi EEPROM’a kaydedilmiştir. İlk kodda Arduino’yu motor herhangi bir konumdayken kapatıp tekrar açtığınızda, motor hareketine en baştan başlamaktadır. Aşağıdaki kodda açı ve yön bilgisi EEPROM’a kaydedildiği için Arduino’nun gücü kesilse bile, Arduino’ya tekrar güç verildiğinde servo motor kaldığı yerden çalışmaya devam edecektir.

EEPROM diğer projelerde de benzer mantıkla kullanılabilir.

1 Comment

  • Merhaba, burada dönü hızını da eeproma yazıp ordan okumuş olsak olur mu? çünki dönüş hızını 125 ms yaptığımızda kaldığımız yerden devam ederken dönüş açısı bitene kadar çok hızlı dönüyor, açı değişince 125 ms olarak verdiğimiz değerde dönüş yapıyor.

Yorum yaz