Arduino uno windows 7 не работает

Обновлено: 06.07.2024

В процессе передачи скетча от компьютера к Arduino участвует множество компонентов. Если хотя бы один из них сработает некорректно - процесс прошивки будет нарушен. В частности, процесс прошивки зависит от: драйверов Ардуино, выбора модели устройства и порта в среде Arduino, физического подключения к плате, прошивке контроллера 8U2 (на Arduino Uno и Mega 2560), загрузчика главного микроконтроллера устройства, настроек придохранительных битов, и т.д. Ниже приведено несколько рекомендаций по устранению неполадок того или иного компонента.

Драйверы позволяют прикладному ПО на компьютере (т.е. среде Arduino) общаться с подключенным к нему "железом" (платой Ардуино). Применительно к Ардуино, драйверы отвечают за создание в системе виртуального последовательного порта (или виртуального COM-порта). Arduino Uno и Mega 2560 с микроконтроллером ATmega8U2 используют стандартные драйвера (USB CDC) операционной системы. Другие же платы Ардуино, где роль USB-UART преобразователя выполняет микросхема FTDI, используют драйвера от FTDI.

Самый простой способ проверить, правильно ли установлены драйвера - это подключить Ардуино к ПК и открыть меню Сервис->Последовательный порт в среде разработки. После подключения Ардуино здесь должны появится новые пункты меню. При этом абсолютно не важно, какое именно имя порта будет присвоено Ардуино.

Доступ к последовательному порту

  • На Windows: если программа долго открывается или падает при запуске, либо меню Сервис в ней открывается слишком долго, то в Диспетчере устройств попробуйте отключить все последовательные Bluetooth-порты и прочие сетевые COM-порты. Во время запуска или открытия меню Сервис, среда разработки Ардуино сканирует все последовательные порты вашего компьютера, соответственно, наличие таких сетевых портов может иногда приводить к долгой загрузке или краху программы.
  • Убедитесь, что у вас не запущены программы-сканеры последовательных портов, такие, как USB Cellular Wifi Dongle (например, от Sprint или Verizon), приложения для синхронизации PDA, драйвера Bluetooth-USB (например, BlueSoleil), виртуальные демоны и пр..
  • Убедитесь, что причиной блокирования последовательного порта не является брандмауэр (например, ZoneAlarm).
  • Нужно также закрыть все программы, осуществляющие мониторинг данных, идущих через USB между Ардуино и ПК (например, Processing, PD, vvvv и др.).
  • На Linux: попробуйте запустить среду Arduino от суперпользователя, хотя бы временно, чтобы увидеть, поможет это прошить скетч в Ардуино или нет.

Физическое подключение к плате

  • Первым делом убедитесь, что Ардуино включен (горит зеленый светодиод) и он соединен с компьютером.
  • На Mac-компьютерах есть некоторые проблемы при подключении Arduino Uno и Mega 2560 через USB-хаб. Если в меню Сервис->Последовательный порт ничего не появляется, попробуйте подключить плату непосредственно к компьютеру и перезапустить Arduino IDE.
  • На время прошивки отключите все устройства от цифровых выводов 0 и 1, поскольку эти выводы связаны с интерфейсом подключения Ардуино к компьютеру (после успешной прошивки скетча в контроллер их можно снова задействовать).
  • Попробуйте прошить Ардуино, отключив от него все устройства (кроме USB-кабеля, разумеется).
  • Убедитесь в том, что плата не касается металлических предметов, проводящих ток.
  • Попробуйте другой USB-кабель, иногда они тоже выходят из строя.
  • Если ваш Арудино не поддерживает функцию авто-перегрузки, убедитесь в том, что вы перегружаете плату за несколько секунд до прошивки. (Arduino Diecimila, Duemilanove и Nano поддерживают функцию авто-перегрузки, как и LilyPad, Pro и Pro Mini с 6-контактными разъемами для программирования).
  • Обратите внимание: некоторые Arduino Diecimila были случайно прошиты не тем загрузчиком. Такие модели требуют физического нажатия кнопки сброса перед загрузкой программы; подробнее об этом см. ниже.
  • На некоторых компьютерах нужно нажимать кнопку сброса (на плате) после нажатия кнопки Загрузить в среде Ардуино. Поэкспериментируйте с разными интервалами времени между нажатиями - от 0 до 10 секунд или больше с интервалом где-то через 2 секунды.
  • Если у вас возникает такая ошибка: "[VP 1] Device is not responding correctly." попробуйте прошить программу еще раз (другими словами, сбросьте плату и нажмите кнопку Загрузить еще раз).
  • Убедитесь в том, что на вашем Arduino прошит загрузчик. Для этого просто перезагрузите устройство. Встроенный светодиод (подключенный к 13-й ножке контроллера) должен замигать. Если этого не произошло, то скорее всего на вашей плате нет загрузчика.

Возникает ошибка "Build folder disappeared or could not be written" (на Mac OS X)

Вы извлекли Arduino.app из образа диска (например, в папку Applications)? Если нет, то вы не сможете загружать примеры.

Не запускается среда Ардуино после обновления Java на компьютерах Mac

Последнее обновление Java от Apple пытается использовать 64-битные версии родных библиотек. Однако, в программном обеспечении Ардуино используется 32-битная версия библиотеки RXTX. При запуске Ардуино возникает примерно такая ошибка:

Uncaught exception in main method: java.lang.UnsatisfiedLinkError: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: no suitable image found. Did find: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: no matching architecture in universal wrapper

Для решения этой проблемы, щелкните по приложению Arduino (т.е. Arduino 16.app) в окне Finder, и из меню File выберите Get Info. На панели установите флажок "Open in 32 Bit Mode". После этого среда Ардуино должна запускаться нормально.

