Arduino
içerisinde kalıcı ve geçici hafıza bölümleri vardır. Yazdığımız kodlar kalıcı
bölümlerde kaydedilirken programın çalışması esnasında oluşan değişkenler
geçici hafızalarda kaydedilir. Arduinodan enerji kesildiği zaman geçici hafızada
olan veriler silinir. Eğer program esnasında elde ettiğimiz değerleri kaydetmek
istersek başka bir hafızaya ihtiyaç duyarız. Arduinoda elde ettiğimiz verileri
saklayabildiğimiz EEPROM (Electronically Erasable Programmable Read Only
Memory) bellekler mevcuttur. Bu belleklerin boyutları mikrodenetleyici
modellerine göre değişkenlik gösterebilir. Örnek olarak atmega328 de 1kb,
atmega168 de 512 mb, atmega2560 da 4kb eeprom hafıza yer alır.
EEPROM hafızaları kullanmak için 2 komut mevcuttur. EEPROM.write(adres,degisken) komutu ile istediğimiz adrese değişkenimizin değerini atarız. EEPROM.read(degisken) komutu ile daha önce kayıtlı bir değişkenin değerini okumuş oluruz. Şimdi bu konuyla alakalı bir örnek tasarlayalım. Birden sonsuza kadar sayma işlemi yapalım ve seri port ekranında gösterelim. Her sayma işleminden sonra değişkenimiz kaydedilsin. Böylece eğer kartımızdan enerji kesilirse veya reset atılırsa sayımız kaldığı yerden saymaya devam edecektir. Şimdi bu örneğin kodunu yazalım.
EEPROM hafızaları kullanmak için 2 komut mevcuttur. EEPROM.write(adres,degisken) komutu ile istediğimiz adrese değişkenimizin değerini atarız. EEPROM.read(degisken) komutu ile daha önce kayıtlı bir değişkenin değerini okumuş oluruz. Şimdi bu konuyla alakalı bir örnek tasarlayalım. Birden sonsuza kadar sayma işlemi yapalım ve seri port ekranında gösterelim. Her sayma işleminden sonra değişkenimiz kaydedilsin. Böylece eğer kartımızdan enerji kesilirse veya reset atılırsa sayımız kaldığı yerden saymaya devam edecektir. Şimdi bu örneğin kodunu yazalım.
[code]
#include
<EEPROM.h>
int adrs =
10; // istenilen değerin kaydedileceği
adres birimi
int i =
0; // sayma
yapacağımız değişken
void setup() {
Serial.begin(9600);
i = EEPROM.read(adrs); // EEPROM kaydedilmiş değer i
değişkenine atanır
i=i+1;
}
void loop() {
EEPROM.write(adrs,i); // son i değeri EEPROM kaydedilir
Serial.println(i); // i değişkeni seri port
ekranında yazdırılır
i=i+1; //
sayımız bir arttılr
delay(300); // 300 ms bekleme
}
[/code]
Kodumuzu atıp çalıştırdıktan sonra arduinomuza reset atalım yada doğrudan enerjisini keselim. Sayma işlemine devam ettiğini göreceksiniz.
Kodumuzu atıp çalıştırdıktan sonra arduinomuza reset atalım yada doğrudan enerjisini keselim. Sayma işlemine devam ettiğini göreceksiniz.