How to write and read the EEPROM?

Hi guys,

That´s my first post here so please, apologize me for the dumb question, i was looking for and i didn´t found it. :blush:

I need to get a number valor from the serial and save it in EEPROM and read it, same after arduino was restarted.

It´s like in shell script, you know: number_serial > number.txt

cat number.txt > NUMBER01

Help me plz ^^

Help > Reference > Libraries > EEPROM

That´s what i need thk you =DDDD XD

But I´m with doubts in the exemple:

#include <EEPROM.h>

void setup()
for (int i = 0; i < 512; i++)
EEPROM.write(i, i);

void loop()

I have that comes form serial (IRlib):
if (irrecv.decode(&results)) { // IR
Serial.println(results.value); // IR
irrecv.resume(); // IR

IRr = (results.value * 1);
Serial.println(IRr );

How can I write IRr valor in the EEPROM?

Like this?
EEPROM.write(i, IRr);

That are the kind of values that I need to storage:

IRn2= 13646 3843765582 IRr= 13646 IRn= 13646

other exemple: IRn2= 13646 1825097194 IRr= -14870 IRn= 13646

The EEPROM library only deals with bytes. There are several approaches to handle longer data types. For example: (1) Reduced the longer types to byte values using bit shift operations, (2) Use UNION to access the individual bytes in longer data types, (3) Use the eeprom_write_* and eeprom_read_* functions defined in AVR-Libc. Here is an example of the latter. Note there are also functions for double words (32-bit integers), blocks, and bytes.

#include <avr/eeprom.h>      //
#include <EEPROM.h>          //
#include <Streaming.h>       //

int myInt1, myInt2;          //note that a 16-bit int is also referred to as a word
float myFloat1, myFloat2;    //floats require 32 bits

void setup(void)
    myInt1 = 31416;
    myFloat1 = 3.14159;
    eeprom_write_word( (uint16_t *) 10, myInt1 );    //write a 16-bit int to EEPROM address 10
    eeprom_write_float( (float *) 20, myFloat1 );    //write a float to address 20
    myInt2 = eeprom_read_word( (uint16_t *) 10 );    //read a 16-bit int from address 10
    myFloat2 = eeprom_read_float( (float *) 20 );    //read a float from address 20
    Serial << _DEC(myInt2) << endl;                  //print the values read
    Serial << _FLOAT(myFloat2, 5) << endl;

void loop(void)

We have the same topic I think. It might help.,152977.0.html

Jack, how do I get that? #include <avr/eeprom.h> //

I just found that:


Jack, how do I get that? #include <avr/eeprom.h> //

It’s already there, just type it in. The code I posted above should compile and run fine. AVR-Libc is part of the Arduino toolchain.


thanks formal =>

Has Google Translate plugin if you want to read ^ ^

danielbcjr: IT WORKS =DDDDDDD

thanks formal =>

Has Google Translate plugin if you want to read ^ ^

Nice site, and thanks for the kudos :D

Check the Arduino Reference, it explains the steps nice and clear :) - Read - Write