При компиляции программы возникает ошибка java.lang.StackOverflowError

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

Не запускается скетч при питании платы от внешнего источника (на моделях Arduino Diecimila или младше)

Поскольку вывод RX отсоединен, загрузчик Ардуино может принимать помехи, вместо данных, а значит, у него никогда не наступит таймаут и, соответственно, запуск программы не произойдет. Для решения этой проблемы, попробуйте соединить вывод RX с землей через резистор 10 кОм (или соединить выводы RX и TX).

Подвисает среда разработки Ардуино (на Windows) при попытке прошить программу

Не включается Ардуино (зеленый светодиод питания не загорается)

Если вы используете Arduino Diecimila или более старую версию с USB (например, NG), убедитесь, что джампер на плате (небольшая пластмассовая деталь возле разъема USB) установлен правильно. Если плата запитана от внешнего источника питания (подключенного к соответствующему разъему), то джампер должен замыкать два вывода, которые находятся ближе к разъему питания. Если плата запитана от USB, то джампер должен замыкать два вывода, которые находятся ближе к USB-разъему. На этой картинке показано положение джампера в случае питания платы от USB.

Запуск программы на Arduino Diecimila происходит слишком долго (6-8 секунд)

На некоторых платах Arduino Diecimila случайно был прошит загрузчик от Arduino NG. Он работает нормально, только имеет больший таймаут после сброса платы (т.к. в Arduino NG не реализован автоматический сброс, что требует ручной синхронизации процесса прошивки). Распознать загрузчик от NG можно по светодиоду, подключенному к 13 выводу: в Arduino NG после сброса платы он мигает 3 раза, а в Diecimila - 1 раз. Если в вашем Diecimila установлен загрузчик от NG, то перед прошивкой скетча ван нужно физически нажимать расположенную на плате кнопку сброса. Можно также прошить в устройство корректный загрузчик от Diecimila, подробнее об этом см. на странице о загрузчике.

Вылетает ошибка при запуске arduino.exe на Windows

Если при запуске arduino.exe под Windows возникает ошибка, например такая:

то попробуйте запустить Ардуино с помощью файла run.bat. Пожалуйста, будьте терпеливы, т.к. для запуска среды Ардуино требуется некоторое время.

Почему Ардуино не работает на старых версиях Mac OS X?

Если у вас возникает примерно такая ошибка:

Link (dyld) error: dyld: /Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino Undefined symbols: /Applications/arduino-0004/librxtxSerial.jnilib undefined reference to _printf$LDBL128 expected to be defined in /usr/lib/libSystem.B.dylib

то вероятно вам нужно обновить систему до Mac OS X 10.3.9 или новее. Системные библиотеки более старых версий не совместимы с Ардуно.

Если при запуске Ардуино у вас возникает такая ошибка:

Uncaught exception in main method: java.lang.UnsatisfiedLinkError: Native Library /Users/anu/Desktop/arduino-0002/librxtxSerial.jnilib already loaded in another classloader

то вероятно у вас старая версия библиотеки, которая отвечает за связь. Ищите файлы comm.jar или jcl.jar в папке /System/Library/Frameworks/JavaVM.framework/ или в директориях, перечисленных в переменных окружения CLASSPATH и PATH. (ошибка обнаружена Anurag Sehgal)

Что означает ошибка "Could not find the main class"?

Если при запуске Ардуино возникает такая ошибка:

проверьте, правильно ли вы распаковали содержимое .zip-архива Ардуино - в частности, убедитесь, что папка lib находится непосредственно внутри директории Arduino и содержит файл pde.jar.

Как быть с конфликтами cygwin на Windows?

Если на вашей машине уже установлен cygwin, то при попытке скомпилировать скетч в среде Ардуино может возникать такая ошибка:

Вероятнее всего, эта проблема возникает из-за использования несовместимых версий DLL-библиотеки cygwin.

Долго открывается среда Ардуино и меню Сервис (на Windows)

Если среда Ардуино запускается очень долго или подвисает при попытке открыть меню Сервис, то это говорит о конфликте с каким-то другим устройством в системе. При запуске, а также при открытии меню Сервис, программное обеспечение Ардуино пытается получить список всех доступных COM-портов в системе. Возможно, что определенный COM-порт, созданный одним из устройств компьютера замедляет этот процесс. Проверьте Диспетчер устройств. Попробуйте отключить в нем все устройства, которые могут создавать в системе COM-порты (например, Bluetooth-адаптеры).

Устройство не отображается в меню Сервис > Последовательный порт

Если вы используете Ардуино с USB, убедитесь, что драйвера на микросхему FTDI установлены корректно (инструкцию по установке см. здесь). Если же вы используете адаптер USB-UART с обычным Ардуино (без USB), проверьте, установлены ли драйвера на этот адаптер.

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

Проверьте, не запущены ли программы, сканирующие все последовательные порты, напирмер, приложения для синхронизации PDA, драйвера Bluetooth-USB (такие, как BlueSoleil), виртуальные демоны и пр.

На Windows-системах номер COM-порта, присваиваемого Арудино, может оказаться слишком большим. От пользователя zeveland:

"Небольшое примечание для тех, кто не может прошить программу в Ардуино с большим номером COM-порта: попробуйте уменьшить номер порта, ассоциированного с микросхемой FTDI."

"В моей системе куча виртуальных COM-портов от Bluetooth-адаптера, поэтому Ардуино был присвоен порт COM17. IDE не смогла найти Ардуино, поэтому я удалил другие виртуальные порты в Панели управления (под XP) и изменил порт для микросхемы FTDI на COM2. Просто убедитесь, что Ардуино использует назначенный порт и все будет ок."

Если у вас старая версия драйверов FTDI на Mac-компьютере, то придется удалить их и установить последнюю версию. Инструкции по установке см. на этой ветке форума.

