Разбор ошибок · статья
Ошибки компиляции Arduino
«expected ';'», «was not declared in this scope», «No such file or directory» — что означают самые частые ошибки, почему компилятор показывает не ту строку и как быстро всё исправить.
Как читать ошибки
Сообщения печатает компилятор C++, и он пишет по-английски. Trema IDE переводит суть: над консолью появляется русская карточка — что случилось, в каком файле и в какой строке. Клик по карточке приводит к месту проблемы.

Главное правило: читайте первую ошибку в списке. Одна опечатка часто рождает лавину сообщений — исправьте первую причину, и остальные исчезнут сами.
expected ';' before …
Потеряна точка с запятой. Каждая команда в C++ должна заканчиваться символом ;. Хитрость в том, что компилятор замечает пропажу только на следующей команде — поэтому смотрите не только на указанную строку, но и на строку выше неё.
'x' was not declared in this scope
«Имя x не объявлено». Компилятор встретил слово, которого не знает. Причины по частоте:
- Опечатка. C++ различает большие и маленькие буквы:
digitalwrite— это неdigitalWrite. - Переменная не объявлена. Прежде чем пользоваться переменной, её нужно завести:
int ledPin = 13; - Забыт #include. Команды из библиотеки работают только после её подключения в начале скетча.
No such file or directory
Компилятор не нашёл файл из строки #include — то есть библиотека не установлена или имя написано с ошибкой. Trema IDE в этом случае сама предлагает установить недостающую библиотеку из каталога:

expected '}' at end of input
Не закрыта фигурная скобка. Каждой открывающей { нужна закрывающая }. Поставьте курсор на скобку — редактор подсветит её пару; так легко найти, какая осталась одинокой.
redefinition of 'void setup()'
В программе две функции setup() (или две loop()). Так бывает, когда пример вставили целиком в конец существующего скетча. В программе должна остаться ровно одна setup() и одна loop() — перенесите нужные команды внутрь существующих функций.
Ошибка не в коде: сборка прошла, а загрузка — нет
Если сборка закончилась успешно, а дальше пишет об ошибке порта — это не ошибка компиляции, а связь с платой: не выбран или занят COM-порт, не установлен драйвер, кабель без данных. Разбор таких случаев — в инструкции «Плата не видна: драйверы CH340 и CP2102».
Ничего не помогло? Напишите в поддержку и приложите файл «Диагностика для поддержки» из программы — в нём журнал сборки, по которому мы быстро найдём причину.
Почему ошибки компилятора на английском?
Сырые сообщения печатает сам компилятор C++, он не знает русского. Поэтому Trema IDE показывает над консолью русскую карточку: что случилось, в какой строке и что сделать. Клик по карточке приводит к месту ошибки.
Ошибка указывает не на ту строку. Так бывает?
Да, это особенность C++: компилятор замечает проблему там, где код перестал складываться, а причина часто на строку-две выше — например, потерянная точка с запятой или незакрытая скобка.
Код верный, но загрузка в плату не идёт
Это уже не ошибка компиляции, а проблема связи с платой: проверьте, выбран ли правильный порт, не занят ли он другой программой (например, монитором порта в другом окне) и установлен ли драйвер USB-моста.
Куда написать, если ошибка непонятна?
Напишите в поддержку и приложите файл «Диагностика для поддержки» из программы — в нём журнал сборки. Так мы разберём ваш случай быстрее и заодно улучшим русские подсказки.
Пусть ошибки объясняются по-русски
В Trema IDE каждая ошибка сборки — с русским объяснением и ссылкой на строку. Дома — бесплатно навсегда. Все статьи — в базе знаний, раздел «Ошибки и решения».
