Найти в Дзене

Ракетный высотомер r"bot (05)

Предыдущая статья Для нормальной работы Ардуино с кнопкой необходим резистор, одним выводом он присоединяется к минусу, а вторым к пину к которому присоединим кнопку. Второй же вывод кнопки присоединяем к плюсу, как на схеме (см. рис 007.1). Все остальное объяснение в скече «r-bot-button» (скачать с Яндекс диска.) Стенд готов, все что нужно для базовой комплектации сконфигурировано и присоединено. Но, прежде чем выложить финальный скеч, затрону еще одну важную тему, такую, как - сохранение данных. Не всегда ракета приземляется удачно, или ее поиски могут занять много времени. В первом случае прибор может повредиться, во втором разрядиться аккумулятор, и данные апогея (которые лежат в оперативной памяти) мы потеряем. Но в микросхеме Ардуино, есть EEPROM. Это такая разновидность постоянной электронной памяти, и грех ей не воспользоваться. Объем памяти небольшой, но некоторое количество значений высот, которые достигли наши ракеты, он вполне сможет сохранить. Часть кода, который используе
Оглавление

Предыдущая статья

Кнопка

Для нормальной работы Ардуино с кнопкой необходим резистор, одним выводом он присоединяется к минусу, а вторым к пину к которому присоединим кнопку. Второй же вывод кнопки присоединяем к плюсу, как на схеме (см. рис 007.1).

рис 007.1
рис 007.1

Все остальное объяснение в скече «r-bot-button» (скачать с Яндекс диска.)

EEPROM

Стенд готов, все что нужно для базовой комплектации сконфигурировано и присоединено. Но, прежде чем выложить финальный скеч, затрону еще одну важную тему, такую, как - сохранение данных. Не всегда ракета приземляется удачно, или ее поиски могут занять много времени. В первом случае прибор может повредиться, во втором разрядиться аккумулятор, и данные апогея (которые лежат в оперативной памяти) мы потеряем. Но в микросхеме Ардуино, есть EEPROM. Это такая разновидность постоянной электронной памяти, и грех ей не воспользоваться. Объем памяти небольшой, но некоторое количество значений высот, которые достигли наши ракеты, он вполне сможет сохранить.

Часть кода, который используется для работы с EEPROM я адаптировал для высотомера и спрятал в собственный класс (библиотеку) MyEepromMemory.zip (скачать с Яндекс диска). Его можно установить через стандартное меню IDE Arduino - действуя по инструкции описанной в статье «Барометр».

Затем берем с Яндекс диска скеч «r-bot-eeprom» и открываем в IDE.

После заливки его на Ардуино, открываем Монитор порта и наблюдаем мелькание чисел (рис.008.1а).

рис 008.1
рис 008.1

Altitude - это текущее изменение, а hMax - это максимальное значение Altitude, которое было зафиксировано с момента загрузки скеча, или с момента включения прибора с уже загруженным скечем. Если вдруг Altitude станет больше hMax, то hMax немедленно примет значение Altitude.

Нажмем RESET на плате, и на три секунды увидим таблицу (рис.008.1б). EEPROM[ 0-19] = 0, это пустые ячейки памяти в которые можно записывать hMax. Нажмем на тактовую кнопку и посмотрим на монитор (рис.008.1в). Мы увидим, что hMax записался в EEPROM[0].

Если (обязательно) попеременно нажимать то RESET, то тактовую кнопку, получим несколько значений в памяти (рис.008.2а). Притом последнее значение будет в EEPROM[0], предпоследнее в EEPROM[1] и т.д.

Отключим Ардуино от компьютера и включим через некоторое время, хоть через неделю. Зайдем в монитор и нажмем на плате RESET. На мониторе отобразится тот же список (рис.008.2б).

рис.008.2
рис.008.2

Все счастливы, память работает.

Но если вам по какой-то необходимости нужно почистить память, то это сделать не сложно. В скече в массиве VALI[3] меняем любое число из заключенных в фигурные скобки, перезагружаем скеч и, вуаля! Снова везде нули!

Окончание.