сохранение переменных в EEPROM

Тема в разделе "Arduino & Shields", создана пользователем Толик Иванов, 7 дек 2015.

  1. ЩАС

    ЩАС Нуб

     
  2. ЩАС

    ЩАС Нуб

    Ещё раз спасибо всем, да вы правильно поняли rsMode - это массив указателей на строки wchar*.... ребята я бы с огромной радостью вылажил бы весь код и мне было гораздо проще, но с этим проблема в части доступа к связи , скажем так - интернет спутниковый и ....не частный, доступ только с устройств с разрешённым IP, соответственно и телефон с короной я пишу .... не частный на который я ни хре.... не могу грузить. Ладно это лирика ((( я конечно могу и если вы хотите я сокращу по максимуму код и напечатаю его в рукопашную на телефоне, пусть это ещё тот геморрой, но мне кажется , что эт будет такая абракадабра )))
    Ну ближе к телу ... я уже пытался EEPROM.put(addresss, rs_Mode) - скетч компилируется но на дисплее твориться полный хаос, меняется всё- от времени на таймерах на десятки тысяч до названия дорожных покрытий на эроглифы.... вообщем беда, может выложить какие нужные вам для понимая отрезки скетча или какая нужна инфа ? Что то я вообще уже запутался (((
     
    Последнее редактирование: 31 июл 2018
  3. ЩАС

    ЩАС Нуб

    У меня по скетчу и вывод на дисплей выбранного дорожного покрытия при отработке инкодера так же через тоже:
    lcd.prind(rsMode[rs_Mode]);
    И до попыток сохранения покрытия всё нормально работало.
     
  4. ЩАС

    ЩАС Нуб

    Для барадатого дяди программиста всё банально просто, а я очень даже новичок. Проблем с пониманием работы EEPROM нет, помню все функции уже наизусть и что за что отвечает и что делает на стандартной библиотеке что предоставлена в ардуино IDE, проблема в другом ... читаем выше
     
  5. ЩАС

    ЩАС Нуб

    Ууууууураааааа разобрался !!!!! Всем спасибо за пинки .... ну и за их отсутствие тоже !
     
  6. ЩАС

    ЩАС Нуб

    Реальное объяснение ( расжевывание ) Гуру для новичка ( читать пи....очень новечка ) по моему вопросу выглядело бы так:
    for ( XXX i = 0; i < YYY; i++) {
    EEPROM.get(address, ZZZ);
    }
    Где XXX - смотри что используется char, wchar_t, float, struct, byte, int и т.д.
    Где YYY - цифра, в моём случае количество покрытий , т.е 3
    EEPROM.get - читает из EEPROM любой тип данный по:
    address - адрес ячейки для записи от 0 до 254 ( внимательно смотри что уже занято было ).
    Где ZZZ - данные для чтения, могут быть любым базовым типом, в моем случае byte rs_Mode. Вообщем, что хотим получить.
    С сохранением ( читай обновлением при изменении) ещё проще:
    EEPROM.put(address, ZZZ);
    Где EEPROM.put - записывает в EEPROM любой тип данных.
     
    Последнее редактирование: 31 июл 2018
  7. b707

    b707 Гуру

    еще один "знаток" прямой записи в ЕЕПРОМ пояился. мало было нам Паравоза :)
    toplon - зачем влезать в тему. в которой не шаришь?
    Оператор EEPROM.get(address, ZZZ);сам определяет размер переданных ему данных и корректно сохраняет их в ЕЕПРОМ. Функции типа описанных Write_any_byte и Read_any_byte - правильные по сути - давно встроены внутрь операторов EEPROM.put и EEPROM.get
     
    ostrov и ЩАС нравится это.
  8. ЩАС

    ЩАС Нуб

    Огромное спасибо Вам за доходчивые дополнения ))) Кстати буржуйскую Ардуино IDE очень даже хорошо подружились с кириллицей (wchar_t) кушает её только в путь и нормально всё выводиться на дисплей, ещё раз спасибо
     
  9. ЩАС

    ЩАС Нуб

     
  10. ЩАС

    ЩАС Нуб

    Вы обсолютно правы !!! :)
     
  11. ZAZ-965

    ZAZ-965 Гуру

    @topIon, а почему у вас цвет асфальта шестнадцатибитный? Почему не DeepColor?
    keepaddict.jpg
     
  12. Mitrandir

    Mitrandir Гуру

    На пешеходных его иногда красным красят
     
  13. parovoZZ

    parovoZZ Гуру

    И зачем так делать?
     
  14. parovoZZ

    parovoZZ Гуру

    А идентификаторы использовать - не, никак? Этим и отличается хоббийная разработка от профессиональной - в профессиональной продумывается абсолютно все. В хоббийной просто в лоб. Цвета заранее определить нельзя?
     
  15. b707

    b707 Гуру

    Речь была о строго конкретных данных. для хранения которых достаточно ОДНОГО БАЙТА. А вы тут развели огромные структуры в десятки байт. Вопрос - зачем так делать? - Чтобы показать. что вы умеете обращаться со структурами и адресами? - ну отлично... только это все, повторяю, давно реализовано в библиотеке EEPROM.h
    Изобретаем велосипед?
     
    ostrov нравится это.
  16. parovoZZ

    parovoZZ Гуру

    Я понимаю, что это всего лишь пример. Но зачем раздувать размер сохраняемых данных? 44 байта прекрасно сокращаются до 10, например.
     
    ostrov нравится это.
  17. topIon

    topIon Нуб

    Ребята, где ваш код? Если, что то предлагаете или не нравится, выкладывайте ваш код, а не флудите.
    Еще раз, это пример. Следующим этапом хотел показать как выковыривать отдельные куски данных,не читая всю структуру, к примеру для заполнения списка меню имен. Но лучше это выложу, всем куском, на другом форуме.
     
    Последнее редактирование: 2 авг 2018
  18. b707

    b707 Гуру

    Да нафик надо. Пусть ТС сам старается.
    И вообще, насколько я понял - его проблема не в доступе к ЕЕПРОМ а в логике. Он не понинимает не КАК сохранять - а ЧТО.
     
    parovoZZ нравится это.
  19. ostrov

    ostrov Гуру

    Тоже так считаю, иначе не обьяснить зачем название цвета хранить в EEPROM.
     
    parovoZZ нравится это.