Содержание
2Установка драйвера для программатора
Подключим программатор к USB-порту компьютера. Скорее всего, через какое-то небольшое время операционная система сообщит, что ей не удалось найти драйвер для данного устройства.
Сообщение об отсутствии драйвера для USBasp программатора
В этом случае скачаем драйвер для программатора с официального сайта. Распакуем архив и установим драйвер стандартным способом. В диспетчере устройств должен появиться программатор USBasp. Теперь программатор готов к работе. Отключаем его от компьютера.
Установка драйвера для USBasp программатора
Если вы испытываете трудности с установкой драйвера для USBasp программатора, то вам поможет статья «Как установить драйвер для программатора USBasp в Windows 8 и Windows 10».
Питание
Arduino Pro Mini может быть запитан от различных источников:
- через макетную плату;
- через переходник FTDI, подсоединенный к шестиконтактному разъему;
- от стабилизированного источника питания с напряжением 3.3В или 5В (в зависимости от модели), подключенного к выводу Vcc.
Кроме того, на плате есть встроенный стабилизатор напряжения, благодаря которому допускается подавать на плату напряжение питания величиной до 12В. Если для питания платы используется нестабилизированный источник питания, убедитесь, что он подсоединен к выводу «RAW», а не VCC.
Ниже перечислены выводы питания, расположенные на плате:
- RAW. Для питания платы от нестабилизированного источника напряжения.
- VСС. Стабилизированное напряжение 3.3В или 5В.
- GND. Выводы земли.
Память
Объем флеш-памяти программ микроконтроллера ATmega328 составляет 32 КБ (из которых 2 КБ используются загрузчиком). Микроконтроллер также имеет 1 КБ памяти SRAM и 512 байт EEPROM (из которой можно считывать или записывать информацию с помощью библиотеки EEPROM).
Сборка Arduino Pro Mini
Arduino Pro Mini, после покупки выглядит не очень презентабельно. Рельсы контактов идут в комплекте отдельно. Перед тем как паять контакты, ознакомьтесь с рекомендациями, которые приведены ниже.
Во первых, определитесь, как вы будете подключать внешний USB конвертер для заливки программы на вашу плату Arduino Pro Mini. Контакты для программирования платы — это отдельная рельса из шести пинов, которые подписаны “BLK”, “GND”, “VCC”, “RXI”, “TXO”, и “GRN”. Так как модуль FTDI Basic поставляется с контактами типа мама, лучше всего установить рельсу с контактами типа папа.
На фото ниже показана плата Arduino Pro Mini, на которой установлены все пины типа папа. Таким образом, очень удобно устанавливать Arduino Pro Mini непосредственно на макетную плату
Обратите внимание, что контакты для программирования припаяны «наоборот»
В общем, вариантов для сборки достаточно много. Можно припаять контакты типа папа для установки на брэдборд, можно припаять контакты с выходом типа мама. Тогда будет удобно подключать устройства с коннекторами типа папа. Ну и вообще, можно напрямую припаять провода к контактам на на Arduino Pro Mini.
На фото ниже приведен пример проекта на Arduino Pro Mini, в котором на плате используются как прямые рельсы контактов так и рельсы под углом 90 градусов.
Эта возможность — припаять контакты именно так как вам удобно под проект — одна из потрясающих фич Arduino Pro Mini.
3Схема подключенияArduino к программатору
Соединяем ISP-разъём программатора с выводами на Arduino Pro Mini согласно приведённой схеме.
Схема подключения Arduino Pro Mini к USBasp программатору
Воспользуемся макетной платой и соединительными проводами – это будет быстро и надёжно.
Плата Arduino Pro Mini подключена к USBasp программатору
Если вы планируете часто использовать платы Arduino Pro или Pro Mini в своей работе, то удобно будет спаять специальный переходник для быстрого подключения платы Arduino к программатору. На фото представлен мой вариант такого переходника.
Переходник для быстрого подключения платы Arduino Pro Mini к программатору USBasp
Прошивка Arduino mini с использованием Arduino Uno или Nano
Чтобы прошить один Arduino через другой, нам понадобятся 2 платы Arduino, соединительные провода, USB-кабель и компьютер. Я покажу вам, как прошить Arduino Pro Mini с Arduino Nano, но вы можете использовать другие платы Arduino с такими же инструкциями, такие как Uno, Mega и т. Д.
Для начала нужно настроить нашу плату, которая будет выполнять функции программиста. Для этого подключите его к USB-компьютеру и перейдите в Arduino IDE. В примерах уже есть готовый эскиз, написанный специально для этой цели.
Выбор программиста
Выберите этот эскиз и шейте его. Теперь мы готовы подключить Arduino Pro Mini. Подключаем так:
Ардуино Нано.> Arduino Pro Mini
- 5v> Vcc
- GND> GND
- D10> Rst
- D11> D11
- D12> D12
- D13> D13
Для меня это выглядит так:
Arduino Pro Mini с помощью Arduino Nano
Далее нам нужно установить нашу плату прошивки и тип программатора «Arduino as ISP» в меню «Инструменты»:
Теперь мы можем прошить наш Arduino Pro Mini. Откройте или сохраните нужную прошивку. Быть осторожен! Стандартная кнопка загрузки эскизов нам не подходит. По умолчанию он загружает прошивку без использования программатора. Таким образом, мы будем прошивать микроконтроллер, который должен выступать в роли программиста. Чтобы предотвратить это, зайдите в меню эскиз >> Скачать через программатор.
Подключение платы Arduino Pro Mini
Для соединения с компьютером используется специальный кабель FTDI FT232RL (или CH340G), содержащий преобразователь интерфейса USB–USART. Микроконтроллер содержит интерфейс USART, его сигналы RX и ТХ выведены на торцевую часть платы. Специальный кабель подключается к этим входам Arduino Pro Mini, а также к контактам VCC и GND. При этом питание 5 В поступает в модуль от персонально компьютера. Существуют соединители, имеющие также очень важный контакт DTR. Сигнал на этом контакте автоматически формирует сигнал сброса перед обновлением программы в МК. Без сброса в нужный момент в начале записи программы невозможно записать новую программу. Следует учитывать порядок подключения контактов. Правильно соединение USART выполняется по схеме:
/*
DTR <——————> DTR
TXD <——————> RXD
RXD <——————> TXD
VCC <——————> VCC
GND НЕ ПОДКЛЮЧЁН CTS
GND <——————> GND
*/
1 |
/* DTR <——————> DTR TXD <——————> RXD RXD <——————> TXD VCC <——————> VCC GND НЕ ПОДКЛЮЧЁН CTS GND <——————> GND */ |
Прошивка arduino pro mini
Прошивка arduino pro mini
Миниатюрные размеры платы не позволяют прошить ее без внешней помощи. Есть несколько способов заливки скетча в микроконтроллер:
- Через адаптер USB в TTL;
- Через Ардуино Уно;
- Через SPI интерфейс с помощью любой платы ардуино с разъемом для подключения к компьютеру.
Самым простым методом является первый.
Прошивка через адаптер USB в TTL
В продаже можно найти специальный адаптер – UART переходник. Видов таких переходников много, стоимость каждого изделия невысокая. Советуется приобретать переходники с контактами RST или DTR, они упрощают процесс прошивки.
Для прошивки нужно подключить адаптер в Ардуино: нужно соединить земли с одного и другого устройства, Vcc – на +5В или +3,3 В (в зависимости от модели), RX – TX, TX – RX. Затем конструкцию нужно подключить к компьютеру, установить драйвер и начать прошивку. Компьютер определит, к какому порту подключена плата. Драйвер можно скачать с официального сайта. Скачанный архив нужно распаковать и установить.
Затем нужно запустить среду разработки Adruino IDE, выбрать нужную плату и номер порта и загрузить микропрограмму. Это делается следующим образом:
- Нажать «Загрузить»;
- Затем начнется компиляция – появится надпись «Компиляция скетча»;
После появление надписи «Загружаем» нужно нажать на плате кнопку Reset (в переходниках с RST или DTR нажимать кнопку не нужно).
Важно! Нажатие на Reset должно быть кратковременным.
Скетч будет загружен в микроконтроллер. Об успешном окончании процедуры можно понять по мигающему светодиоду.
Прошивка через Ардуино Уно
Для прошивки потребуется классическая плата Ардуино Уно в DIP корпусе. На ней должен быть специальный разъем, из которого нужно вытащить аккуратно микроконтроллер
Важно делать все действия внимательно, чтобы не погнуть ножки процессора
Проводами нужно подключить arduino pro mini к разъему. Как подключить контакты – RX-RX, TX-TX, GND-GND, 5V-VCC, RST-RST.
После подключения можно начать стандартную загрузку скетча через Arduino IDE.
Прошивка через SPI интерфейс
Этот способ является самым неудобным и трудоемким. Прошивание платы производится в 2 этапа:
Прошивка микроконтроллера Ардуино Уно как ISP программатора;
Настройка среды разработки и загрузка кода в Arduino Pro Mini.
Алгоритм проведения первого этапа:
- Запуск среды разработки Arduino IDE;
- Открытие «Файл» – «Примеры» – «11. ArduinoISP» – «ArduinoISP»;
- Далее «Инструменты» – «Плата» – «Ардуино уно»;
- «Инструменты» – «Порт», и выбирается нужный номер COM порта;
- Далее нужно произвести компиляцию и загрузить код в Ардуино Уно.
Затем обе платы нужно соединить проводниками по приведенной схеме: 5V – VCC, GND – GND, MOSI (11) – MOSI (11), MISO (12) – MISO (12), SCK (13) – SCK (13).
Теперь нужно настроить Arduino IDE для Arduino Pro Mini. Это делается следующим образом:
«Инструменты» – «Плата» – выбор нужной платы Arduino Pro Mini;
- В том же меню выбирается «Процессор» – выбор соответствующего процессора с нужной тактовой частотой;
- Затем нужно установить порт, к которому подключена плата;
- «Инструменты» – «Программатор» – Arduino as ISP;
- Затем нужно загрузить скетч через программатор.
Важно отметить, что загрузка кода должна происходить через специальное меню «загрузить через программатор». Здесь можно запутаться, потому такой способ и неудобен
Загрузка обычным способом приведет тому, что код зальется в Ардуино Уно.
После проведенной загрузки перепрошить микроконтроллер через переходник больше не получится. Придется заливать новый bootloader через «записать загрузчик».
Если при каком-либо виде загрузки прошивки возникают проблемы, нужно проверить подключение платы.
Arduino Pro Mini: распиновка платы
Характеристики Arduino Pro Mini 5V не отличаются от платы Arduino Nano. Основное различие состоит в отсутствии микросхемы для прошивки Pro Mini по USB-UART. Связь с ПК производится по кабелю FTDI или с помощью дополнительной платы Sparkfun. Благодаря этому размеры платы более компактные, что позволяет использовать платформу в готовых мини-проектах, где важны небольшие габариты комплектующих.
Распиновка Arduino Pro Mini ATmega328 / ATmega168
Нумерация портов и их назначение полностью дублируют плату Arduino UNO r3. Из 14 портов ввода – вывода, 6 портов могут работать в режиме ШИМ с разрешением 8 бит. Последовательная шина UART находится на портах 0 (RX) и 1 (TX), связь по протоколу I2C на Pro Mini Arduino с LCD дисплеем осуществляется на аналоговых портах с дополнительными функциями в работе: порт A4 (SDA) и порт A5 (SCL).
Arduino Micro
Так как ардуино микро и про микро практически не отличаются друг от друга, я расскажу подробнее про одну из них.
Характеристики:
- Микроконтроллер: ATmega32u4
- Предельное напряжение питания: 5-20 В
- Рекомендуемое напряжение питания: 7-12 В
- Цифровых вводов/выводов: 20 (18 в Pro версии)
- ШИМ: 7 цифровых пинов могут быть использованы как выводы ШИМ (5 в Pro версии)
- Аналоговые выводы: 12 (4 в Pro версии)
- Максимальная сила тока: 40 mAh с одного вывода и 500 mAh со всех выводов.
- Flash память: 32 КБ
- SRAM: 2,5 КБ
- EEPROM: 1 КБ
- Тактовая частота: 16 МГц
Подключение питания к Arduino Micro
Этот микроконтроллер можно питать через порт micro-USB от компьютера, паувербанка или от адаптера, подключенного в розетку.Так же пин +5V является не только выводом, но и вводом. Можно подавать ток на него и все это будет работать только при условии, что напряжение подаваемого тока строго равно пяти вольтам! Еще можно подавать постоянный ток с напряжением от 6 до 20 вольт на пин VIN. Это предельные значения! При подачи напряжения 20 вольт на плате будет сильно греться стабилизатор напряжения вплоть до выхода из стоя. Если же подавать 5 вольт, то ардуинка может вообще не заработать. Если и заработает то на цифровых пинах напряжение будет ниже 5 вольт. Это связанно с тем, что стабилизатор напряжения имеет не 100% КПД. Рекомендуемое напряжение для питания через пин VIN — от 7 до 12 вольт.
4Загрузка скетча в Arduinoс помощью программатора USBasp
Откроем скетч, который хотим загрузить в память микроконтроллера. Для примера пусть это будет мигание светодиодом: Файл Образцы 01. Basics Blink.
Подключаем программатор с подключённым к нему Arduino Pro Mini к компьютеру. Для того чтобы загрузить скетч в Ардуино с помощью программатора, можно поступить несколькими способами.
- Через меню Файл Загрузить через программатор.
- Используя сочетание клавиш Ctrl + Shift + U.
- Зажав клавишу Shift, нажать на кнопку со стрелкой вправо , которая обычно используется для загрузки скетча в память Ардуино стандартным способом.
Загрузка скетча в Arduino Pro Mini с помощью программатора USBasp
Это абсолютно эквивалентные способы, выбирайте самый удобный для себя. Это всё, программа «залита» в память микроконтроллера.
Обратите внимание
Если Arduino IDE выдаст предупреждение: warning: cannot set sck period. please check for usbasp firmware update. Не паникуйте, скетч всё равно записался в память микроконтроллера и будет работать.
3Схема подключенияArduino к программатору
Соединяем ISP-разъём программатора с выводами на Arduino Pro Mini согласно приведённой схеме.
Схема подключения Arduino Pro Mini к USBasp программатору
Воспользуемся макетной платой и соединительными проводами – это будет быстро и надёжно.
Плата Arduino Pro Mini подключена к USBasp программатору
Если вы планируете часто использовать платы Arduino Pro или Pro Mini в своей работе, то удобно будет спаять специальный переходник для быстрого подключения платы Arduino к программатору. На фото представлен мой вариант такого переходника.
Переходник для быстрого подключения платы Arduino Pro Mini к программатору USBasp
Как запрограммировать Arduino Pro Mini с помощью программатора
В жизни начинающего ардуинщика рано или поздно наступает момент, когда хочется сэкономить на размере своего изделия, не жертвуя при этом функциональностью.
И тогда Arduino Pro Mini – отличное для этого решение! За счёт того, что у этой платы отсутствует встроенный USB-разъём, она в полтора раза меньше Arduino Nano. Но для того, чтобы её запрограммировать, придётся приобрести дополнительный – внешний – USB-программатор.
О том, как «залить» написанную программу в память микроконтроллера и заставить Arduino Pro Mini работать, и пойдёт речь в этой статье.
Нам понадобится:
1Программатор для Arduino
- Разъём типа USB-A используется, понятно, для подключения программатора к компьютеру.
- ISP-соединитель нужен для подключения к программируемой плате.
- Джампер JP1 контролирует напряжение на выводе VCC ISP-коннектора. Оно может быть 3,3 В или 5 В. Если целевое программируемое устройство имеет собственный источник питания, нужно убрать перемычку.
- Джампер JP2 используется для перепрошивки самого программатора; в данной статье этот вопрос не рассматривается.
- Перемычка JP3 нужна, если тактовая частота целевого устройства ниже 1,5 МГц.
- Светодиоды показывают: G – питание подаётся на программатор, R – программатор соединён с целевым устройством.
USBasp-программатор и назначение его частей
2Установка драйвера для программатора
Подключим программатор к USB-порту компьютера. Скорее всего, через какое-то небольшое время операционная система сообщит, что ей не удалось найти драйвер для данного устройства.
Сообщение об отсутствии драйвера для USBasp программатора
В этом случае скачаем драйвер для программатора с официального сайта. Распакуем архив и установим драйвер стандартным способом. В диспетчере устройств должен появиться программатор USBasp. Теперь программатор готов к работе. Отключаем его от компьютера.
Установка драйвера для USBasp программатора
Если вы испытываете трудности с установкой драйвера для USBasp программатора, то вам поможет статья «Как установить драйвер для программатора USBasp в Windows 8 и Windows 10».
3Схема подключенияArduino к программатору
Соединяем ISP-разъём программатора с выводами на Arduino Pro Mini согласно приведённой схеме.
Схема подключения Arduino Pro Mini к USBasp программатору
Воспользуемся макетной платой и соединительными проводами – это будет быстро и надёжно.
Плата Arduino Pro Mini подключена к USBasp программатору
Если вы планируете часто использовать платы Arduino Pro или Pro Mini в своей работе, то удобно будет спаять специальный переходник для быстрого подключения платы Arduino к программатору. На фото представлен мой вариант такого переходника.
Переходник для быстрого подключения платы Arduino Pro Mini к программатору USBasp
3Настройка Arduino IDEдля работы с программатором
Открываем среду разработки Arduino IDE. Выбираем нужную плату через меню: Инструменты Плата Arduino Pro or Pro Mini (Tools Board Arduino Pro or Pro Mini).
Нужно также выбрать тип микроконтроллера, который задаётся через меню Инструменты Процессор. У меня это ATmega 168 (5V, 16 MHz), у вас может быть другой. Это обычно написано на самом корпусе микроконтроллера и хорошо видно под увеличительным стеклом.
Настройка Arduino IDE для работы с программатором
Выберем тип программатора: Инструменты Программатор USBasp (Tools Programmer USBasp).
Укажем тип программатора в Arduino IDE
4Загрузка скетча в Arduinoс помощью программатора USBasp
Откроем скетч, который хотим загрузить в память микроконтроллера. Для примера пусть это будет мигание светодиодом: Файл Образцы 01. Basics Blink.
Подключаем программатор с подключённым к нему Arduino Pro Mini к компьютеру. Для того чтобы загрузить скетч в Ардуино с помощью программатора, можно поступить несколькими способами.
- Через меню Файл Загрузить через программатор.
- Используя сочетание клавиш Ctrl + Shift + U.
- Зажав клавишу Shift, нажать на кнопку со стрелкой вправо , которая обычно используется для загрузки скетча в память Ардуино стандартным способом.
Загрузка скетча в Arduino Pro Mini с помощью программатора USBasp
Это абсолютно эквивалентные способы, выбирайте самый удобный для себя. Это всё, программа «залита» в память микроконтроллера.
Обратите внимание
Если Arduino IDE выдаст предупреждение: warning: cannot set sck period. please check for usbasp firmware update. Не паникуйте, скетч всё равно записался в память микроконтроллера и будет работать.
Сравнение характеристик разных плат Ардуино
Основная характеристика, по которой Ардуино про мини отличается от остальных плат – это размеры. Габариты Arduino Pro Mini составляют всего 1,8 см х 3,3 см. Немного большую длину имеет плата Ардуино Нано – 1,9 см х 4,3 см. Плата Ардуино Уно больше примерно в 2 раза, ее габариты составляют 6,9 см х 5,3 см. Arduino Mega имеет самые крупные габариты – 10,2 см на 5,4 см.
Количество пинов также различно. Ардуино про мини, как Ардуино Нано и Ардуино Уно, имеет 14 цифровых пинов. Ардуино Мега оснащена 54 цифровыми входами/выходами, из которых 15 поддерживают ШИМ.
Важное отличие Arduino Pro Mini от остальных плат – отсутствие прошивки по USB-UART. Остальные микроконтроллеры можно прошить таким способом, кроме Ардуино Нано
Она прошивается с помощью преобразователя rt232.
3Схема подключенияArduino к программатору
Соединяем ISP-разъём программатора с выводами на Arduino Pro Mini согласно приведённой схеме.
Схема подключения Arduino Pro Mini к USBasp программатору
Воспользуемся макетной платой и соединительными проводами – это будет быстро и надёжно.
Плата Arduino Pro Mini подключена к USBasp программатору
Если вы планируете часто использовать платы Arduino Pro или Pro Mini в своей работе, то удобно будет спаять специальный переходник для быстрого подключения платы Arduino к программатору. На фото представлен мой вариант такого переходника.
Переходник для быстрого подключения платы Arduino Pro Mini к программатору USBasp
Прошивка Arduino Pro Mini с использованием специального программатора
Вы можете купить специального программиста здесь. Это стоит меньше, чем один доллар. Если вы часто используете Arduino Pro Mini, этот программатор значительно упростит и ускорит процесс прошивки.
Чип CH340 используется для преобразования серии USB. Чтобы ваш компьютер правильно его идентифицировал, вам необходимо установить специальный драйвер. Загрузите и установите драйвер CH340
Arduino очень легко прошить с помощью программиста. Вам необходимо подключить программатор к Arduino Pro Mini следующим образом:
- Vcc Vcc
- GND GND
- RX1 TXD
- TX0 RXD
Подключаем программатор к компьютеру и проверяем, нужны ли ему драйверы. Если это определяется как «неустановленное устройство», загрузите и установите драйвер. Это легко найти, введя «модель драйвера вашего программиста» в поисковик. Например, «драйвер CP2102». Затем запустите Arduino IDE. Выберите модель вашей доски. Затем перейдите в меню Инструменты.> Программист и выберите своего программиста. Далее откройте нужный эскиз и загрузите его с помощью пункта меню Эскиз.> Скачать через программатор.
Если ваш программист не поддерживает программный сброс, вам придется вручную нажимать кнопку сброса на Arduino Pro Mini во время рисования эскизов. Это должно быть сделано, как только в Arduino IDE появится строка, в которой эскиз был скомпилирован.
Вот и все. Мы успешно прошили Arduino Pro Mini с помощью программиста.
Распиновка Arduino Pro Mini
Каждый из 14 цифровых выводов Pro, используя функции , , и , может настраиваться как вход или выход. Выводы работают при напряжении 3,3 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы имеют соединение с выводами TX-0 и RX-1 блока из шести выводов.
- Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции .
- ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи .
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
- LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
На платформе Pro Mini установлены 6 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Четыре из них расположены на краю платформы, а другие два (входы 4 и 5) ближе к центру. Измерение происходит относительно земли до значения VCC. Некоторые выводы имеют дополнительные функции:
I2C: A4 (SDA) и A5 (SCL). Посредством выводов осуществляется связь I2C (TWI), для создания которой используется библиотека Wire.
Существует дополнительный вывод на платформе:
Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Структура памяти Ардуино, где располагается скетч и данные
На микроконтроллере Ардуино имеется 3 вида памяти – флеш-память, которая используется для хранения скетчей, ОЗУ для хранения переменных и EEPROM для хранения постоянной информации. Из этих типов памяти флеш-память и EEPROM являются энергонезависимыми, то есть информация сохраняется при выключении питания. ОЗУ используется только для хранения данных, которые имеют отношение к исполняемой программе.
Микроконтроллер ATmega168, который используется на части плат Ардуино, имеет 16 Кб флеш-памяти, 1024 байта для ОЗУ и 512 байт EEPROM
Важно обратить внимание на малый объем ОЗУ. Большие программы могут полностью ее израсходовать, что приведет к сбою в программе. По этой причине нужно следить за тем, сколько строк занимает программа, и по возможности удалять лишнее
Уменьшить объем кода можно несколькими способами:
По этой причине нужно следить за тем, сколько строк занимает программа, и по возможности удалять лишнее. Уменьшить объем кода можно несколькими способами:
- Можно отправить часть информации на компьютер.
- Для таблиц и других крупных массивов использовать минимальный тип данных для хранения.
- Данные, которые остаются неизменными, можно объявить константами при помощи слова const перед объявлением переменной.
- Меньше использовать рекурсию. При ее вызове в памяти, называемой стеком, выделяется фрагмент, в котором хранятся различные данные. Если часто вызывать рекурсию, стеки будут занимать большой объем памяти и могут израсходовать ее.
- Неизменяемые строки можно сохранять во флеш-памяти во время работы программы. Для этого используется функция PROGMEM.
На объем памяти не влияют размер имени переменных и комментарии. Компилятор устроен таким образом, что не включает эти данные в скомпилированный скетч.
Для измерения объема занимаемой памяти ОЗУ используется скетч из библиотеки MemoryFree. В ней имеется специальная функция freeMemory, которая возвращает объем доступной памяти. Также эта библиотека широко используется для диагностики проблем, которые связаны с нехваткой памяти.
Оптимизация флеш-памяти. Как только будет окончена процедура компиляции, в окне появится информация о занимаемой памяти кодом. Если скетч занимает большую часть памяти, нужно произвести оптимизацию использования флеш-памяти:
- Использование констант. Аналогично как и для ОЗУ задавать неизменяющиеся значения константами.
- Удалить ненужные Serial.println. Эта команда используется, когда нужно увидеть значения переменных в разных местах программы, нередко эта информация просто не нужна. При этом команды занимают место в памяти, поэтому, убедившись в корректной работе программы, некоторые строки можно удалить.
- Отказ от загрузчика – можно программировать микроконтроллер через контакты ICSP на плате с использованием аппаратных программаторов.
Флеш память является безопасным и удобным способом хранения данных, но некоторые факторы ограничивают ее использование. Для флеш-памяти характерна запись данных блоками по 64 байта. Также флеш-память гарантирует сохранность информации для 100000циклов записи, после чего информация искажается. Во флеш-памяти имеется загрузчик, который нельзя удалять или искажать. Это может привести к разрушению самой платы.
EEPROM память используется для хранения всех данных, которые потребуются после отключения питания. Для записи информации в EEPROM нужно использовать специальную библиотеку EEPROM.h, которая входит в число стандартных библиотек в Arduino IDE. Чтение и запись информации в EEPROM происходит медленно, порядка 3 мс. Также гарантируется надежность хранения данных для 100000 циклов записи, потому лучше не выполнять запись в цикле.