The program increase and save into the EEPROM every 10 seconds an integer value.
Please notice that the EEPROM can be written 100.000 times so use this program only as a demo since sooner or later will destruct your ATMEGA micro controller.
#include <EEPROM.h> unsigned int StoredValue; void SaveToEEPROM(unsigned int MyInteger){ //MyInteger is 2 byte (unsigned int) so 2*8=16bit long //Lets say that: MyInteger XXXXXXXXYYYYYYYY unsigned int wl; wl=MyInteger>>8; //8 zeros at beggining wl=00000000XXXXXXXX unsigned int wr; wr=MyInteger<<8; //8 zeros at end wr=YYYYYYYY00000000 wr=wr>>8; //I do : wr=00000000YYYYYYYY EEPROM.write(0,wl); //I write XXXXXXXX EEPROM.write(1,wr); //I write YYYYYYYY } unsigned int ReadFromEEPROM(){ unsigned int wl; wl=EEPROM.read(0); // I read wl = 00000000XXXXXXXX wl=wl<<8; //wl=XXXXXXXX00000000 unsigned int wr; wr=EEPROM.read(1); //I read wr=00000000YYYYYYYY unsigned int w; w=wl+wr; //w=XXXXXXXX00000000+00000000YYYYYYYY=XXXXXXXXYYYYYYYY return w; } void setup() // the set up part (runs only once) { Serial.begin(9600); // set up Serial library at 9600 bps //Read from the EEPROM StoredValue=ReadFromEEPROM(); if (StoredValue>60000) { StoredValue=0; } Serial.print("The latest stored value is : "); //Print the stored value Serial.println(StoredValue,DEC); } void loop() // The main loop (runs over and over again) { Serial.println("I am sleeping for 10 sec"); delay(10000); //Save a new value at the EEPROM SaveToEEPROM(StoredValue+1); //Read again from the EEPROM StoredValue=ReadFromEEPROM(); Serial.print("The new stored value after 10sec is : "); Serial.println(StoredValue,DEC); }
As you can see this method is pretty easy.
Also notice that the program every time it starts reads from the EEPROM the last saved value so remembers the latest unsigned integer even if arduino switches off.
You can download this example from here : EEPROMAdvancedExample