Hola gente! tengo un problema al intentar guardar un array en la EEPROM.
Necesito guardar 4 valores que son almacenados en el array Datos[i] en la EEPROM, luego de ser ingresados mediante un keypad.
El problema es que cuando los necesito leer para mostrarlos en un lcd, me aparece la letra a y nada mas.
El array Datos es de 4 posiciones y cada posicion varia de 0 a 100 entero. Por lo que no deberia tener problema de espacio ya que no sobrepaso el valor 255.
Estoy utilizando un arduino MEGA junto a un keypad y un LCD 20x4 I2C
Adjunto partes del codigo donde se realiza la lectura y escritura en la EEPROM.
Cuando se presiona el caracter * se guarda la informacion, en el display me aparece "Info Guardada", por lo que asumo que el programa entra en esa parte del codigo.
Escritura
case '*':
delay(1500);
for (int i = 0; i < 5; i++) {
EEPROM.write(i, Dato[i]);
}
lcd.clear();
lcd.print("Info Guardada");
delay(2000);
break;
Lectura
Se ejecuta en el Void Setup!
for (int i = 0; i < 5; i++) {
Dato[i] = EEPROM.read(i);
}
Aca dejo el codigo entero.
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <EEPROM.h>
const int ROW_NUM = 4; // four rows
const int COLUMN_NUM = 4; // four columns
byte customChar[] = {
B00000,
B01100,
B00110,
B11111,
B11111,
B00110,
B01100,
B00000
};
byte customChar1[] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
};
char keys[ROW_NUM][COLUMN_NUM] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte pin_rows[ROW_NUM] = {22, 24, 26, 28};
byte pin_column[COLUMN_NUM] = {30, 32, 34, 36};
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );
LiquidCrystal_I2C lcd(0x27, 20, 4);
int cursorColumn = 16;
int fila = 0;
char pulsacion;
String PIN_Tecleado = "";
char cadena[17];
int Dato[4] ;
void setup() {
lcd.init();
lcd.backlight();
for (int i = 0; i < 5; i++) {
Dato[i] = EEPROM.read(i);
}
lcd.createChar(0, customChar);
lcd.createChar(1, customChar1);
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("A-Velocidad:");
// lcd.setCursor(16,0);
// lcd.print(Dato[0]);
lcd.setCursor(0, 1);
lcd.print("B-Longitud:");
// lcd.setCursor(16,1);
// lcd.print(Dato[1]);
lcd.setCursor(0, 2);
lcd.print("C-Altura:");
// lcd.setCursor(16,2);
// lcd.print(Dato[2]);
lcd.setCursor(0, 3);
lcd.print("D-Inclinacion:");
// lcd.setCursor(16,3);
// lcd.print(Dato[3]);
pulsacion = keypad.getKey();
switch (pulsacion) {
case 'A':
fila = 0;
lcd.setCursor(14, fila);
lcd.write(0);
lcd.setCursor(14, 1);
lcd.write(1);
lcd.setCursor(14, 2);
lcd.write(1);
lcd.setCursor(14, 3);
lcd.write(1);
break;
case 'B':
fila = 1;
lcd.setCursor(14, fila);
lcd.write(0);
lcd.setCursor(14, 0);
lcd.write(1);
lcd.setCursor(14, 2);
lcd.write(1);
lcd.setCursor(14, 3);
lcd.write(1);
break;
case 'C':
fila = 2;
lcd.setCursor(14, fila);
lcd.write(0);
lcd.setCursor(14, 0);
lcd.write(1);
lcd.setCursor(14, 1);
lcd.write(1);
lcd.setCursor(14, 3);
lcd.write(1);
break;
case 'D':
fila = 3;
lcd.setCursor(14, fila);
lcd.write(0);
lcd.setCursor(14, 0);
lcd.write(1);
lcd.setCursor(14, 2);
lcd.write(1);
lcd.setCursor(14, 1);
lcd.write(1);
break;
case '0' ... '9':
PIN_Tecleado += pulsacion;
lcd.setCursor(cursorColumn, fila);
lcd.print(pulsacion);
cursorColumn++;
break;
case '#':
PIN_Tecleado.toCharArray(cadena, 17);
Dato[fila] = atof (cadena);
PIN_Tecleado = "";
cursorColumn = 16;
lcd.setCursor(16, fila);
lcd.print(Dato[fila]);
break;
case '*':
delay(1500);
for (int i = 0; i < 5; i++) {
EEPROM.write(i, Dato[i]);
}
lcd.clear();
lcd.print("Info Guardada");
delay(2000);
break;
}
}

