Guardar la entrada del usuario como una matriz y recuperarla más tarde

0

Actualmente estoy trabajando con un Arduino Mega y un SainSmart LCD y he conseguido que la mayor parte de mi proyecto funcione, excepto por un problema que tengo actualmente.

En mi pantalla LCD, tengo varios botones, y estos botones en mi código, se correlacionan con una matriz. Por lo tanto, cuando un usuario presiona el botón, la matriz almacena ese valor.

He creado una matriz de una línea que contiene 12 valores int. Lo siguiente es donde me estoy atascando:

Me gustaría guardar la matriz y poder recuperarla según sea necesario.

He creado una página donde hay "programas guardados" y hay botones que coordinan el orden en que se guardaron las matrices.

Me gustaría poder guardar las matrices y luego, cuando presiono el botón, se pueden activar las matrices y realizar la tarea.

    
pregunta awca

1 respuesta

1

Creo que tu pregunta en realidad no tiene nada que ver con los insumos, ¿y todo que ver con los arreglos?

¿Qué significa "llamado en"? ¿Desea que los valores deban conservarse durante el apagado? Si es así, utilice EEPROM. Las funciones de Arduino EEPROM solo hacen un byte a la vez, así que use los AVR.

#include <avr/eeprom.h>

int array[12];

// save the contents of 'array' persistently
eeprom_write_block((void *)0x20, array, sizeof(array));
// load the contents from eeprom back into array
eeprom_read_block(array, (void *)0x20, sizeof(array));

Para almacenar múltiples variantes de la matriz, use diferentes direcciones EEPROM, separadas suficientemente (al menos 24 bytes para una matriz de 12 bytes de doble byte, por lo que 0x20 + N * 24 para varias N.)

El 0x20 está ahí para permitirle almacenar otra información en los primeros 32 bytes. Si lo desea, puede comenzar a almacenar sus matrices en offset 0x0.

Si la pregunta es simplemente "cómo guardo el estado de una matriz en otro lugar", entonces la respuesta es "memcpy ()."

#include <string.h>

int array[12];
int save_1[12];
int save_2[12];

// save "array" to "save_1"
mempcy(array, save_1, sizeof(array));
// restore "save_2" to "array"
memcpy(save_2, array, sizeof(array));
    
respondido por el Jon Watte

Lea otras preguntas en las etiquetas