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

13-12-2020, 16:31 8 комментариев
Даже опытные программисты-«ардуинщики» могут столкнуться с ошибками компиляции. Исправить их не сложно, а вот найти порой не так просто. Мы решили рассказать сегодня в деталях, какие системные ошибки чаще возникают на различных платах Ардуино, как их исправить и по возможности избежать. 

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

Для быстрого поиска ошибки советуем рассмотреть строку-подсказку. Ничего не помогло? Тогда для вас наша подборка наиболее распространенных синтаксических ошибок:
  • Такое сообщение указывает на то, что вы забыли открыть фугурную скобку; 
  • “expected initializer before ‘}’ token” - наоборот, забыли ее закрыть;
  • “undefined reference to “setup” - удалена либо изменена процедура “setup”;
  • undefined reference to “loop” – проблема с опцией loop (ненароком изменили, удалили);
  • Тут говорится о том, что в прошивке найдены слова, написанные неверно (текст, который не должен считаться программным, все же читается средой IDE).

С синтаксисом все понятно – вставляем пропущенные символы, убираем лишние знаки, возвращаем функции по умолчанию.
Напомним, в среде разработки Ардуино IDE можно заливать скетчи для различных микроконтроллеров. По умолчанию обычно указана плата Genuino Uno. Если вы работаете с Mega, следует выбрать именно эту платформу (меню «Сервис»), иначе вас ожидает неприятное предупреждение: “programmer is not responding”.

Ошибка компиляции для платы Arduino Uno чаще всего возникает из-за проблем, связанных с библиотеками, например, неправильно подключили, не то ПО инсталлировали. В этом случае вы увидите напоминание fatal error: … No such file or directory” (библиотека не перенесена в папку libraries) или redefinition of void setup”.


Обозначенная на скриншоте ERROR означает, что программирование завершилось некорректно (расшифровываем: внутренние проблемы с компилятором, не обновили версию IDE, сбой в библиотеке, неправильный выбор разрядности операционной системы и др.). 
Важно! Не забывайте использовать подсказки приложения – они очень помогают. Включаем тут: Файл -> Настройки -> "Показать подробный вывод во время компиляции".

Что делать, если произошла ошибка при загрузке скетча Arduino Nano. Тут могут быть те же причины, что мы описали выше. Особых отличий в компиляции плат нет, главное, их правильный выбор первоначально. Однако часто пользователи настраивают не те показатели скорости порта: 9600 вместо необходимых 57600 либо не имеют соответствующих драйверов на устройствах – все это нужно проверить и исправить!
Поделись в социальных сетях:
О авторе
Калугин Антон

Программист микроконтроллеров с 8-ми летним стажем, работал в таких компаниях как IBM, ASUS, Microsoft.

В комментариях с радостью отвечу на ваши вопросы.

Все статьи автора
Похожие новости

