Escribir y Leer conjunto de numeros en EEPROM

Hola, colegas, saludos.
Tengo una duda. Estoy haciendo unas prácticas y no he podido comprender algunas cosas referentes a la escritura de EEPROM y a la lectura de la misma.
He podido escribir y leer los datos pero el problema es el siguiente:
Si quiero guardar un numero, por ejemplo de 15 dígitos en la EEPROM, no me deja, solo puedo guardar 4 dígitos.
Quisiera saber de qué modo puedo almacenar este dato de 15 dígitos para después leerlo.
No sé si alguno tenga experiencia con este tipo de cosas.
He encontrado información pero no logro comprender bien cómo debe hacerse.

Este es el código:
C++:
#include <EEPROM.h>

int temperatura = 4448;
char cadena[] = "Dato almacenado";

void setup() {
  Serial.begin(9600);

  EEPROM.put(0, temperatura);
  EEPROM.put(10, cadena);

  Serial.println("Valor en direccion 0:");
  Serial.println( EEPROM.get(0, temperatura) );
  Serial.println(" ");

  Serial.println("Valor de la cadena en direccion 10:");
  Serial.println( EEPROM.get(10, cadena) );
}

void loop() {
}
 
Claro, lee la documentación y lo verás.
¿Que tamaño tiene int?
¿Que tamaño tiene lo que se mete en la eeprom?
¿Que datos maneja eeprom.xxx?
¿Como es de larga la cadena?

Si quieres guardar en un estante diez paquetes no caben, tendrás que poner un paquete en cada estante. Si solo das la orden de guardar una cosa en un estante, no se llna la estantería entera ni se meten dies cajas porque solo cabe una.

Por cierto:
- ¡Eh! tu ¿que haces ahí?
- He ido a por melones
 
Entiendo el problema, y si suponía que tendría que hacer algo así, la verdad jamas he usado arduino,pero creo que ya me despejaste ciertas dudas, gracias.
 
La EEPROM solo admite bytes, todo lo demás hay que trocearlo en bytes y guardarlo y recuperarlo con un bucle.
 
Ojo que hay memorias que trabajan con un word de 16 bits.

De todas formas, seguramente se trate de una EEPROM de 8bits y es tal como decís.
 
Es que él no lo dice pero está usando arduino.
Tampoco dice cual de ellos pero debe de ser uno de 8 bits porque el DUE no tiene eeprom
Y en los arduino de 8 bits las eeprom es así. Es de 8 bits y las funciones solo dejan leer y escribir un byte en la dirección que se indique, nada mas.
No sé si hay otros modelos con otra configuración de eeprom.
 
Gracias por sus comentarios,ya logre guardar informacion larga en la eeprom y leerla, pero ahora viene otro problema, estoy intentando leer un teclado 4x4 , configurando de tal modo que yo ingreso datos que se van formando en cadena, y con un switch escribirlos en la eeprom, algo asi como para guardar contraseñas,subo avances en cuanto pueda, he leido tanto estos dias que no se por donde empezar, estoy haciendo practicas del tema en este momento, gracias por las respuestas.
PD: Estoy usando arduino nano
 
Este es el avance que llevo;
Con el keypad ingreso una serie de numeros y estos se muestran en serie en la pantalla(hasta aqui todo bien) pero estoy intentando hacer que al presionar cierto boton, estos datos se guarden en la eeprom, el problema esta en que no se en que punto del codigo meter esta funcion, si con la expresion if etc, bueno sigo en el desarrollo, saludos.
Código:
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
#define ANCHO 128
#define ALTO 32

#define OLED_RESET 4
Adafruit_SSD1306 oled(ANCHO, ALTO, &Wire, OLED_RESET);

String pad;
const byte numRows= 4;
const byte numCols= 4;
char keymap[numRows][numCols]=
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
//------------------------------------------------------------
byte rowPins[numRows] = {9,8,7,6};
byte colPins[numCols] = {5,4,3,2};
Keypad myKeypad= Keypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols); //mapping keypad
void setup() {
  Serial.begin(9600);
  // put your setup code here, to run once:
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void loop() {
  // put your main code here, to run repeatedly:
  bacaKeypad();
  oled.clearDisplay();
  oled.setTextColor(WHITE);
  oled.setCursor(0, 0);
  oled.setTextSize(2);
  oled.print(pad);
  oled.display();
  delay(100);
}
void bacaKeypad() {
  char keypressed = myKeypad.getKey(); //deteksi penekanan keypad
  String konv = String(keypressed);
  pad+=konv;
}
 

Temas similares


Arriba