Ви не увійшли.
Если еще актуально.
Все делается намного проще:
EEPROM.put( eeAddress, customVar )
EEPROM.get( eeAddress, customVar )
customVar - любой объект, лишь бы влез в EEPROM.
Здравствуйте.Ищу примеры (для обучения и реализации в МЕГЕ2560) использования ввода констант в ОЗУ и ЕЕПРОМ с клавиатуры или кнопок с контролем на 2х20 лсд.Наткнулся на ваш пост(то что надо.)В ЕЕПРОМ изредка надо вводить размер поправки .А в ОЗУ -рабочий размер.В программе они суммироваться должны и при перемещении энкодер считает эту сумму и при отработке размера прекращается перемещение.Не пойму-как при наборе размера записать его в ОЗУ ?Может скините свой скетч для обучения ?Спасибо.
поздравлю, первый этап вы прошли. )
второй указатели на структуры
eeprom_read_block((void*)&settings, (void*)0, sizeof(settings));
тогда это вам потребуется )
void EEPROMWriteInt(int p_address, unsigned long p_value)
{
byte four = ((p_value >> 0) & 0xFF);
byte three = ((p_value >> 8) & 0xFF);
byte two = ((p_value >> 16) & 0xFF);
byte one = ((p_value >> 24) & 0xFF);
EEPROM.write(p_address, four);
EEPROM.write(p_address + 1, three);
EEPROM.write(p_address + 2, two);
EEPROM.write(p_address + 3, one);
}
unsigned long EEPROMReadInt(int p_address)
{
unsigned long four = EEPROM.read(p_address);
unsigned long three = EEPROM.read(p_address + 1);
unsigned long two = EEPROM.read(p_address + 2);
unsigned long one = EEPROM.read(p_address + 3);
return ((four << 0) & 0xFF) + ((three << 8) & 0xFFFF) + ((two << 16) & 0xFFFFFF) + ((one << 24) & 0xFFFFFFFF);
}
Сам себе помогаю. Вот функции записи в память лонгов и т.д. работает безотказно, а та хрень по ссылке замысловата и не рабочая
Вставляем в скетч и пишим четырех байтные значения
Создал отдельную папку в библиотеке EEPROM с расширением" h" а как дошло дело до применения, тут и начались проблемы. Чувствую без помощи не обойдусь.
void setDavl1() {// установка заданных параметров первого компрессора
unsigned long DavlNastr = 1;
lcd.clear();
while (Knopki() != 1) { // крутим цикл
byte KEY = Knopki(); // читаем состояние кнопок
delay(200);
lcd.setCursor(0, 0);
lcd.print("P Nactr= ");
lcd.setCursor(8, 0);
if( DavlNastr<1){lcd.setCursor(15,0); lcd.print(" ");} // выводим, запоминаем инфу
lcd.print(DavlNastr);
lcd.print("Pa");
lcd.blink();
lcd.setCursor(0, 1);
lcd.print("P Ustan= ");
lcd.setCursor(8, 1);
lcd.print(Davlenie1);
lcd.print("Pa");
// устанавливаем курсор согласно позиции
if ( KEY == 3) DavlNastr++; // крутим значения
else if ( KEY == 4) DavlNastr--;
}// конец цикла
EEPROM_writeAnything(0, DavlNastr);// это непонятка с которой нужно разобраться
delay(500);
lcd.noBlink();
lcd.clear();
lcd.print(" Saved");
}
Это кусочек, результатом записи которого и должно быть 7 значное число и читаться оно должно в любом месте программы, которая значительно превышает эту одну из функций настройки
При написании скетча столкнулся с проблемой записи в EEPROM чисел значением более 255. Как это делать???? Мне нужно запоминать...в одном случае до 3500, в другом случае 500000