Сегодня мы поговорим о том, как подключить ESP32 к Ардуино. Данная инструкция больше подходит для Windows девайсов (хотя и для других операционных систем типа...

Инструкция по установке скетчей в платы Arduino или аналоги....

Среда программирования Arduino IDE (Integrated Development Environment ) может функционировать не только на платформах Windows и Mac, но и на базе операционной...

Что делать в ситуации, когда плата Arduino Uno не появляется в диспетчере устройств на Windows и компьютер ее не видит? Эта проблема довольно распространенная,...

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

8 комментария
  1. Роман
    11 декабря 2021 21:58 Роман

    добрый день,выскакивает вот такая ошибка,Arduino: 1.8.16 (Windows Store 1.8.51.0) (Windows 10), Плата:"Arduino Nano, ATmega328P"





















    WS2812_FX_buttonchange:8:10: fatal error: FastLED.h: No such file or directory

    #include "FastLED.h" // библиотека для работы с лентой

    ^~~~~~~~~~~

    compilation terminated.

    exit status 1

    FastLED.h: No such file or directory



    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"

    replyОтветить
  2. Егор
    12 декабря 2021 21:44 Егор

    Роман, надо скачать библиотеку указанную выше

    replyОтветить
  3. Даниил
    15 декабря 2021 22:16 Даниил

    Здравствуйте, возникла вот такая ошибка:
    Arduino: 1.8.16 (Windows 10), Плата:"Arduino Nano, ATmega328P"

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe2

    avrdude: stk500_recv(): programmer is not responding

    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe2

    Problem uploading to board. See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions.



    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"

    replyОтветить
  4. М.В.босс1190 (Владислав)
    13 апреля 2023 16:24 М.В.босс1190 (Владислав)

    Даниил,
    У тебя не тот загрузчик, порт или программатор

    replyОтветить
  5. М.В.босс1190 (Владислав)
    13 апреля 2023 16:27 М.В.босс1190 (Владислав)

    Роман,
    Нужно учить английский, скачай библиотеку

    replyОтветить
  6. Рамзес
    18 мая 2023 14:36 Рамзес

    Есть готовый скетч,хочу повторить устройство но при компиляции ошибка
    Arduino: 1.8.18 (Windows 10), Плата:"Arduino Uno"





















    C:\Users\Ramzes\Documents\Arduino\sketch\T_3_3_AltVar_parachute_v2_0_COM_Display_5110_Final\T_3_3_AltVar_parachute_v2_0_COM_Display_5110_Final.ino: In function 'void setup()':

    T_3_3_AltVar_parachute_v2_0_COM_Display_5110_Final:164:17: error: 'MODE_ULTRA_HIGHRES' was not declared in this scope

    bmp085.init(MODE_ULTRA_HIGHRES, p0, false); // чувствительность датчика давления

    ^~~~~~~~~~~~~~~~~~

    T_3_3_AltVar_parachute_v2_0_COM_Display_5110_Final:165:12: error: 'class BMP085' has no member named 'calcTruePressure'; did you mean 'bmp085GetPressure'?

    bmp085.calcTruePressure(&Pressure);

    ^~~~~~~~~~~~~~~~

    bmp085GetPressure

    C:\Users\Ramzes\Documents\Arduino\sketch\T_3_3_AltVar_parachute_v2_0_COM_Display_5110_Final\T_3_3_AltVar_parachute_v2_0_COM_Display_5110_Final.ino: In function 'void loop()':

    T_3_3_AltVar_parachute_v2_0_COM_Display_5110_Final:257:12: error: 'class BMP085' has no member named 'calcTruePressure'; did you mean 'bmp085GetPressure'?

    bmp085.calcTruePressure(&Pressure);

    ^~~~~~~~~~~~~~~~

    bmp085GetPressure

    exit status 1

    'MODE_ULTRA_HIGHRES' was not declared in this scope



    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"

    replyОтветить
  7. Александр В
    20 июня 2023 21:09 Александр В

    Ребят, помогите, вот такая проблема, несколько дней долблюсь - не могу загрузить прошивку на mini pro mini. Пишет такие ошибки:
    ^
    C:\Users\User\Documents\Arduino\2_5442860055328205316_copy_20230620175913\2_5442860055328205316\2_5442860055328205316.pde:3057:214: error: expected unqualified-id before '=' token
    C:\Users\User\Documents\Arduino\2_5442860055328205316_copy_20230620175913\2_5442860055328205316\2_5442860055328205316.pde:3497:232: error: 'A' does not name a type; did you mean 'A7'?
    C:\Users\User\Documents\Arduino\2_5442860055328205316_copy_20230620175913\2_5442860055328205316\2_5442860055328205316.pde:3497:262: error: expected unqualified-id before numeric constant
    C:\Users\User\Documents\Arduino\2_5442860055328205316_copy_20230620175913\2_5442860055328205316\2_5442860055328205316.pde:3497:278: error: expected unqualified-id before numeric constant
    C:\Users\User\Documents\Arduino\2_5442860055328205316_copy_20230620175913\2_5442860055328205316\2_5442860055328205316.pde:3497:298: error: expected unqualified-id before '<' token

    Очень нужна помощь

    replyОтветить
  8. костя
    22 июля 2023 20:59 костя

    Arduino: 1.8.16 (Windows Server 2008 R2), Плата:"Arduino Uno"

    In file included from C:\Users\костя\Documents\Arduino\libraries\Adafruit_SSD1306-1.0.1\examples\ssd1306_128x64_i2c\ssd1306_128x64_i2c.ino:21:0:

    C:\Users\�����\Documents\Arduino\libraries\Adafruit-GFX-Library-master/Adafruit_GFX.h:12:10: fatal error: Adafruit_I2CDevice.h: No such file or directory

    #include <Adafruit_I2CDevice.h>

    ^~~~~~~~~~~~~~~~~~~~~~

    compilation terminated.

    exit status 1

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



    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"
    помогите

    replyОтветить
Оставить комментарий