Проверка/Оформление/Редактирование: Мякишев Е.А.
Эта статья затрагивает все платы Arduino, за исключением Due, которая имеет другую архитектуру.
В микроконтроллерах, которые используются на AVR-платах Arduino, есть три типа памяти:
- Flash-память (программная) – здесь хранится скетч Arduino
- SRAM (статичная память с произвольной выборкой) – здесь запущенный скетч создает переменные и манипулирует ими
- EEPROM – здесь программисты могут хранить долгосрочную информацию
Flash-память и EEPROM – это «неволатильные» типы памяти, т.е. информация в них сохраняется даже при выключенном питании. SRAM, наоборот – «волатильная» память, и данные, хранящиеся на ней, после выключения питания исчезнут.
Объемы этих типов памяти на чипе ATmega328 следующие:
- Flash-память – 32 Кб (из них 0,5 Кб используются загрузчиком)
- SRAM – 2 Кб
- EEPROM – 1 Кб
На чипе ATmega2560, которым оснащается плата Arduino Mega 2560, памяти побольше:
- Flash-память – 256 Кб (из них 8 Кб используются загрузчиком)
- SRAM – 8 Кб
- EEPROM – 4 Кб
Имейте в виду, что у модели Uno памяти типа SRAM не так уж много. Поэтому если в вашей программе много строк, то SRAM-память можно очень быстро израсходовать. К примеру, строчка кода вроде...
char message[] = "Я поддерживаю проект Cape Wind.";
...поместит в SRAM-память 32 байта (по байту на каждый символ плюс завершающее «\0»). На первый взгляд, это количество кажется не таким уж большим, но такими темпами недалеко и до 2040 байтов – особенно, если у вас много текста, который нужно показать на дисплее, или какая-нибудь большая таблица.
Если исчерпать память типа SRAM, скетч начнет сбоить самыми неожиданными способами. Его загрузка пройдет нормально, но он не запустится или запустится, но со странностями. Если это произошло, попробуйте закомментировать или сократить строки или другие структуры данных в скетче (не меняя код). Если этот метод сработал, то дело именно в том, что вы израсходовали SRAM.
Кроме того, при возникновении странностей можно попробовать следующее:
- Если ваш скетч «общается» с компьютером/ноутбуком, можно попробовать перенести на него данные/расчеты, тем самым уменьшив нагрузку на Arduino
- Если вы имеете дело с таблицами поиска или другими большими массивами данных, то для хранения значений используйте наиболее компактный тип данных. К примеру, если тип данных int занимает 2 байта, то byte – только 1 байт (но диапазон данных, которые он может хранить, меньше)
- Если во время работы скетча не нужно модифицировать какие-либо строки и прочие данные, их вместо SRAM можно хранить на flash-памяти (т.е. на программной памяти). Используйте для этого ключевое слово PROGMEM
Память EEPROM используется при помощи библиотеки EEPROM.
См.также
Внешние ссылки
Партнерские ресурсы |
---|
Криптовалюты |
|
---|
Магазины |
|
---|
Хостинг |
|
---|
Разное |
- Викиум - Онлайн-тренажер для мозга
- Like Центр - Центр поддержки и развития предпринимательства.
- Gamersbay - лучший магазин по бустингу для World of Warcraft.
- Ноотропы OmniMind N°1 - Усиливает мозговую активность. Повышает мотивацию. Улучшает память.
- Санкт-Петербургская школа телевидения - это федеральная сеть образовательных центров, которая имеет филиалы в 37 городах России.
- Lingualeo.com — интерактивный онлайн-сервис для изучения и практики английского языка в увлекательной игровой форме.
- Junyschool (Джунискул) – международная школа программирования и дизайна для детей и подростков от 5 до 17 лет, где ученики осваивают компьютерную грамотность, развивают алгоритмическое и креативное мышление, изучают основы программирования и компьютерной графики, создают собственные проекты: игры, сайты, программы, приложения, анимации, 3D-модели, монтируют видео.
- Умназия - Интерактивные онлайн-курсы и тренажеры для развития мышления детей 6-13 лет
- SkillBox - это один из лидеров российского рынка онлайн-образования. Среди партнеров Skillbox ведущий разработчик сервисного дизайна AIC, медиа-компания Yoola, первое и самое крупное русскоязычное аналитическое агентство Tagline, онлайн-школа дизайна и иллюстрации Bang! Bang! Education, оператор PR-рынка PACO, студия рисования Draw&Go, агентство performance-маркетинга Ingate, scrum-студия Sibirix, имидж-лаборатория Персона.
- «Нетология» — это университет по подготовке и дополнительному обучению специалистов в области интернет-маркетинга, управления проектами и продуктами, дизайна, Data Science и разработки. В рамках Нетологии студенты получают ценные теоретические знания от лучших экспертов Рунета, выполняют практические задания на отработку полученных навыков, общаются с экспертами и единомышленниками. Познакомиться со всеми продуктами подробнее можно на сайте https://netology.ru, линейка курсов и профессий постоянно обновляется.
- StudyBay Brazil – это онлайн биржа для португалоговорящих студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
- Автор24 — самая большая в России площадка по написанию учебных работ: контрольные и курсовые работы, дипломы, рефераты, решение задач, отчеты по практике, а так же любой другой вид работы. Сервис сотрудничает с более 70 000 авторов. Более 1 000 000 работ уже выполнено.
- StudyBay – это онлайн биржа для англоязычных студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
|
---|
Примеры Arduino |
---|
Стандартные функции |
---|
Основы |
|
---|
Цифровой сигнал |
|
---|
Аналоговый сигнал |
|
---|
Связь |
- ReadASCIIString - Анализ строки, состоящей из разделенных запятыми int-значений, и их последующее использование для управления RGB-светодиодом.
- ASCII Table - Демонстрирует продвинутые способы вывода данных на Serial Monitor.
- Dimmer - Изменение яркости светодиода при помощи движения мышкой.
- Graph - Отправка данных на компьютер и их графическое отображение в скетче Processing.
- Physical Pixel - Включение/выключение светодиода путем отправки данных со скетча Processing (или Max/MSP) на Arduino.
- Virtual Color Mixer - Отправка с Arduino на компьютер сразу нескольких значений, а затем их считывание при помощи скетча для Processing или Max/MSP.
- Serial Call Response - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»).
- Serial Call Response ASCII - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»). До передачи данные зашифровываются в ASCII.
- SerialEvent - Демонстрирует использование SerialEvent().
- Serial input (Switch (case) Statement) - Как совершать различные действия, беря за основу символы, присланные через последовательный порт.
- MIDI - Передача через последовательный порт сообщений с MIDI-нотами.
- MultiSerialMega - Использование двух последовательных портов на Arduino Mega.
|
---|
Управляющие структуры |
- If Statement - Как использовать оператор «if» для создания условий, опирающихся на входные аналоговые данные, при которых светодиод будет либо включаться, либо оставаться выключенным.
- For Loop - Управление несколькими светодиодами, чтобы они мигали, как LED-полоска у автомобиля Китт из сериала «Рыцарь дорог».
- Array - Вариация примера «For Loop», но с использованием массива.
- While Loop - Использование цикла while() для калибровки датчика. Калибровка включается при нажатии на кнопку.
- Switch Case - Как совершать какие-либо действия в зависимости от значений, полученных от датчика. Эквивалент примера «If Statement», но если бы условий было не два, а четыре. Этот пример демонстрирует, как дробить диапазон данных от датчика на четыре «суб-диапазона», а затем в зависимости от полученных результатов совершать одно из четырех действий.
- Switch Case 2 - Второй пример, демонстрирующий использование оператора switch. Показывает, как совершать различные действия в зависимости от определенных символов, полученных через последовательный порт.
|
---|
Датчики |
- ADXL3xx - Считывание данных с акселерометра ADXL3xx.
- Knock - Определение стука при помощи пьезоэлемента.
- Memsic2125 - Считывание данных с 2-осевого акселерометра Memsic2125.
- Ping - Определение объектов при помощи ультразвукового дальномера.
|
---|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
---|
Строки |
|
---|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
---|
Клавиатура |
- KeyboardMessage - Отправка текстовой строки при нажатии на кнопку.
- KeyboardLogout - Выход из текущей пользовательской сессии при помощи клавиатурных комманд.
- KeyboardSerial - Считывает байт, присланный через последовательный порт, а в ответ отсылает другой байт.
- KeyboardReprogram - Открывает новое окно в среде разработки Arduino, а затем перешивает Leonardo скетчем «Моргание».
|
---|
Мышь |
|
---|
Разное |
---|