При прошивке кода или в программе "Serial Monitor" вылетает ошибка gnu.io.PortInUseException (на Mac-системах)?

Чаще всего эта ошибка означает, что порт занят другим приложением. Поэтому, проверьте, не запущены ли программы, работающие с последовательными или USB-портами, например приложения синхронизации PDA, менеджеры устройств Bluetooth, определенные брандмауэры и пр. Также имейте ввиду, что некоторые программы (например, Max/MSP) оставляют последовательный порт открытым, даже когда не используют его - поэтому лучше закрыть все утилиты, использующие последовательный порт и полностью выйти из подобных приложений.

Возникают проблемы с драйверами USB FTDI

Не запускается скетч при подаче питания или сбросе Ардуино

Прошивка вроде бы прошла успешно, но ничего не работает

Вы неправильно выбрали устройство из меню Сервис > Плата. Убедитесь в том, что выбранный вами микроконтроллер соответствует тому, который установлен на вашей плате (ATmega8 или ATmega168) - модель контроллера указана на самой большой микросхеме.

Убедитесь в стабильности питания. Помехи или перебои с питанием могут приводить к ошибкам при загрузке скетча.

Еще одна возможная причина - слишком большой размер скетча для вашего устройства. При загрузке скетча, Arduino 0004 проверяет, хватит ли места в памяти ATmega8 для загружаемой программы. При этом свои расчеты Ардуино ведет исходя из того, что загрузчик в памяти контроллера занимает 1 КБ. Возможно в вашем устройстве прошита старая версия загрузчика объемом 2 КБ вместо 1 КБ, тогда из 8 КБ флеш-памяти микроконтроллера ATmega8 2 КБ уже будут заняты. Соответственно, в этом случае в контроллер загрузится только часть скетча, однако программа этого априори не знает, что и приведет к постоянным сбросам устройства.

Если у вас есть программатор (для параллельного порта или AVR-ISP), то можно обновить версию загрузчика в микроконтроллере с помощью меню Сервис > Записать загрузчик. В противном случае, можно просто подкорректировать настройки среды Ардуино, указав доступный объем памяти программ в переменной upload.maximum_size variable, находящейся внутри конфиг-файла (см. инструкции, где найти этот файл). Указанное там значение 7168 измените на 6144, после чего среда разработки будет корректно предупреждать вас при превышении допустимого объема скетча.

Как можно уменьшить размер прошивки?

Микроконтроллер ATmega168 в Arduino - довольно не дорогая модель, которая имеет всего 16 КБ памяти программ, что на самом деле не очень много (из них 2 КБ уже заняты загрузчиком).

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

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

Не формируется ШИМ-сигнал (аналоговый выход) при вызове функции analogWrite() для любых выводов, кроме 3, 5, 6, 9, 10 и 11

В микроконтроллере Ардуино (ATmega168) аппаратная поддержка ШИМ / analogWrite() реализована только на определенных выводах. Поэтому вызов функции analogWrite() на любых других выводах контроллера приведет к формированию либо высокого уровня сигнала (5 В - при значениях больше 128), либо низкого уровня (0 В - при значениях меньше 128). В более старых версиях Ардуино с микроконтроллером ATmega8 поддержка ШИМ реализована только на выводах 9, 10 и 11.

Почему возникают ошибки о необъявленных функциях или типах?

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

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

Если вы объявите функцию, возвращающую 16-битный результат (например, типа "unsigned int"), среда не поймет, что это функция и, соответственно, не создаст ее прототип. В этом случае вам придется написать его вручную, или разместить объявление этой функции в коде программы повыше - до того, как она в первый раз вызывается в программе.

При попытке прошить программу возникает ошибка "invalid device signature"

может означать одно из двух: либо у вас неправильно выбрана плата в меню Tools > Board, либо вы используете неправильную версию программы avrdude. Для загрузки скетчей в Ардуино используется немного измененная версия avrdude. Стандартная версия посылает запросы, идентифицирующие устройство, в формате, непонятном загрузчику Ардуино, что и приводит к возникновению ошибки. Поэтому убедитесь, что вы используете именно ту версию avrdude, которая идет вместе с Ардуино (исходный код).

Что делать в ситуации, когда плата Arduino Uno не появляется в диспетчере устройств на Windows и компьютер ее не видит? Эта проблема довольно распространенная, но легко решаемая. Сегодня вы в этом убедитесь, ведь для вас мы собрали все рекомендации специалистов и советы «бывалых» пользователей в одной информационной статье – она перед вами!

  1. не установлены ∕ застарели драйвера (скачиваем ∕ обновляем их);
  2. неисправен USB-кабель или порт;
  3. заводской брак ∕ не прошит микроконтроллер;
  4. возможна блокировка ОС;
  5. повреждена ∕ неисправна сама плата Ардуино.

Пункты №2 и №4 мы объединили, т.к. решение проблемы схоже в обоих случаях. Советуем отключить антивирусное приложение и проверить конфигурации Виндоус – в целях безопасности система может блокировать работу сторонних устройств и программ. Далее пробуем задействовать другой USB-порт (быть может, предыдущий не корректно настроен). Не мешает проверить целостность USB-кабеля, вдруг он пережат ∕ скручен ∕ бракованный. Ну и наконец для верности можно попробовать установить софт на другом электронном девайсе (например, ноутбуке). Ничего не помогло? - Идем далее.


Запускаем Atmel Flip:
В подменю «Device Selection» выбираем ATmega16U2. В меню «File» кликаем «Load HEX File», нам нужна прошивка Arduino-usbserial-atmega16u2-Uno-Rev3.hex


В меню «Settings → Communications» следует выбрать связь по USB. Теперь кликаем Run и дожидаемся окончания процесса прошивки. Заходим в Диспетчер, там должна появится такая информация:

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

