Arduino ile EEPROM Okuma ve Yazma
Bu yazımızda sizlere Arduino kullanarak verilerinizi kaydedebilmeniz için EEPROM kullanımına bakacağız.
Her tip arduino türünde içerisinde belli miktarda eeprom bellek vardır. Bu bellek arduinonun kapatıldıktan sonra verilerinizin kaybolmamasını sağlar.
EEPROM fonksiyonarını kullanabilmek için önce EEPROM.h kütüphanesini programınıza eklemeniz gerekir. Bunu yapar yapmaz bir takım EEPROM işlevlerine ulaşma imkanını elde edersiniz.Arduinonun içerisindeki dahili gelen eeprom belleğinin boyutunu öğrenmek için EEPROM.length() komudunu kullanabilirsiniz.
EEPROM.length() komutundan dönen değerde dikkat etmemiz gereken bir nokta aldığımız değerin nasıl kullanılacağıdır. EEPROM adresleri sıfır (0) dan başladığı için geri gelen veri değeri adres olarak kullanıldığında sıfır ile eepromBellek – 1 arası olmalıdır. Örneğin: ARDUINO UNO da EEPROM boyutu 1024 dür. Buna göre adres olarak kullandığımızda bu değer 0 – 1023 arasında olmalıdır.
Tüm eeprom belleğini sıfırlamak :
#include <EEPROM.h> void setup() { int eepromBellek = EEPROM.length(); for (int i = 0 ; i < eepromBellek ; i++) {EEPROM.write(i, '\0');} }
Yukardaki kod ile tüm eeprom belleğini sıfırlayabilirsiniz.Bunu yaparken EEPROM.write() işlevini kullanıyoruz. Burada belleğe yazdığımız değer tamamen bize kalmış bir seçenektir. NUL (\0), SIFIR (0), BOŞLUK ( ), vs gibi herhangi uygun değer kullanılabilir.
EEPROM belleğine veri yazıp okumak için üç tip işlev vardır:
- EEPROM.read() ve EEPROM.write() : karakter veya bayt olarak okuyup yazma
- EEPROM.get() ve EEPROM.put() : dizgi veya özel / değişik veri yapılarına göre okuyup yazma
- EEPROM.update() : Eğer veri bellektekinden değişikse yaz
EEPROM.read() ve EEPROM.write() işlevleri verileri belleğe tek bayt olarak okuyup yazarlar.
EEPROM.get() ve EEPROM.put() işlevleri ise belleğe bir bayttan daha fazla veya uzunlukta veri kaydetmek istediğimiz zaman kullanılır. Örneğin float tipi veriler dört (4) bayt olduğundan bu işlevle kaydedilmesi gerekir. Eğer uzunca bir dizgi veya dizi kaydetmek isterseniz (örneğin: “dosyaadı.txt”) bu işlevleri kullanmanız gerekir.
EEPROM.update() işlevi yazılacak veriyi yazmak istediğimiz adresteki değer ile karşılaştırır ve yalnız aynı değilse yazma işlemini tamamlar.
ARDUINO EEPROM referansına bu bağlantıdan ulaşabilirsiniz.