En este tutorial te explicamos qué es la EEPROM de Arduino y para qué sirve. También te enseñaremos a escribir y leer desde la EEPROM y a crear un proyecto de ejemplo para poner en práctica los conceptos aprendidos.
Introducción
Cuando se define y utiliza una variable, los datos generados dentro de un sketch solo existen mientras Arduino esté encendido. Si se reinicia o se apaga Arduino, los datos almacenados desaparecen.
Si necesitas conservar los datos almacenados para su uso futuro, debe utilizar la memoria EEPROM incluida en el microcontrolador de tu Arduino. Esta permite almacenar los datos de la variable incluso cuando se reinicia o se apaga el Arduino.
¿Qué es EEPROM?

¿Cuántos bytes puedes almacenar?
| Microcontroller | EEPROM |
| ATmega328 (Arduino Uno, Nano, Mini) | 1024 bytes |
| ATmega168 (Arduino Nano) | 512 bytes |
| ATmega2560 (Arduino Mega) | 4096 bytes |
¿Cual es la vida útil de la EEPROM de un Arduino?
Aplicaciones en proyectos Arduino – Recordar último estado
- Estás controlando una lámpara con tu Arduino y la lámpara está encendida;
- El Arduino pierde energía de repente;
- Cuando se restablece la energía, la lámpara permanece apagada; no conserva el último cambio

Leer y escribir
Puede leer y escribir fácilmente en la EEPROM utilizando la librería EEPROM.
Para incluir la biblioteca EEPROM:
#include <EEPROM.h>Escribir
EEPROM.write(address, value);EEPROM.write(0, 9);Leer
Para leer un byte de la EEPROM, se utiliza la función EEPROM.read(address). Esta función toma la dirección del byte que tiene un argumento.
EEPROM.read(address);EEPROM.read(0);Actualizar un valor
EEPROM.update(address, value);En este momento, tenemos un 9 almacenado en la dirección 0. Entonces, si llamamos:
EEPROM.update(0, 9);Ejemplo: La EEPROM de Arduino recuerda el estado del LED almacenado
En este ejemplo, le mostraremos cómo hacer que Arduino recuerde el estado del LED almacenado, incluso cuando reiniciamos el Arduino o se corta la energía.
Piezas necesarias
- Arduino UNO : lea los mejores kits de inicio de Arduino
- 1x LED
- 1 resistencia de 220 Ω
- 1x pulsador
- 1 resistencia de 1 kΩ
- 1x placa de pruebas
- Cables puente
El Sketch
Código
/*
* Rui Santos
* Complete Project Details https://randomnerdtutorials.com
*/
#include <EEPROM.h>
const int buttonPin = 8; // pushbutton pin
const int ledPin = 4; // LED pin
int ledState; // variable to hold the led state
int buttonState; // the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin
// the following variables are long's because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long lastDebounceTime = 0; // the last time the output pin was toggled
long debounceDelay = 50; // the debounce time; increase if the output flickers
void setup() {
// set input and output
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
// set initial LED state
digitalWrite(ledPin, ledState);
// initialize serial monitor
Serial.begin (9600);
//check stored LED state on EEPROM using function defined at the end of the code
checkLedState();
}
void loop() {
// read the state of the switch into a local variable
int reading = digitalRead(buttonPin);
if(reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();
}
if((millis() - lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it's been there for longer
// than the debounce delay, so take it as the actual current state:
// if the button state has changed:
if(reading != buttonState) {
buttonState = reading;
// only toggle the LED if the new button state is HIGH
if(buttonState == HIGH) {
ledState = !ledState;
}
}
}
// set the LED state
digitalWrite(ledPin, ledState);
// save the current LED state in the EEPROM
EEPROM.update(0, ledState);
// save the reading. Next time through the loop,
// it'll be the lastButtonState
lastButtonState = reading;
}
// Prints and upates the LED state
// when the Arduino board restarts or powers up
void checkLedState() {
Serial.println("LED status after restart: ");
ledState = EEPROM.read(0);
if(ledState == 1) {
Serial.println ("ON");
digitalWrite(ledPin, HIGH);
}
if(ledState == 0) {
Serial.println ("OFF");
digitalWrite(ledPin, LOW);
}
}Código
Este es un código antirrebote que cambia el estado del LED cada vez que presionas el botón. Pero este código tiene algo especial: recuerda el estado del LED guardado, incluso después de reiniciar o encender el Arduino. Básicamente, guardamos el estado actual del LED en el estado led variable y guárdela en la EEPROM con la siguiente línea:EEPROM.update(0,ledState);checkLedState()
void checkLedState() {
Serial.println("LED status after restart: ");
ledState = EEPROM.read(0);
if (ledState == 1) {
Serial.println ("ON");
digitalWrite(ledPin, HIGH);
}
if (ledState == 0) {
Serial.println ("OFF");
digitalWrite(ledPin, LOW);
}
}Terminando
En esta publicación, aprendiste sobre la EEPROM de Arduino y para qué sirve. Creaste un boceto de Arduino que recuerda el último estado del LED incluso después de reiniciar el Arduino. Este es solo un ejemplo sencillo para que entiendas cómo se usa la EEPROM. La idea es que apliques los conceptos aprendidos en este tutorial a tus propios proyectos.DEMOSTRACIÓN
Preguntas frecuentes
¿Qué es la EEPROM de Arduino?
Es una memoria que conserva los datos aunque el Arduino se apague o se reinicie. Las variables normales de un sketch solo existen mientras la placa está encendida; la EEPROM permite guardar información de forma permanente.
¿Cuántos bytes puedo guardar en la EEPROM de un Arduino UNO?
La capacidad es limitada y depende del modelo de placa. El tutorial detalla cuántos bytes ofrece cada una, un dato importante porque se agota rápido si se guardan estructuras grandes.
¿Cuánto dura la EEPROM de un Arduino?
Tiene una vida útil limitada en número de escrituras, no de lecturas. Por eso conviene escribir solo cuando el dato cambia realmente, y no en cada vuelta del bucle.
¿Para qué sirve la EEPROM en un proyecto real?
Un uso típico es recordar el último estado: que el proyecto vuelva a encender con la misma configuración que tenía antes de apagarse, sin que el usuario tenga que ajustarla de nuevo.
¿Cómo se escribe y se lee en la EEPROM?
Con las funciones de escritura y lectura de la librería EEPROM, indicando la dirección de memoria y el valor. El tutorial recorre ambas operaciones y las pone en práctica en un proyecto de ejemplo.
Aprende esto en un curso
Si prefieres verlo en vivo y con alguien que resuelva tus dudas, estos cursos presenciales de MCI Educación cubren el tema de este tutorial:
- Arduino desde Cero: Primeros Pasos en Programación — nivel inicial, 15 horas presenciales en Santiago
- Arduino en profundidad: Sensores y actuadores para proyectos reales — nivel intermedio, 12 horas presenciales en Santiago