Страница 1 из 4
Запись/чтение массива и строк в/из EEPROM
Добавлено: 29.10.2021{, 17:48}
AlexCrane
Набор простых блоков для записи/чтения массива и строк в/из EEPROM
1. Блок
Запись массива в EEPROM
Параметры:
- Адрес для записи - адрес куда сохраняем
- Массив - массив для записи
Входы:
- Запись - По переднему фронту сохраняем массив в EEPROM, использовать через RTrig
- Адрес - Адрес по которому сохраняем
Выходы:
- Адрес для следующего - адрес для следующего блока для записи
2. Блок
Чтение массива из EEPROM
Параметры:
- Адрес для чтения - адрес откуда читаем
- Массив - массив в который читаем
Входы:
- Читать - По переднему фронту читаем массив из EEPROM, использовать через RTrig
3. Блок
Запись массива String в EEPROM - Все аналогично блоку
Запись массива в EEPROM
4. Блок
Чтение массива String из EEPROM - Все аналогично блоку
Чтение массива из EEPROM
5. Блок
Запись строки в EEPROM
6. Блок
Чтение строки из EEPROM
5. Очистка EEPROM
ВНИМАНИЕ! Любой блок автоматически добавляет функции для чтения и записи строк в/из EEPROM. Если они не используются в проекте, то их можно отключить в параметрах.
Сами блоки:
Критическое обновление
Блоки в проекте (в примерах используются блоки ранних версий!!!):
Запись/чтение массива в/из EEPROM
Добавлено: 30.10.2021{, 16:58}
Утвш
Хорошие блоки. Спасибо. Жаль, со стрингами не дружат.
Запись/чтение массива в/из EEPROM
Добавлено: 30.10.2021{, 17:20}
AlexCrane
Утвш писал(а): ↑30.10.2021{, 16:58}
Хорошие блоки. Спасибо. Жаль, со стрингами не дружат.
В каком смысле?
Запись/чтение массива в/из EEPROM
Добавлено: 30.10.2021{, 17:34}
Dryundel
AlexCrane, идея хорошая, но может надо встроить R-триггер в блок записи?
Обязательно кто нибудь забудет поставить R-триггер и хана EEPROM.
Отправлено спустя 7 минут 9 секунд:
Я бы еще добавил опционально "Запись по изменению значения на входе", но тоже с оговоркой (предупреждением) в описании.
Запись/чтение массива в/из EEPROM
Добавлено: 30.10.2021{, 18:05}
Утвш
AlexCrane писал(а): ↑30.10.2021{, 17:20}
В каком смысле?
Сохранил массив String, а читаю одни кракозябры.
Запись/чтение массива в/из EEPROM
Добавлено: 30.10.2021{, 18:40}
AlexCrane
Обновил блок. Добавил возможность задания адреса со входа.
Dryundel писал(а): ↑30.10.2021{, 17:42}
Обязательно кто нибудь забудет поставить R-триггер и хана EEPROM.
Считаю это лишним. НО добавил этот пункт в описание.
Dryundel писал(а): ↑30.10.2021{, 17:42}
Я бы еще добавил опционально "Запись по изменению значения на входе", но тоже с оговоркой (предупреждением) в описании.
Используется метод update, т.е. лишний раз не пишет.
Запись/чтение массива в/из EEPROM
Добавлено: 30.10.2021{, 18:40}
AlexCrane
Утвш, Можно увидеть проект
Запись/чтение массива в/из EEPROM
Добавлено: 31.10.2021{, 07:01}
Утвш
AlexCrane писал(а): ↑30.10.2021{, 18:40}
Можно увидеть проект
К сожалению я сейчас на работе. Но если Вы считаете, что блоки должны работать со String массивами, то я попытаюсь еще повозиться. Если уж не получится, то попрошу помощи. Спасибо.
Запись/чтение массива в/из EEPROM
Добавлено: 31.10.2021{, 20:18}
Утвш
Возня моя результатов не дала. По прежнему, после обесточивания платы и заполнения String массива из EEPROM, из массива читаются кракозябры. С Integer массивами все проходит отлично. Прикладываю два тестпроекта с разными типами массивов.
Запись/чтение массива в/из EEPROM
Добавлено: 31.10.2021{, 22:06}
AlexCrane
Утвш, Прогнал в Протеусе, все четко работает
Запись/чтение массива в/из EEPROM
Добавлено: 01.11.2021{, 06:57}
Утвш
Не могу сказать, что меня это сильно утешило. Попробую поменять плату и комп.
Запись/чтение массива в/из EEPROM
Добавлено: 01.11.2021{, 19:08}
Утвш
Утвш писал(а): ↑01.11.2021{, 06:57}
Попробую поменять плату и комп.
Ничего это не изменило.
AlexCrane писал(а): ↑31.10.2021{, 22:06}
Прогнал в Протеусе, все четко работает
Выходит Протеус иногда шутит.
Запись/чтение массива и строк в/из EEPROM
Добавлено: 05.11.2021{, 09:45}
AlexCrane
Утвш, Переработал блоки, теперь массив строк можно сохранять в EEPROM
Утвш писал(а): ↑31.10.2021{, 20:18}
заполнения String массива из EEPROM, из массива читаются кракозябры
Вы правы, если напрямую сохранять String в EEPROM, то вместо строки сохраняется лишь указатель на строку, а не сама строка
Запись/чтение массива и строк в/из EEPROM
Добавлено: 06.11.2021{, 08:40}
Утвш
Ур-р-р-а! Заработало! Я уж, честно говоря, потерял надежду. Еще раз спасибо.
Запись/чтение массива и строк в/из EEPROM
Добавлено: 06.11.2021{, 09:38}
AlexCrane
Утвш, Какое практическое применение имеет блок записи динамических строковых массивов в EEPROM ??? Слишком ресурсозатратное это дело для avr.
Запись/чтение массива и строк в/из EEPROM
Добавлено: 07.11.2021{, 07:40}
Утвш
Пытаюсь сделать часы-напоминалку даты дней рождения. Хочу использовать строковый массив с возможностью внесения изменений с Nextion. А при отключении питания, надо как-то сохранять.
Запись/чтение массива и строк в/из EEPROM
Добавлено: 09.11.2021{, 08:35}
edyapd
И на какое количество дат хватает места?
Запись/чтение массива и строк в/из EEPROM
Добавлено: 26.12.2021{, 11:19}
OldRoman
Хороший блок.Но у меня ESP12+RTC при попытке использовать блок с адресом 50, компиляция не проходит в Arduino IDE.
Подскажите, пожалуйста,работает блок с ESP12 или я делаю что то криво.Спасибо.
Запись/чтение массива и строк в/из EEPROM
Добавлено: 26.12.2021{, 16:40}
AlexCrane
OldRoman, Добавил поддержку ESP, блок версии 1.3 в шапке
Запись/чтение массива и строк в/из EEPROM
Добавлено: 26.12.2021{, 18:52}
OldRoman
К сожалению при компиляции в Arduino: 1.8.15 на строке
EEPROM.update(address_ac, val_ac);
ошибка
'class EEPROMClass' has no member named 'update'