rusthaiproperty
  • Blog

Sketch Для Arduino

12/23/2016

0 Comments

 
Sketch Для Arduino

Почему скетч, написанный в одной версии среды разработки отказывается компилироваться в соседних версиях? Этим же вопросом меня заваливали пользователи системы Arduino Mega Server. Почему АМС компилируется в 1. И вот недавно, в процессе портирования Arduino Mega Server на новый контроллер Genuino 1. И в этой статье я поделюсь с вами этим сакральным знанием и ваши скетчи после этого всегда будут успешно компилироваться. Но этого не происходит. Почему? Внутренняя кухня.

Sketch Для Arduino

Чтобы это понять, нужно разобраться с тем, как формируются версии сред разработки Arduino IDE и как пользователи работают с этими средами разработки. Начнём с пользователей. Большинство из них компилирует примитивные проекты, образно говоря, в 2. Эти проекты успешно компилируются в любой версии IDE потому, что используют только стандартные вызовы библиотечных функций и никак не модифицируют сами библиотеки. Но сколько- нибудь развитый проект на Ардуино уже не умещается в «2. А один раз модифицировав системную библиотеку, вы становитесь её заложником и вынуждены «тащить» её за собой из версии в версию.

Теперь давайте разберёмся с тем, как формируются версии Arduino IDE. А формируются они по произволу (я подозреваю, что в конечном счёте, одного конкретного программиста, какого- нибудь Марио) выпускающей команды. И то, какая версия конкретной библиотеки будет включена в дистрибутив и в каком виде (с какими модификациями), остаётся на совести этого «Марио». А теперь внимание, это очень важно!

Выпускающая команда преследует только одну цель — чтобы дистрибутив одной версии был взаимно согласован и непротиворечив внутри себя. Их задача добиться того, чтобы все стандартные примеры работали корректно. Задача совместимости между версиями вообще не ставится. И поскольку 9. 9% процентов пользователей компилирует проекты в «2. А то, что сколько- нибудь серьёзные проекты не компилируются, это проблемы этих проектов.

Слава Богу, теперь понятен механизм возникновения проблемы и теперь стало понятно, как с этим бороться. Конкретный пример.

Вспомним портирование АМС на Genuino 1. Тут команда Ардуино припасла для нас очередной прикол (молодцы ребята, не дают нам расслабляться).

Как писать прошивки (у ардуино они называется – скетчи) нам подробно рассказал уважаемый admin, а тем кто захочет разобраться с&nbsp.

Загрузить в Arduino библиотеку и скетч можно при помощи программы IDE. Если сам конструктор Ардуино похож на лего, то программа&nbsp. Появилась задача: подключить 32 геркона к Arduino UNO. Как известно ардуино не позволяет этого сделать напрямую, так как не имеет достаточного&nbsp. Загрузить в Arduino библиотеку и скетч можно при помощи программы IDE. Если сам конструктор Ардуино похож на лего, то программа. Рекомендую создать новый пустой скетч (так называют программы в Arduino) через File Поскольку я интенсивно занимаюсь разработкой в Arduino IDE, то этот вопрос меня неподдельно волновал. Почему скетч, написанный&nbsp.

Попытка откомпилировать проект для нового контроллера приводила к появлению множества ошибок компилятора. Анализ сообщений показал, что компилятору категорически не нравится наша Ethernet библиотека. Чем же она так не угодила компилятору?

Sketch Для Arduino

Начинаем разбираться. Наша библиотека: version=1. Библиотека из IDE 1. Однако. Наша библиотека: 3.

Поскольку я интенсивно занимаюсь разработкой в Arduino IDE, то этот вопрос меня неподдельно волновал. Почему скетч, написанный.

Библиотека из IDE 1. Однако. Наша библиотека: 1. КБ (не нравится компилятору)Библиотека из IDE 1.

КБ (нравится компилятору)Однако. Другими словами, Марио «засунул» в IDE 1. Ethernet библиотеку с одним и тем же номером версии, что и в IDE 1. РАЗНЫМ СОДЕРЖИМЫМ и забыл нас об этом предупредить. А это самое «разное содержимое» как паук держится своими лапками за IDE и другие библиотеки более низкого уровня (тоже модифицированные в 1. Браво, Марио! С таким подходом ничего не будет компилироваться, кроме стандартных примеров и скетчей в 2. Практическое решение (головоломок от Ардуино).

Теперь стал кристально ясен механизм того, почему не компилируются проекты в разных версиях Arduino IDE и, соответственно, так же кристально стал ясен путь решения этой проблемы. В данном конкретном случае решение состоит из трёх частей. Часть первая. Нахождение работающей библиотеки. Помните, задача у выпускающей команды создать непротиворечивую версию IDE?

Значит где- то должна быть работающая версия нужной нам библиотеки. Часть вторая. Перенесение работающей Ethernet библиотеки от шалуна Марио на её место в проекте Arduino Mega Server. Здесь нет ничего сложного — просто копируем её на место нашей неработающей в IDE 1. Ethernet библиотеки.

Часть третья. Модификация под проект Arduino Mega Server перенесённой и заведомо работающей в IDE 1. Ethernet библиотеки.

Но в данном случае нам повезло, все остальные библиотеки заработали нормально (потому, что Марио не успел их по- тихому модифицировать, хотя мог и обязательно сделает это в новых версиях IDE, но мы уже знаем как с этим бороться). Заключение. Вот и весь секрет успешной работы в Arduino IDE со сложными проектами. Теперь вы можете чувствовать себя во всеоружии и для вас не составит труда заставить работать ваш проект в любой версии Arduino IDE.

0 Comments



Leave a Reply.

    Author

    Write something about yourself. No need to be fancy, just an overview.

    Archives

    October 2016

    Categories

    All

    RSS Feed

Powered by
  • Blog
✕