Se me modifica la variable guardada en EPPROM

Saludos amigos, tengo un problema cuando ya terminaba mi programa, funciono bien por 1 momento pero no volvió funciona bien.

#include <EEPROM.h>
int pin = 0;
int VALORcontar = 0;
int address =0;
int VALORGLOBAL = EEPROM.read(address);

void setup() {
........................................... OBVIO ESTA PARTE PARA RESUMIR..
}
void loop() {

for (int pin = 2; pin <= 3; pin++)
{
if(digitalRead(pin) == HIGH) {
VALORcontar = VALORcontar + 1;
}
}

if (VALORcontar == 0){
VALORGLOBAL = (1985);
EEPROM.write(address, VALORGLOBAL);
}

Serial.println(VALORcontar,DEC);
Serial.print("VALORGLOBAL =");
Serial.println(VALORGLOBAL);
Serial.print("PESOACTUAL =");
Serial.println(scale.getGram()/1.625);

VALORcontar = 0;
delay(1000);
}

  1. Declarando y guardando la variable fuera del LOOP
    Cada vez que inicio el MONITOR SERIE el valor guardado en EPPROM pasa a ser 193 cuando debería ser 1985.
  2. Declarando y guardando la variable dentro del LOOP
    Cada vez que un pin de los que necesito pasa a estar en HIGH cae en valor 193.

tengo una balanza(peso) funcionando perfectamente y los valores también usando esta se alteran. ya no se la verdad que hacer. Es el arduino MEGA 2560 nuevo nunca habia usado su EPPROM. GRACIAS

No estoy seguro 100%, pero creo que el problema es que int VALORGLOBAL ocupa 2 bytes http://arduino.cc/es/Reference/Int y EEPROM.write(address, VALORGLOBAL); solo escribe uno http://arduino.cc/es/Reference/EEPROMWrite

Elemental, querido Watson :slight_smile:
Sólo estas escribiendo/leyendo un byte en la EEPROM, y un int ocupa dos.
int datoguardar=x;
byte datolsb=datoguardar%256;
byte datomsb=dato guardar/256;
// guardamos en EEPROM los dos datos byte

//leemos los dos datos
int datoleido=datomsb*256+datolsb;

Perdón por la "caligrafía", pero es lo que tiene teclear en el teléfono usando dos morcillas.