Ошибка компиляции для плат Arduino

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

Синтаксические ошибки

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

Перечислим наиболее часто встречающиеся варианты ошибок компиляции Arduino/Genuino:

  • Ошибка a function-definition is not allowed here before ‘{‘ token. Эта ошибка означает, что вы забыли закрыть фигурную строку. Проверьте все функции и внутренние блоки кода. Для каждой открывающей скобки должна найтись и закрывающая. Arduino IDE поможет вам – щелкните открывающий знак “{“ и программа подсветит закрывающий.a function-definition is not allowed here before
  • Ошибка expected initializer before ‘}’ token. Возникает в обратной ситуации: когда вы забыли открыть или нечаянно стерли открывающую фигурную скобку. Иногда такая ошибка возникает, если есть несколько закрывающих скобок без открывающей. В любом случае нужно внимательно просмотреть код и привести скобки в порядок.
  • Ошибка ‘что-то там’ was not declared in this scope. Означает, что ардуино обнаружила в коде слова, не являющиеся служебными и не объявленные как переменные. Как правило, ошибка возникает, если вы действительно забыли продекларировать переменные или методы. Также возможно, что вы случайно написали лишние символы или стерли знак комментария, после чего ваши мысли ардуино стал воспринимать как команды.
  • Ошибка undefined reference to `loop’. Возникает, если вы случайно удалили или переименовали функцию loop. Ардуино не сможет запустить скетч без команду, указанных в этом блоке. Если вы напортачили с функцией setup, то ошибка будет выглядеть соответственно: undefined reference to `setup’. Выход в обоих случаях один – вернуть loop или setup на свое место в скетче.

Ошибки компиляции плат Arduino Uno

was not declared in this scopeВ Arduino IDE можно писать скетчи под разные варианты микроконтроллеров. Очень часто это приводит к тому, что написав код для Arduino Nano, вы пытаетесь его скомпилировать, не указав в меню выбора платы нужное значение. По умолчанию в меню выбрана плата Arduino/Genuino Uno, чтобы скомпилировать скетч для Arduino Nano нужно будет выбрать эту плату. Все дело в том, что при компиляции под конкретную платформу Arduino подгружает необходимые модули и библиотеки. Для каждой платформы эти библиотеки свои. Вполне может оказаться, что в написанном вами коде будут ссылки на переменные и методы, которых просто нет в выбранной конфигурации.

Ошибка exit status 1 при компиляции для плат Uno, Mega и Nano

Сообщение «exit status 1» при компиляции Arduino означает, что процесс компиляции завершился с ошибкой. Причин этому может быть огромное множество, как правило, все они быстро исправляются, так что ничего страшного в этой ошибке нет. Но бывают ситуации, когда ошибка вызвана внутренними проблемами компилятора. Например, при работе в 64x разрядной операционной системе или изменении версии IDE или библиотек. Единого рецепта быть не может, нужно будет искать решение конкретной проблемы на форуме.

Ошибки библиотек

Огромное количество ошибок при компиляции для Arduino может быть вызвано неправильно подключенными библиотеками или ошибками внутри самих библиотек. Рассмотрим только некоторые из них:

  • Ошибка fatal error: … No such file or directory. Возникает, если вы подключаете библиотеку, которую не установили предварительно в папку libraries. Ардуино просто не может найти указанный файл декларации и дает об этом знать.
  • Сообщение об ошибке в одном из подключенных файлов. Означает, что вы скачали плохо написанную библиотеку или пытаетесь подключить несовместимые библиотеки. Обратитесь на форум к разработчику библиотеки или еще раз проверьте корректность структуры вашего приложения.
  • Ошибки типа redefinision of void setup’ – возникают, если в подключаемой библиотеке автор зачем то уже объявил функции, которые в используете в своем скетче. Нужно переименовать методы (у себя или в бибилиотеке)

Ошибки компилятора ардуино

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

 

ПОДЕЛИТЬСЯ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here