Монк - Программируем Arduino. Профессиональная работа со скетчами.

Здесь есть возможность читать онлайн «Монк - Программируем Arduino. Профессиональная работа со скетчами.» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: СПб., Год выпуска: 2017, ISBN: 2017, Издательство: Издательский дом Питер, Жанр: Программирование, Компьютерное железо, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программируем Arduino. Профессиональная работа со скетчами.: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программируем Arduino. Профессиональная работа со скетчами.»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Arduino — стандартный микроконтроллер, получивший широкое признание у инженеров, мастеров и преподавателей благодаря своей простоте, невысокой стоимости и большому разнообразию плат расширения. Платы расширения, подключаемые к основной плате Arduino, позволяют выходить в Интернет, управлять роботами и домашней автоматикой.
Простые проекты на основе Arduino не вызывают сложностей в реализации. Но, вступив на территорию, не охваченную вводными руководствами, и увеличивая сложность проектов, вы быстро столкнетесь с проблемой нехватки знаний — врагом всех программистов.
Эта книга задумана как продолжение бестселлера «Programming Arduino: Getting Started with Sketches». Несмотря на то что эта книга включает краткое повторение основ из книги «Programming Arduino», она познакомит читателя с более продвинутыми аспектами программирования плат Arduino.

Программируем Arduino. Профессиональная работа со скетчами. — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программируем Arduino. Профессиональная работа со скетчами.», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Serial.println(freeMemory());

delay(1000);

}

Эта библиотека может пригодиться при диагностике неожиданных проблем, которые, по вашему мнению, могут быть вызваны нехваткой памяти. Конечно же, использование библиотеки ведет к небольшому увеличению потребления памяти.

Уменьшение используемого объема флеш-памяти

По окончании процедуры компиляции скетча в нижней части окна Arduino IDE появится примерно такое сообщение:

Скетч использует 1344 байт (4%) памяти устройства. Всего доступно 32 256 байт.

Эта строка сообщает точный объем флеш-памяти в Arduino, который будет занят скетчем, благодаря чему вы всегда будете знать, насколько близко подошли к пределу в 32 Кбайт. Оказавшись близко к предельному значению, нужно позаботиться об оптимизации использования флеш-памяти. В этом вам помогут рассматриваемые далее рекомендации.

Используйте константы

Многие, стараясь дать имена контактам, определяют для этого переменные, как показано ниже:

int ledPin = 13;

Если вы не собираетесь изменять номер контакта с именем ledPin в процессе выполнения скетча, то вместо переменной можно использовать константу. Просто добавьте слово const в начало объявления:

const int ledPin = 13;

Это поможет сэкономить 2 байта ОЗУ плюс 2 байта флеш-памяти при каждом использовании константы. Для часто используемых переменных экономия может достигать нескольких десятков байтов.

Удалите ненужные трассировочные вызовы

В процессе отладки скетчей для Arduino принято вставлять в код команды Serial.println, помогающие увидеть значения переменных в разных точках программы и определить источники ошибок. Эти команды потреб­ляют значительный объем флеш-памяти. Любое использование Serial.println требует включения в скетч примерно 500 байт библиотечного кода. Поэтому, убедившись в безупречной работе скетча, удалите или закомментируйте все такие команды.

Откажитесь от использования загрузчика

В главе 2 рассказывалось, как запрограммировать микроконтроллер непосредственно через контакты ICSP на плате Arduino с применением аппаратных программаторов. Такой подход поможет сэкономить пару килобайт, так как не требует установки загрузчика.

Статическое и динамическое размещение в памяти

Если вы, подобно автору книги, имеете опыт разработки крупномасштабных систем на таких языках, как Java или C#, вам наверняка приходилось создавать объекты во время выполнения и позволять сборщику мусора освобождать занимаемую ими память без вашего участия. Этот подход к программированию в принципе непригоден для программ, выполняющихся на микропроцессорах, которые имеют всего 2 Кбайт памяти. Ведь в Arduino просто нет никакого сборщика мусора, и, что более важно, в программах, которые пишутся для Arduino, выделение и освобождение памяти во время выполнения редко бывают необходимы.

Ниже приводится пример объявления статического массива, как это обычно делается в скетчах:

// sketch_06_04_static

int array[100];

void setup()

{

array[0] = 1;

array[50] = 2;

Serial.begin(9600);

Serial.println(array[50]);

}

void loop()

{

}

Объем памяти, занимаемой массивом, известен уже на этапе компиляции скетча, поэтому компилятор может зарезервировать для массива необходимый объем памяти. Второй пример, приведенный ниже, также создает массив того же размера, но выделяет память для него во время выполнения из пула доступной памяти. Обратите внимание на то, что версии Arduino IDE ниже 1.0.4 не поддерживают malloc.

// sketch_06_03_dynamic

int *array;

void setup()

{

array = (int *)malloc(sizeof(int) * 100);

array[0] = 1;

array[50] = 2;

Serial.begin(9600);

Serial.println(array[50]);

}

void loop()

{

}

В начале скетча определяется переменная int *array. Символ * сообщает, что это указатель на целочисленное значение (или в данном случае массив целых чисел), а не простое значение. Объем памяти, занимаемой массивом, неизвестен, пока не будет выполнена следующая строка в функции setup:

array = (int *)malloc(sizeof(int) * 100);

Команда malloc ( memory allocate — выделить память ) выделяет память в области ОЗУ, которую называют кучей (heap). В качестве аргумента ей передается объем памяти в байтах, который следует выделить. Так как массив хранит 100 значений типа int, требуется выполнить некоторые расчеты, чтобы определить размер массива в байтах. В действительности можно было бы просто передать функции malloc число 200 в аргументе, потому что известно, что каждое значение типа int занимает 2 байта памяти, но использование функции sizeof гарантирует получение правильного числа в любом случае.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программируем Arduino. Профессиональная работа со скетчами.»

Представляем Вашему вниманию похожие книги на «Программируем Arduino. Профессиональная работа со скетчами.» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Программируем Arduino. Профессиональная работа со скетчами.»

Обсуждение, отзывы о книге «Программируем Arduino. Профессиональная работа со скетчами.» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x