Hola, ArduMyth:
Francamente, hay ejemplos de arduino (y el caso de struct, union e instances) que no logro comprender muy bien, como una buena parte del C, de ahí que incluso "bautice" cosas inapropiadamente, como es el caso de los "punteros". Para entender muchas cosas de Arduino, suelo buscar ejemplos durante horas y, probablemente porque no sé explicar muy bien la ingente cantidad de dudas que tengo, el foro de Arduino no me está sirviendo de mucha ayuda.
El ejemplo que puse me funciona perfectamente, tengo como media docena de otras estructuras tan abigarradas como la del ejemplo y pretendo utilizar sizeof para obtener la siguiente dirección. Pese a que las funciones de la librería EEPROM son claras, no conseguía adaptarlas a mis propósitos.
Concretamente, dices que puedo asignar los valores en la declaración de la estructura:
struct MiStruct{
float field1 = 3.14;
byte field2 = 65;
char name[10] = "FUNCIONA!!";
};
Para escribir en la EEPROM tengo la función:
void saveAssembledEEPROM() {
EEPROM.put(eeAdress,MiStructVal);
}
y para leer de la EEPROM:
void loadAssembledEEPROM() {
// Lee la EEPROM
EEPROM.get(eeAdress,MiStructVal);
}
y para individualizar cada campo:
x = MiStructVal.field1;
y = MiStructVal.field2;
z = MiStructVal.name;
lo único que se me ocurre es, de acuerdo con tu sugerencia, es sustituir MiStructVal por MiStruct pero me da un montón de errores, no sé si he metido la pata o esa no es la forma.
Te agradeceré tus comentarios,
P.S. Tengo claros los límites de escritura de la EEPROM. Para hacer pruebas (y las hago a miles) utilizo la simulación de Proteus, todavía no he grabado nada en mis variadas tarjetas de Arduino, salvo el típico ejemplo de "blink" para saber que funcionan, sea, tan solo el LED.
Te adjunto una copia muy parcial del "tinglado" en que me he metido. Observa que tengo herramientas y conocimientos sobre ellas de sobra, me faltan conocimientos del lenguaje de Arduino y me sobran una pila de años.
APC.pdf (664 KB)