Твой первый квадрокоптер: теория и практика - [52]

Шрифт
Интервал

Прежде всего, скачайте с сайта vnvw.arduino.сс самую свежую версию среды разработки Arduino IDE. На момент написания книги это была версия 1.6.1. Если вы захотите использовать старую версию прошивки MultiWii v2.20, то для компиляции придется использовать архивную версию Arduino ГОЕ 1.0.5, иначе при компиляции будут возникать ошибки. Для установки достаточно запустить инсталлятор и подтвердить запросы на установку по умолчанию. Обе версии Arduino ГОЕ могут быть установлены на компьютер одновременно, но в разные папки.

После окончания установки подключите контроллер к компьютеру и запустите Arduino IDE. Откроется стартовое окно с пустым проектом. В терминах Arduino программа для микроконтроллера называется скетч. Теперь нужно настроить компилятор под нужный микроконтроллер и указать номер порта для связи. Выберите меню Инструменты | Плата | Arduino Mega 2560.

Затем выберите порт: Инструменты | Порт и задайте номер порта СОМ, который соответствует вашей плате. Если плата не подключена, то нужный порт в списке не появится.

Примечание

Микроконтроллер АТМеда2560 оснащен энергонезависимой памятью (EEPROM) емкостью 4096 байт. В этой памяти хранятся настроечные константы прошивки MultiWii. Перед загрузкой новой прошивки EEPROM необходимо очистить. В противном случае прошивка может работать неправильно, либо не заработает вообще.

Для очистки EEPROM загрузите специальный короткий скетч из папки готовых примеров Arduino: Файл | Образцы | EEPROM | eeprom_dear. Скетч откроется в новом окне, но настройки платы и порта останутся прежними.

Примечание

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

В строке

for (int i = 0; i < 512; i++)

исправьте значение 512 на 4096, чтобы очистить EEPROM полностью:

for (int i = 0; i < 4096; i++)

Теперь нажмите кнопку со стрелкой для загрузки программы в микроконтроллер. В течение нескольких секунд произойдет компиляция исходного текста программы в машинные коды, затем плата весело замигает светодиодами во время загрузки прошивки. Примерно через три секунды после загрузки светодиод А на плате начнет светиться постоянно. Это означает, что процесс очистки EEPROM завершен и контроллер готов к записи и настройке новой прошивки. Файлы примеров Arduino IDE защищены от записи, поэтому сохраните исправленный скетч очистки EEPROM в другое удобное место.

Память EEPROM нужно чистить, если:

• это первая загрузка прошивки в память контроллера, или предыдущая версия неизвестна;

• меняется версия прошивки;

• меняется тип коптера;

• меняется состав датчиков платы или их тип;

• после записи новой прошивки коптер стал вести себя неадекватно.

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


Настройка базовых опций кода прошивки

Ранее вы скачали и разархивировали проект прошивки MultiWii. Проект состоит из нескольких файлов. Файлы скетчей имеют расширения ino или срр; файлы так называемых заголовков имеют расширения h. В среде Arduino имя папки проекта обязательно совпадает с именем главного файла проекта. Например, если папка носит имя MultiWiiAIOP, то главный файл в этой папке называется MultiWii_AIOP.ino.

Откройте главный файл двойным щелчком или через меню Файл | Открыть. При этом в среде Arduino IDE откроются все файлы проекта. Сейчас нас интересует только файл config.h. В нем подробно расписана конфигурация прошивки. Остальные файлы, если вы не имеете четкого понимания своих действий, лучше не трогать.

Механизм конфигурирования прошивки MultiWii, как, впрочем, и многих других программ для микроконтроллеров, основан на так называемых "дефайнах" — служебных директивах компилятора #define (определить). После этой директивы через пробел следуют имя параметра и его значение. В коде программы вместо конкретного значения указывают имя параметра. Во время обработки программного кода компилятор отыскивает имя параметра и автоматически подставляет вместо него соответствующее значение.

Например, если определен некий параметр

#define MY_PARAMETER 10

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

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

#define HELICOPTER

//#define AIRPLANE

при этом второе определение закрыто символом комментария // и невидимо для компилятора. Теперь, если в программе встретятся такие два фрагмента:

#ifdef HELICOPTER

Фрагмент программы 1;

#endif

#ifdef AIRPLANE

Фрагмент программы 2;

#endif

то компилятор обработает первый фрагмент кода и проигнорирует второй, потому что определение airplane закомментировано и не существует. И наоборот, если мы закомментируем определение helicopter и раскомментируем airplane, to будет скомпилирован второй фрагмент кода.


Еще от автора В С Яценко
В горах Памира

Путевые записки участника Памирской альпинистской экспедиции 1940 г.


Рекомендуем почитать
Детали ламповых приемников

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


Как сделать рельсотрон

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


Электронные самоделки

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


Мемуары изобретателя телевидения

„Подарок американскому континенту“ – так сказал о Владимире Козьмиче Зворыкине его коллега по работе в области электроники. Основания к тому, чтобы присвоить эмигранту из России столь пышное определение, безусловно, были. Зворыкину принадлежит изобретение „чуда XX века“ – электронного телевидения. Его новаторские идеи были использованы также при создании электронных микроскопов, фотоэлектронных умножителей и электронно-оптических преобразователей, разнообразных приборов медицинской электроники – от миниатюрных „радиопилюль“ до читающего телевизионного устройства для слепых.


Создаем робота-андроида своими руками

Эта книга – отличный подарок для тех, кто собирается строить робота в первый раз, а также будет полезна и более опытным «роботостроителям», которые хотят отточить свое мастерство. Базовых знаний в области радиоэлектроники окажется вполне достаточно, чтобы книга помогла вам осуществить 12 отличных робототехнических проектов с использованием как промышленных частей и деталей (полные списки прилагаются), так и различного домашнего хлама, вытащенного с антресолей.Издание окажется крайне полезным для всех любителей электроники и телемеханики как классическое руководство по функционально-блочному построению робототехнических устройств.


Радиоцензура

В отличие от темы иновещания тематика радиотехнической борьбы между "социалистическим" лагерем и капиталистическими странами остаётся практически неизвестной массовому читателю.В данной работе автор - Римантас Плейкис (бывший министр связи Литвы в 1996-1998 гг.) подробно рассматривает радиоцензуру (синонимы: радиозащита, радиоподавление, постановка помех, глушение, радиопротиводействие, забивка антисоветских радиопередач, радиоэлектронная борьба).Без преувеличения эта статья, написанная в 2002-2003 годах, закрывает еще одно "белое пятно" в противостоянии двух военно-политических блоков и раскрывает технологию радиотехнической цензуры.К сожалению, для русскоязычных читателей доступен только электронный вариант данного исследования.