Сегодня мы говорили о том, что делать, если компьютер не видит Arduino Uno. Проблемы с настройкой и отображением компонентов возникают у всех, но решить их могут только настойчивые и уверенные в себе пользователи – как мы с вами. Надеемся, с нашей подробной инструкцией у вас все получится! Удачи!

Платформа Arduino – это один из самых простых путей погрузиться в мир микроконтроллеров и попробовать самому их программировать. Но однако и на этом пути вас могут подстерегать различные ошибки. Некоторые из них устранить очень просто, а на устранение других у вас могут уйти целые дни. В этой статье мы рассмотрим 10 самых распространенных ошибок при работе с платформой Arduino и способы их устранения.

10 самых распространенных ошибок при работе с Arduino

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

1. Плата Arduino не распознается

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

Плата Arduino не распознается компьютером

Решение

Эта проблема обычно случается когда вы используете не оригинальную плату Arduino, а ее дешевые клоны, обычно китайского производства. В этих клонах Arduino вместо стандартного для оригинальных плат Arduino FTDI чипа (FT232RL) используется более дешевый чип CH340g (для преобразования USB в последовательный интерфейс). Драйверы для стандартного чипа FT232RL уже содержатся в установочном пакете Arduino IDE, поэтому при ее установке они также автоматически устанавливаются на ваш компьютер. А чтобы использовать клон платы Arduino с чипом CH340g вам необходимо предварительно скачать и установить драйвер для этого чипа – скачать его можно по следующей ссылке. Установка его крайне простая – я думаю, она не вызовет у вас никаких затруднений.

Установка драйвера для чипа CH340g

После его установки вы сможете увидеть в диспетчере устройств, к какому COM порту подключена ваша плата Arduino.

2. Плата не синхронизируется

Решение

Ошибка синхронизации resp = 0x00 является общим ответом (ошибкой) на все проблемы, связанные с некорректной работой микроконтроллера Atmega (или вообще его неработоспособным состоянием), являющегося "сердцем" платы Arduino. Соответственно, причин этой ошибки может быть достаточно много. Мы рекомендуем вам выполнить следующую последовательность шагов чтобы попробовать устранить эту проблему:

  1. Убедитесь в том, что ничего не подключено к цифровым контактам 0 и 1 платы Arduino (включая шилды).
  2. Убедитесь в том, что в настройках Arduino IDE вы выбрали правильный тип платы и правильный COM порт.
  3. Пару раз нажмите кнопку сброса на плате Arduino и попробуйте после этого загрузить в нее код программы.
  4. Если не помогло, то отключите и заново подсоедините плату Arduino к компьютеру.
  5. Закройте и снова запустите Arduino IDE.

Если ничего из перечисленного не помогло, то попробуйте подключить к своему компьютеру другую плату Arduino или же подключите вашу плату Arduino к другому компьютеру. Если вы обнаружите, что проблема в компьютере, то переустановите Arduino IDE. Иногда бывает и так, что Arduino IDE из Windows работает с глюками, а из другой операционной системы на этом же компьютере работает без проблем. Также встречаются энтузиасты, которые устанавливают Arduino IDE в операционную систему от платы Raspberry Pi, то есть работают с Arduino IDE на компьютере, который состоит из платы Raspberry Pi и монитора – они говорят, что в этом случае Arduino IDE работает гораздо лучше чем из под Windows. Также, если не хотите менять компьютер или операционную систему на нем, вместо Arduino IDE можно попробовать использовать аналогичные инструменты - оболочку PlatformIO или Arduino Web Editor (официальный онлайн инструмент, его не нужно устанавливать).

Если проблема оказалась в плате Arduino, то можно попробовать прошить ее стандартным программным обеспечением Arduino (то есть попросту сменить в ней загрузчик). Если это не помогло, то, скорее всего, вам придется использовать в своей работе другую плату Arduino.

3. Код программы не начинает исполняться при нажатии кнопки сброса (Reset)

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

Решение

Описанная проблема может возникать по достаточно большому количеству причин.

Если плата "висит" и ничего не делает, вы сначала должны убедиться в том, что вы в это же самое время не передаете ей никаких данных с компьютера по последовательному порту. При включении питания загрузчик платы первые несколько секунд проверяет не передаются ли плате по последовательному порту какие либо данные (например, не производится ли попытка загрузки в плату нового скетча). Если никакого нового скетча не поступает, то спустя несколько секунд загрузчик начинает исполнять последний скетч, загруженный в плату. Если же ваша программа периодически передает данные по последовательному порту плате, то загрузчик попросту не перейдет к исполнению последнего загруженного в плату скетча.

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

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

4. Invalid Device Signature Error (ошибка подписи)

Ошибка подписи при работе с платой Arduino

Эта ошибка возникает при попытке загрузки кода программы в плату Arduino, тип которой отличается от той платы, которую вы выбрали в настройках Arduino IDE. Ошибка возникает из-за того, что подпись устройства (device signature) на используемой плате отличается от подписи того типа платы, которую вы выбрали в Arduino IDE.

Решение

Выбрать правильный тип платы Arduino в настройках Arduino IDE. Если это не помогает, то можно попробовать прошить плату последней версией загрузчика Arduino (Arduino bootloader).

5. Ошибка запуска (Launch4j Error)

Ошибка запуска Arduino IDE

Arduino IDE необходимо некоторое время для того чтобы запуститься и если после ее запуска вы на что-нибудь кликаете, то возникает ошибка Launch4J error как показано на представленном рисунке. Launch4j – это инструмент, который используется для упаковки (wrapping) приложений Java в программной среде Windows, который позволяет им исполняться как обычным программам Windows.

