Usando una memoria EEPROM desde Arduino

Arduino tiene una memoria no volátil de tan sólo 512 bytes (ver referencia), que puede ser insuficiente en algunos casos.

Pero podemos usar una EEPROM externa, en mi caso he usado una EEPROM serie 24LC256 que tiene una capacidad de 256 Kbit (32K x 8 bytes) y un precio de 2.88 euros. Os dejo el enlace a la24LC256 hoja de especificaciones.

La comunicación entre Arduino y la EEPROM se realiza mediante el bus I2C , que se trata de un bus de comunicaciones serie formado por dos lineas: una para los datos y otra para el reloj.

La librería Wire  permite manejar un bus I2C desde nuestro Arduino, y en este artículo del wiki encontramos 4 funciones que usando la librería anterior implementan la lectura/escritura en la EEPROM.

El parámetro deviceaddress al que hacen referencia estas funciones en el caso de esta memoria se trata del 0x50.

No debemos olvidarnos de inicializar la conexión antes de usar estas funciones:

Wire.begin();

pinoutEn cuanto a las conexiones de los pines: el pin 5 de la EEPROM (SDA) lo conectamos a la entrada analógica 4 de nuestro Arduino, el pin 6 (SCL) a la entrada analógica 5 (observar en la foto que los cables de color naranja se cruzan), el pin 8 a 5V y todos los demás a tierra.

Los pines analógicos 4 y 5 de Arduino son los que usa la librería Wire.

Usando una memoria EEPROM desde Arduino

En cuanto al sketch, os pongo el ejemplo con el que lo probé: se trata de escribir una cadena de caracteres cuando enciende nuestro Arduino y de leerla y enviarla al ordenador repetidamente.

El ejemplo lo podéis ver en pastebin para evitar problemas con el tabulado del blog.

Al tratarse de una memoria no volátil, podemos comentar la escritura (línea 59) para comprobar que permanecen los datos guardados con anterioridad.


  1. mariano

    hola estoy muy interesado de usar un arduino para escribir y leer eeprom.. nesesito mas ayuda me podrias acercar algo mas de informacion sobre conexiones y que tipos de memorias se pueden utilizar y de que capacidad….

  2. Hola mariano, yo la única que he usado es la de este ejemplo, que es de tipo serie y se usa a través del bus i2c, las hay de varias capacidades: 24X128, 24X256, 24X512. Y siguiendo los enlaces puedes encontrar más información. Suerte :)

  3. Mariano

    hola… muchas grasias por contestar…..la verdad es que estoy
    verde con el tema i2c… realmente te agradeceria que alcansaras algunos links para aprender mas sobre i2c si no fuera mucha molestia…;)

  4. Mariano

    aca encontre algo de sd y mmc con avr pero creo que se podria aplicar con arduino…. miralo y despues decime que te parece…..

    http://www.tolaemon.com/otros.htm

  5. eugenio

    che ami no me anda alguien podria esplayarse acerca de este tema

  6. Mariano

    a mi aun no me anda…:S

  7. Velon

    Enhorabuena por tu trabajo.

    Por mi parte, estoy teniendo problemas para obtener resultados en el ejemplo que viene en este enlace:
    http://www.arduino.cc/playground/Main/I2CPortExpanderAndKeypads

    No se el motivo por el cual no leo ni recibo información del PCF8574, no se si es debido a la conexión del /INT que no se cómo manejarlo, por el momento lo pongo con una polarización a positivo, aunque entiendo que debe ser puesto a negativo para que ejerza su trabajo, pero no se con que manejarlo.

    Me puedes echar un cable al respecto.

    Gracias.

  1. 1 unthink media » Using EEPROM with Arduino

    […] A few sites i used for reference where: Ardiono Reference Page Ghetto Hax: I2C EEPROM for the Arduino Usando una memoria EEPROM desde Arduino […]




Replica a mariano Cancelar la respuesta