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.


[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.