Arduino IDE написана на JAVA и эта ошибка возникает из-за несовместимости библиотеки Java Run Time Environment (JRE), поставляемой вместе с Arduino IDE.

Решение

Часто решить эту проблему удается простым выключением Bluetooth или WiFi на вашем компьютере. Если это не помогает, то более сложным вариантом решения данной проблемы является замена библиотеки JRE в Arduino IDE на ее последнюю версию.

6. Последовательный порт уже используется (Serial Port Already in Use)

Ошибка повторного использования последовательного порта в Arduino IDE

Одна из самых простых проблем для решения. Она обычно происходит когда вы пытаетесь загрузить код программы в плату Arduino в то время когда открыто окно монитора последовательной связи (serial monitor) (но эта проблема в последних версиях Arduino IDE уже устранена) или вы пытаетесь его открыть во время обмена информацией между Arduino IDE и платой Arduino, или вы пытаетесь в это время использовать этот же самый COM порт для связи с другим устройством. То есть данная проблема возникает тогда, когда вы пытаетесь использовать последовательный порт одновременно для двух вещей.

Решение

Когда вы хотите загрузить программу в плату Arduino с помощью Arduino IDE, просто закройте (остановите работу) всех программ/приложений, которые в это же самое время могут использовать данный последовательный порт. Если в каких то программах вы не уверены, то отключите и снова подсоедините плату Arduino к компьютеру.

7. Скетч успешно загружен, но ничего не происходит

Решение

  1. Убедитесь в том, что тип выбранной в настройках Arduino IDE платы совпадает с типом платы, в которую вы загрузили программу.
  2. Также подобная ошибка может быть вызвана тем, что размер загружаемого в плату скетча превышает объем ее памяти для хранения программ. Уменьшите объем скетча или используйте плату Arduino с большим объемом памяти.
  3. Еще одной причиной подобной ошибки может быть сильная зашумленность цепей питания. Убедитесь в том, что питающее напряжение, подаваемое на плату, достаточно стабильно.

8. Неизвестная ошибка связи (Unsatisfied Link Error)

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

Решение

Для решения этой проблемы найдите файл comm.jar или jcl.jar в папке /System/Library/Frameworks/JavaVM.framework/ или в папках на вашем компьютере, относящимся к переменным окружения CLASSPATH или PATH.

9. Размер скетча слишком большой (Sketch Too Large)

Ошибка слишком большо размера скетча при работе с Arduino

Эта ошибка происходит когда размер кода программы больше чем объем перепрограммируемой памяти (flash memory, памяти для хранения программ) используемой вами платы Arduino. К примеру, объем этой памяти в плате Arduino Uno составляет 32 Кбайта, из которых 2 Кбайта заняты загрузчиком. Если вы попытаетесь загрузить в данную плату скетч объемом более 32 Кбайт, то увидите подобную ошибку.

Решение

Для решения этой проблемы модно использовать следующие способы уменьшения объема кода программы:

  1. Там, где это возможно, используйте целые типы данных (integer) вместо вещественных (float).
  2. Там, где это возможно, используйте при объявлениях переменных спецификатор “const”.
  3. Подключайте в программу только те библиотеки, которые вы будете использовать. Там, где это возможно, используйте облегченные версии используемых библиотек.
  4. Используйте специальные алгоритмы и другие способы уменьшения объема кода программы.

Более радикальным решением этой проблемы является смена платы Arduino на плату с большим объемом памяти. Например, плату Arduino Uno можно заменить на плату Arduino Mega, или даже на плату Arduino Due.

10. Ошибка переполнения стека (java.lang.StackOverflowError)

Иногда плата Arduino не может выполнить программы, в которых используется некорректная работа со строками, например, у строковых переменных пропущены кавычки в некоторых выражениях (или функциях).

Решение

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

В данной статье мы рассмотрели 10 самых распространённых ошибок при работе с Arduino. Разумеется, реальное число ошибок, которые могут возникать при работе с платами Arduino, гораздо больше чем 10, однако мы попытались в этой статье рассмотреть самые распространённые из них. Если у вас возникает какая либо ошибка, которая не рассмотрена в данной статье, можете описать ее в комментариях и мы попробуем вместе с вами ее решить.

Устранение неполадок Ардуино

Не прошиваются программы в Ардуино

В процессе передачи программы от компьютера к Ардуино участвует множество компонентов. Если хотя бы один из них сработает некорректно - процесс прошивки будет нарушен. В частности, процесс прошивки зависит от: драйверов Ардуино, выбора модели устройства и порта в среде Ардуино, физического подключения к плате, прошивке контроллера 8U2 (на Arduino Uno и Mega 2560), загрузчика главного микроконтроллера устройства, настроек фьюз-битов, и т.д. Ниже приведено несколько рекомендаций по устранению неполадок того или иного компонента.

Драйверы позволяют прикладному ПО на компьютере (т.е. среде Ардуино) общаться с подключенным к нему "железом" (платой Ардуино). Применительно к Ардуино, драйверы отвечают за создание в системе виртуального последовательного порта (или виртуального COM-порта). Arduino Uno и Mega 2560 с микроконтроллером ATmega8U2 используют стандартные драйвера (USB CDC) операционной системы. Другие же платы Ардуино, где роль USB-UART преобразователя выполняет микросхема FTDI, используют драйвера от FTDI.

