Базовый вопрос по работе с EERPOM

parnas
Offline
Зарегистрирован: 06.04.2011

 Пытаюсь разобраться в работе с памятью EERPOM. Возник вопрос, боюсь он покажется ламерским, но очень хочется разобраться. Я так понимаю, что EERPOM энергонезависимая память. Я записываю растущую переменную в память, растет она от 0 и выше. В районе 100 я делаю ресет. Но когда я пытаюсь вернуться после перезагрузки Arduino к сохраненной переменной, она опять ноль. Помогите разобраться или скажите, что я ошибаюсь и она энергозависимая, это я про память.
#include <EEPROM.h>
int valueAddress = 0;
int value;
int i=0;
void setup(){
Serial.begin(9600);
}
void loop(){
   //Записывем переменную в память
   EEPROM.write(valueAddress,i);
   i++;
   delay(1000);
   //считываем сохраненную переменную
   value = EEPROM.read(valueAddress);
   Serial.println(value,DEC); // will print 123
}

Zaliv
Offline
Зарегистрирован: 05.03.2011

 Так у тебя первой же строкой в адрес загоняется 0, после ресета.

Modular
Offline
Зарегистрирован: 05.03.2011

 Тут с одной стороны ты в Setup может считывать сохраненное значение для i
void setup(){
    Serial.begin(9600);
    i= EEPROM.read(valueAddress); //получаем сохраненную переменную из памяти
}

Но надо понимать, что в этом случае, когда ты первый раз запустишь программу, то она считает данные из этого адреса, а там неизвестно что будет. Тебе надо предусмотреть механизм обнуления переменной и ее отображения в памяти. Можно по нажатию кнопки, а можно по команде с компьютера через Serial.

parnas
Offline
Зарегистрирован: 06.04.2011

 Спасибо. я кажется все понял. буду делать кнопку для ресета.