Самый простой способ проверить, правильно ли установлены драйвера - это подключить Ардуино к ПК и открыть меню Tools > Serial Port в среде разработки. После подключения Ардуино здесь должны появится новые пункты меню. При этом абсолютно не важно, какое именно имя порта будет присвоено Ардуино.

  • На Windows 7 (в частности на 64-битной версии), вам возможно потребуется зайти в Диспетчер устройств и обновить драйверы Arduino Uno или Mega 2560. Для этого в диспетчере щелкните правой кнопкой по устройству (плата должна быть подключена к компьютеру) и снова укажите Windows соответствующий .inf-файл. Этот файл лежит в папке drivers/ программного обеспечения Arduino (но не в поддиректории FTDI USB Drivers).
  • Если при установке драйверов Arduino Uno или Mega 2560 под Windows XP у вас возникает следующая ошибка: "Система не может найти указанный файл", то попробуйте это решение (о добавлении ключа "RunOnce" в ветку реестра "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion").
  • На Linux, Arduino Uno и Mega 2560 определяются в виде устройств /dev/ttyACM0, которые не поддерживаются стандартной версией библиотеки RXTX, использующейся средой Ардуино для последовательной связи. Поэтому Linux-версия этой среды включает пропатченную библиотеку RXTX, которая работает в том числе работает с устройствами /dev/ttyACM*. Существует также специальный пакет для Ubuntu (11.04), в который включена поддержка таких устройств. Если же вы используете стандартный пакет RXTX, то вам нужно создать в системе символическую ссылку с /dev/ttyACM0 на /dev/ttyUSB0 (к примеру) - тогда последовательный порт появится в среде Arduino.

Доступ к последовательному порту

  • На Windows: если программа долго открывается или вылетает при запуске, либо меню Tools в ней открывается слишком долго, то в Диспетчере устройств попробуйте отключить все последовательные Bluetooth-порты и прочие сетевые COM-порты. Во время запуска или открытия меню Tools, среда разработки Ардуино сканирует все последовательные порты вашего компьютера, соответственно, наличие таких сетевых портов может иногда приводить к подвисаниями или вылетам программы.
  • Убедитесь, что у вас не запущены программы-сканеры последовательных портов, такие, как USB Cellular Wifi Dongle (например, от Sprint или Verizon), приложения для синхронизации PDA, драйвера Bluetooth-USB (например, BlueSoleil), виртуальные демоны и пр..
  • Убедитесь, что причиной блокирования последовательного порта не является брандмауэр (например, ZoneAlarm).
  • Нужно также закрыть все программы, осуществляющие мониторинг данных, идущих через USB между Ардуино и ПК (например, Processing, PD, vvvv и др.).
  • На Linux: попробуйте запустить среду Arduino от суперпользователя, хотя бы временно, чтобы увидеть, поможет это прошить Ардуино или нет.

Физическое подключение к плате

  • Первым делом убедитесь, что Ардуино включен (горит зеленый светодиод) и соединен с компьютером.
  • На Mac-компьютерах есть некоторые проблемы при подключении Arduino Uno и Mega 2560 через USB-хаб. Если в меню "Tools > Serial Port" ничего не появляется, попробуйте подключить плату непосредственно к компьютеру и перезапустить Arduino IDE.
  • На время прошивки отключите все устройства от цифровых выводов 0 и 1, поскольку эти выводы связаны с интерфейсом подключения Ардуино к компьютеру (после успешной прошивки кода в контроллер их можно снова задействовать).
  • Попробуйте прошить Ардуино, отключив от него все устройства (кроме USB-кабеля, разумеется).
  • Убедитесь в том, что плата не касается металлических предметов, проводящих ток.
  • Попробуйте другой USB-кабель, иногда они тоже выходят из строя.
  • Если ваш Арудино не поддерживает функцию авто-сброса, убедитесь в том, что вы сбрасываете плату за несколько секунд до прошивки. (Arduino Diecimila, Duemilanove и Nano поддерживают функцию авто-сброса, как и LilyPad, Pro и Pro Mini с 6-контактными разъемами для программирования).
  • Обратите внимание: некоторые Arduino Diecimila были случайно прошиты не тем загрузчиком. Такие модели требуют физического нажатия кнопки сброса перед загрузкой программы; подробнее об этом см. ниже.
  • На некоторых компьютерах нужно нажимать кнопку сброса (на плате) после нажатия кнопки Upload в среде Ардуино. Поэкспериментируйте с разными интервалами времени между нажатиями - от 0 до 10 секунд или больше с интервалом где-то через 2 секунды.
  • Если у вас возникает такая ошибка: "[VP 1] Device is not responding correctly." попробуйте прошить программу еще раз (другими словами, сбросьте плату и нажмите кнопку Upload еще раз).
  • Убедитесь в том, что на вашем Ардуино прошит загрузчик. Для этого просто перезагрузите устройство. Встроенный светодиод (подключенный к 13-й ножке контроллера) должен замигать. Если этого не произошло, то скорее всего на вашей плате нет загрузчика.

Возникает ошибка "Build folder disappeared or could not be written" (на Mac OS X)

Вы извлекли Arduino.app из образа диска (например, в папку Applications)? Если нет, то вы не сможете загружать примеры.

Не запускается среда Ардуино после обновления Java на компьютерах Mac

Последнее обновление Java от Apple пытается использовать 64-битные версии родных библиотек. Однако, в программном обеспечении Ардуино используется 32-битная версия библиотеки RXTX. При запуске Ардуино возникает примерно такая ошибка:

Для решения этой проблемы, щелкните по приложению Arduino (т.е. Arduino 16.app) в окне Finder, и из меню File выберите Get Info. На панели установите флажок "Open in 32 Bit Mode". После этого среда Ардуино должна запускаться нормально.

При компиляции программы возникает ошибка java.lang.StackOverflowError

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

Не запускается скетч при питании платы от внешнего источника (на моделях Arduino Diecimila или младше)

Поскольку вывод RX отсоединен, загрузчик Ардуино может принимать помехи, вместо данных, а значит, у него никогда не наступит таймаут и, соответственно, запуск программы не произойдет. Для решения этой проблемы, попробуйте соединить вывод RX с землей через резистор 10 кОм (или соединить выводы RX и TX).

Подвисает среда разработки Ардуино (на Windows) при попытке прошить программу

Не включается Ардуино (зеленый светодиод питания не загорается)

Если вы используете Arduino Diecimila или более старую версию с USB (например, NG), убедитесь, что джампер на плате (небольшая пластмассовая деталь возле разъема USB) установлен правильно. Если плата запитана от внешнего источника питания (подключенного к соответствующему разъему), то джампер должен замыкать два вывода, которые находятся ближе к разъему питания. Если плата запитана от USB, то джампер должен замыкать два вывода, которые находятся ближе к USB-разъему. На этой картинке показано положение джампера в случае питания платы от USB.

Запуск программы на Arduino Diecimila происходит слишком долго (6-8 секунд)

На некоторых платах Arduino Diecimila случайно был прошит загрузчик от Arduino NG. Он работает нормально, только имеет больший таймаут после сброса платы (т.к. в Arduino NG не реализован автоматический сброс, что требует ручной синхронизации процесса прошивки). Распознать загрузчик от NG можно по светодиоду, подключенному к 13 выводу: в Arduino NG после сброса платы он мигает 3 раза, а в Diecimila - 1 раз. Если в вашем Diecimila установлен загрузчик от NG, то перед прошивкой скетча ван нужно физически нажимать расположенную на плате кнопку сброса. Можно также прошить в устройство корректный загрузчик от Diecimila, подробнее об этом см. на странице о загрузчике.

Вылетает ошибка при запуске arduino.exe на Windows

Если при запуске arduino.exe под Windows возникает ошибка, например такая:

то попробуйте запустить Ардуино с помощью файла run.bat. Пожалуйста, будьте терпеливы, т.к. для запуска среды Ардуино требуется некоторое время.

Почему Ардуино не работает на старых версиях Mac OS X?

Если у вас возникает примерно такая ошибка:

то вероятно вам нужно обновить систему до Mac OS X 10.3.9 или новее. Системные библиотеки более старых версий не совместимы с Ардуно.

Если при запуске Ардуино у вас возникает такая ошибка:

то вероятно у вас старая версия библиотеки, которая отвечает за связь. Ищите файлы comm.jar или jcl.jar в папке /System/Library/Frameworks/JavaVM.framework/ или в директориях, перечисленных в переменных окружения CLASSPATH и PATH. (ошибка обнаружена Anurag Sehgal)

Что означает ошибка "Could not find the main class"?

Если при запуске Ардуино возникает такая ошибка:

проверьте, правильно ли вы распаковали содержимое .zip-архива Ардуино - в частности, убедитесь, что папка lib находится непосредственно внутри директории Arduino и содержит файл pde.jar.

Как быть с конфликтами cygwin на Windows?

Если на вашей машине уже установлен cygwin, то при попытке скомпилировать скетч в среде Ардуино может возникать такая ошибка:

Вероятнее всего, эта проблема возникает из-за использования несовместимых версий DLL-библиотеки cygwin.

Убедитесь также, что cygwin не сидит в процессах при запущенной среде Arduino. Можно также попытаться удалить файл cygwin1.dll из папки Arduino и заменить его файлом cygwin1.dll из существующего дистрибутива cygwin (который, скорей всего, находится в папке c:\cygwin\bin).

Долго открывается среда Ардуино и меню Tools (на Windows)

Если среда Ардуино запускается очень долго или подвисает при попытке открыть меню Tools, то это говорит о конфликте с каким-то другим устройством в системе. При запуске, а также при открытии меню Tools, программное обеспечение Ардуино пытается получить список всех доступных COM-портов в системе. Возможно, что определенный COM-порт, созданный одним из устройств компьютера замедляет этот процесс. Проверьте Диспетчер устройств. Попробуйте отключить в нем все устройства, которые могут создавать в системе COM-порты (например, Bluetooth-адаптеры).

Устройство не отображается в меню Tools | Serial Port

Если вы используете Ардуино с USB, убедитесь, что драйвера на микросхему FTDI установлены корректно (инструкцию по установке см. здесь). Если же вы используете адаптер USB-UART с обычным Ардуино (без USB), проверьте, установлены ли драйвера на этот адаптер.

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

Проверьте, не запущены ли программы, сканирующие все последовательные порты, напирмер, приложения для синхронизации PDA, драйвера Bluetooth-USB (такие, как BlueSoleil), виртуальные демоны и пр.

На Windows-системах номер COM-порта, присваиваемого Арудино, может оказаться слишком большим. От пользователя zeveland:

"Небольшое примечание для тех, кто не может прошить программу в Ардуино с большим номером COM-порта: попробуйте уменьшить номер порта, ассоциированного с микросхемой FTDI."

"В моей системе куча виртуальных COM-портов от Bluetooth-адаптера, поэтому Ардуино был присвоен порт COM17. IDE не смогла найти Ардуино, поэтому я удалил другие виртуальные порты в Панели управления (под XP) и изменил порт для микросхемы FTDI на COM2. Просто убедитесь, что Ардуино использует назначенный порт и все будет ок."

Если у вас старая версия драйверов FTDI на Mac-компьютере, то придется удалить их и установить последнюю версию. Инструкции по установке см. на этой ветке форума.

При прошивке кода или в программе "Serial Monitor" вылетает ошибка gnu.io.PortInUseException (на Mac-системах)?

Чаще всего эта ошибка означает, что порт занят другим приложением. Поэтому, проверьте, не запущены ли программы, работающие с последовательными или USB-портами, например приложения синхронизации PDA, менеджеры устройств Bluetooth, определенные брандмауэры и пр. Также имейте ввиду, что некоторые программы (например, Max/MSP) оставляют последовательный порт открытым, даже когда не используют его - поэтому лучше закрыть все утилиты, использующие последовательный порт и полностью выйти из подобных приложений.

Возникают проблемы с драйверами USB FTDI

Не запускается скетч при подаче питания или сбросе Ардуино

Прошивка вроде бы прошла успешно, но ничего не работает

Вы неправильно выбрали устройство из меню Tools > Microcontroller. Убедитесь в том, что выбранный вами микроконтроллер соответствует тому, который установлен на вашей плате (ATmega8 или ATmega168) - модель контроллера указана на самой большой микросхеме.

Убедитесь в стабильности питания. Помехи или перебои с питанием могут приводить к ошибкам при загрузке скетча.

Еще одна возможная причина - слишком большой размер скетча для вашего устройства. При загрузке скетча, Arduino 0004 проверяет, хватит ли места в памяти ATmega8 для загружаемой программы. При этом свои расчеты Ардуино ведет исходя из того, что загрузчик в памяти контроллера занимает 1 КБ. Возможно в вашем устройстве прошита старая версия загрузчика объемом 2 КБ вместо 1 КБ, тогда из 8 КБ флеш-памяти микроконтроллера ATmega8 2 КБ уже будут заняты. Соответственно, в этом случае в контроллер загрузится только часть скетча, однако программа этого априори не знает, что и приведет к постоянным сбросам устройства.

Если у вас есть программатор (для параллельного порта или AVR-ISP), то можно обновить версию загрузчика в микроконтроллере с помощью меню Tools | Burn Bootloader. В противном случае, можно просто подкорректировать настройки среды Ардуино, указав доступный объем памяти программ в переменной upload.maximum_size variable, находящейся внутри конфиг-файла (см. инструкции, где найти этот файл). Указанное там значение 7168 измените на 6144, после чего среда разработки будет корректно предупреждать вас при превышении допустимого объема скетча.

Как можно уменьшить размер прошивки?

Микроконтроллер ATmega168 в Arduino - довольно не дорогая модель, которая имеет всего 16 КБ памяти программ, что на самом деле не очень много (из них 2 КБ уже заняты загрузчиком).

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

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

Не формируется ШИМ-сигнал (аналоговый выход) при вызове функции analogWrite() для любых выводов, кроме 3, 5, 6, 9, 10 и 11

В микроконтроллере Ардуино (ATmega168) аппаратная поддержка ШИМ / analogWrite() реализована только на определенных выводах. Поэтому вызов функции analogWrite() на любых других выводах контроллера приведет к формированию либо высокого уровня сигнала (5 В - при значениях больше 128), либо низкого уровня (0 В - при значениях меньше 128). В более старых версиях Ардуино с микроконтроллером ATmega8 поддержка ШИМ реализована только на выводах 9, 10 и 11.

Почему возникают ошибки о необъявленных функциях или типах?

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

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

Если вы объявите функцию, возвращающую 16-битный результат (например, типа "unsigned int"), среда не поймет, что это функция и, соответственно, не создаст ее прототип. В этом случае вам придется написать его вручную, или разместить объявление этой функции в коде программы повыше - до того, как она в первый раз вызывается в программе.

При попытке прошить программу возникает ошибка "invalid device signature"

может означать одно из двух: либо у вас неправильно выбрана плата в меню Tools > Board, либо вы используете неправильную версию программы avrdude. Для загрузки скетчей в Ардуино используется немного измененная версия avrdude. Стандартная версия посылает запросы, идентифицирующие устройство, в формате, непонятном загрузчику Ардуино, что и приводит к возникновению ошибки. Поэтому убедитесь, что вы используете именно ту версию avrdude, которая идет вместе с Ардуино (исходный код).

У некоторых пользователей при подключении контроллеров Arduino, ОС Windows перестает видеть его как устройство, хотя драйвера были установлены и плата работала.

Инструкция по перепрошивке

Инструкция по перепрошивке контроллера Atmega8U2 для Arduino Uno или Mega2560.

Шаг 1

Скачиваем программу “FLIP” отсюда:

Шаг 2

Скачиваем последнюю версию прошивки отсюда:

Выбираем в зависимости от того, каким из девайсов обладаем:

Также файлы прошивок находятся в папке:

Взять Arduino Ssoftware можно на официальном сайте arduino.cc.

Шаг 3

Соединяем перемычкой или 10 кОм резистором два контакта, расположенных на тыльной стороне платы.


Шаг 4

Подключаем Ардуино через usb кабель к компьютеру, как обычно.

Шаг 5

На несколько секунд замыкаем два контакта, находящихся над Atmega8U2, для сброса контроллера.


Шаг 6

Компьютер находит новое устройиство, для которого требует драйверы. Устанавливаем драйвер из папки (той, в которую вы установили FLIP):

Во время установки винда ругается, что драйвер не подписан каким-то сертификатом и т.д., все равно соглашаемся. В системе появляется устроиство “at90usb82”.

Шаг 7

Запускаем FLIP, выбираем пункт меню:

File -> Load HEX File

Выбираем скачанную прошивку. Желательно, чтобы в пути к файлу прошивки не было русских символов. У меня например файл прошивки, находящийся на “рабочем столе” не смог открыться, а вот из “C:\” загрузился нормально.

Шаг 8

Выбираем пункт меню “Device->Select”, затем выбираем из списка “at90usb82”.

Шаг 9

Выбираем пункт меню “Settings->Communication->Usb”, затем в появившемся окошке щелкаем кнопку “Open”

Шаг 10

Проверяем чтобы стояли галочки, нажимаем кнопку “Run”.

Шаг 11

Не забываем отпаять резистор от платы.

Все. Микроконтроллер перепрошит, устройство готово к работе. По идее таким образом можно прошить Atmega8U2 другой прошивкой, и ваш Ардуино станет восприниматься системой как джойстик, клавиатура, или например принтер.

Читайте также: