-
Всем добрый день.
У меня в IDE при попытке зайти в менеджер библиотек или менеджер плат вылезает такая ошибка:
Возникла ошибка при загрузке http://downloads.arduino.cc/packages/package_index.json
И дальше куча непонятных строк.
Кто-нибудь с этим сталкивался?
Вообще, сижу на даче, но здесь есть хороший Интернет. Ограничений вроде никаких нет. -
Бьюсь весь день.
Переустановил джаву. Не помогло.
На западных сайтах эту ошибку описывали еще в прошлом году. Там рекомендовали подправить настройки java. Сделал — не помогло. Была рекомендация почистить tmp в app data/arduino15/ Не помогло.
Обнаружил,что эта страница не открывается ни в одном браузере.
Более того, не получается скачать вообще ничего с этого сайта. Ни саму IDE, ни что-то другое. Дохожу до страницы, где есть кнопа Download, нажимаю на нее, и все…
Похоже, что где-то в настройках сет есть запрет на этот сайт.
Облазил касперского, настройки в винде. Залез даже в настройки роутера. Нигде ничего нет. Ни явных запретов, ни явных разрешений. Но я в этих настройках не сильно понимаю.
Написал местному провайдеру, но они пока молчат.
Подскажите что-нибудь. Моя фантазия иссякла. -
Возникла такая же ошибка. Решил следующим способом:
Заходим в командную строку, вставляем туда setx _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true правой кнопкой мышки.
Бинго! Заходим в ИДЕ и все загружается как и должноРешение проблемы подсказал пользователь clivepengelly, источник https://github.com/arduino/Arduino/issues/5188
-
У меня была такая же проблема, и настройка Java не помогла. Дело в том, что даже в браузере адрес http://downloads.arduino.cc/packages/package_index.json не открывается. Зато открывается через анонимайзер и переправляет на https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
Я указал этот адрес в настройках Arduino IDE и всё заработало. -
В свете последних событий — говорим личное спасибо г-ну (это сокращение не от слова «господин», если что) Жарову и обезличенное — г-нам (от того же слова сокращение) из Роскомпозора.
Так мне кажется.
-
Страждущим:
Ардуино ИДЕ можно пользоваться вообще без подключения к инету, так что непонятно, чем вам эта ошибка мешает.
Менеджером библиотек в жизни не пользовался — скачиваю с Гитхаба и разворачиваю вручную. -
Видимо не скачивает дополнения для esp8266 судя по строке.
-
Столкнулся с аналогичной проблемой.
Что бы решить ее надо:
1. зайти в папку «C:\Users\{имя пользователя}\AppData\Local\Arduino15»
2. удалить все файлы, кроме «preferences.txt»
3. перезапустить Arduino IDE
-
#1
Добрый день! Есть проблема с менеджером плат в Arduino IDE. При добавлении ссылок на сторонние платы пишет «Возникла ошибка при загрузке» и ссылка. Причём так только на моём компьютере и только на работе. Причину установить не удалось — пробовал советы из интернета, типа запуска keytool джавы, установка сертификата и т.п. В т.ч. переустанавливал и среду, и джаву, и пайтон. Пробовал разные версии. Ничто не помогает. Вручную скачать json браузером и закинуть в папку Arduino15 — так работает. Но хочется всё же делать это не вручную.
Кроме этого, обнаружил, что некоторые ссылки всё же подгружаются средой. Например,
https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json — средой видится
http://arduino.esp8266.com/stable/package_esp8266com_index.json — средой не видится
При этом обе ссылки прекрасно открываются браузером.
-
#2
Для начала обновить Arduino IDE
-
#5
@taltsutamatu, посмотрите настройки фаерволла винды и/или антивируса. Похоже, причина там.
Изменено:
-
#6
@Геннадий П, а вот это помогло. Правда, не все ссылки остаются рабочими при смене на https. То есть браузером http открывается у такой ссылки, а https — нет. Например,
@PiratFox, антивиря нету. В брандмауэре винды создал правило для ардуино IDE, разрешать всё.
-
#7
@taltsutamatu,
Интернет от какого оператора? Проводной или мобильный?
Не обратил внимания сначала:
Причём так только на моём компьютере и только на работе.
Как вариант: роутер или чтото на работе вмешивается в http-трафик, от этого и ошибка.
Попробовать на работе браузером в анонимном режиме скачать файл и дома где все нормально, и сравнить их на различия.
Изменено:
-
#8
@taltsutamatu, а что вы хотели? Некоторые сайты имеют подключение SSL, другие — нет. Это — Интернет!
-
#9
@taltsutamatu, а что вы хотели?
а хотел я добавить плату в менеджер плат. А http ссылки, как оказалось, не добавляются, хотя браузер их прекрасно скачивает.
@Геннадий П, всё так же конкретно для ссылки http://drazzy.com/package_drazzy.com_index.json
браузер открывает и в обычном режиме, и в режиме инкогнито эту ссылку через http. Но если добавить https, то не открывается. Понятное дело, что это ссылка просто не работает через https. Но как же её всё-таки добавить в менеджер плат? Ведь браузер открывает http => нет блокировки. Плюс проверил ещё на компе коллеги, там всё работает без вопросов. Может мне не хватает каких-нибудь библиотек на компе (какой-нибудь версии джава, я не знаю)?
-
#10
@taltsutamatu, браузер,
как правило
, поддерживает переадресацию. Многие сайты имеют кросс-переадресацию (т.е., когда набираешь http, то переадресовывается на https,и наоборот). Очевидно, этого нет в Arduino IDE, так как потенциально это — опасная операция и должна подтверждаться/контролироваться инициировавшим её человеком.
-
#11
Многие сайты имеют кросс-переадресацию
У этого без переадресации.
Status: 200 OK
Code: 200
Date: Tue, 25 Jan 2022 08:30:12 GMT
Server: Apache/2.2.34 (Amazon)
Last-Modified: Tue, 25 Jan 2022 00:00:02 GMT
ETag: "1ea-2fa6f-5d65cc451b726"
Accept-Ranges: bytes
Content-Length: 195183
Connection: close
Content-Type: application/json
-
#12
В общем, проблема решилась. На работе нужно было вручную прописать конфигурацию прокси в настройках IDE.
СОДЕРЖАНИЕ ►
- Произошла ошибка при загрузке скетча в Ардуино
- programmer is not responding
- a function-definition is not allowed arduino ошибка
- expected initializer before ‘}’ token arduino ошибка
- ‘что-то’ was not declared in this scope arduino ошибка
- No such file or directory arduino ошибка
- Compilation error: Missing FQBN (Fully Qualified Board Name)
Ошибки компиляции Arduino IDE возникают при проверке или загрузке скетча в плату, если код программы содержит ошибки, компилятор не может найти библиотеки или переменные. На самом деле, сообщение об ошибке при загрузке скетча связано с невнимательностью самого программиста. Рассмотрим в этой статье все возможные ошибки компиляции для платы Ардуино UNO R3, NANO, MEGA и пути их решения.
Произошла ошибка при загрузке скетча Ардуино
Самые простые ошибки возникают у новичков, кто только начинает разбираться с языком программирования Ардуино и делает первые попытки загрузить скетч. Если вы не нашли решение своей проблемы в статье, то напишите свой вопрос в комментариях к этой записи и мы поможем решить вашу проблему с загрузкой (бесплатно!).
avrdude: stk500_recv(): programmer is not responding
Что делать в этом случае? Первым делом обратите внимание какую плату вы используете и к какому порту она подключена (смотри на скриншоте в правом нижнем углу). Необходимо сообщить Arduino IDE, какая плата используется и к какому порту она подключена. Если вы загружаете скетч в Ардуино Nano V3, но при этом в настройках указана плата Uno или Mega 2560, то вы увидите ошибку, как на скриншоте ниже.
Такая же ошибка будет возникать, если вы не укажите порт к которому подключена плата (это может быть любой COM-порт, кроме COM1). В обоих случаях вы получите сообщение — плата не отвечает (programmer is not responding). Для исправления ошибки надо на панели инструментов Arduino IDE в меню «Сервис» выбрать нужную плату и там же, через «Сервис» → «Последовательный порт» выбрать порт «COM7».
a function-definition is not allowed here before ‘{‘ token
Это значит, что в скетче вы забыли где-то закрыть фигурную скобку. Синтаксические ошибки IDE тоже распространены и связаны они просто с невнимательностью. Такие проблемы легко решаются, так как Arduino IDE даст вам подсказку, стараясь отметить номер строки, где обнаружена ошибка. На скриншоте видно, что строка с ошибкой подсвечена, а в нижнем левом углу приложения указан номер строки.
expected initializer before ‘}’ token / expected ‘;’ before ‘}’ token
Сообщение expected initializer before ‘}’ token говорит о том, что вы, наоборот где-то забыли открыть фигурную скобку. Arduino IDE даст вам подсказку, но если скетч довольно большой, то вам придется набраться терпения, чтобы найти неточность в коде. Ошибка при компиляции программы: expected ‘;’ before ‘}’ token говорит о том, что вы забыли поставить точку с запятой в конце командной строки.
‘что-то’ was not declared in this scope
Что за ошибка? Arduino IDE обнаружила в скетче слова, не являющиеся служебными или не были объявлены, как переменные. Например, вы забыли продекларировать переменную или задали переменную ‘DATA’, а затем по невнимательности используете ‘DAT’, которая не была продекларирована. Ошибка was not declared in this scope возникает при появлении в скетче случайных или лишних символов.
Например, на скриншоте выделено, что программист забыл продекларировать переменную ‘x’, а также неправильно написал функцию ‘analogRead’. Такая ошибка может возникнуть, если вы забудете поставить комментарий, написали функцию с ошибкой и т.д. Все ошибки также будут подсвечены, а при нескольких ошибках в скетче, сначала будет предложено исправить первую ошибку, расположенную выше.
exit status 1 ошибка компиляции для платы Arduino
Данная ошибка возникает, если вы подключаете в скетче библиотеку, которую не установили в папку libraries. Например, не установлена библиотека ИК приемника Ардуино: fatal error: IRremote.h: No such file or directory. Как исправить ошибку? Скачайте нужную библиотеку и распакуйте архив в папку C:Program FilesArduinolibraries. Если библиотека установлена, то попробуйте скачать и заменить библиотеку на новую.
Довольно часто у новичков выходит exit status 1 ошибка компиляции для платы arduino uno /genuino uno. Причин данного сообщения при загрузке скетча в плату Arduino Mega или Uno может быть огромное множество. Но все их легко исправить, достаточно внимательно перепроверить код программы. Если в этом обзоре вы не нашли решение своей проблемы, то напишите свой вопрос в комментариях к этой статье.
missing fqbn (fully qualified board name)
Ошибка возникает, если не была выбрана плата. Обратите внимание, что тип платы необходимо выбрать, даже если вы не загружаете, а, например, делаете компиляцию скетча. В Arduino IDE 2 вы можете использовать меню выбора:
— список плат, которые подключены и были идентифицированы Arduino IDE.
— или выбрать плату и порт вручную, без подключения микроконтроллера.
{{#setlogo:ArduinoCommunityLogo.png}}
Проверка/Оформление/Редактирование: Мякишев Е.А.
На загрузку программы на Arduino влияет сразу несколько вещей, и если хотя бы одна из них дает сбой, загрузка будет неуспешной. Вот некоторые из этих факторов: драйверы платы, плата и порт, выбранные в IDE Arduino, физическое подключение к плате, прошивка 8U2 (на Uno и Mega2560), загрузчик на главном микроконтроллере платы, фьюз-настройки микроконтроллера и т.д. Ниже – несколько решений каждой из этих проблем:
IDE Arduino
- Убедитесь, что выбрали правильную плату в меню Инструменты > Плата (Tools > Board). То есть если вы работаете с Arduino Uno, то выбрать нужно именно ее. Кроме того, новые версии плат Arduino Duemilanove идут с процессором ATmega328, а старые – с ATmega168. Чтобы определить, каким именно процессором оснащена ваша плата, найдите ее микроконтроллер (самый большой чип на плате) и прочтите написанный на нем текст. Более подробно о меню «Плата» читайте в статье об IDE Arduino.
- Теперь проверьте, правильный ли выбран порт в меню Инструменты > Порт (Tools > Serial Port). Если порт не отображается, попробуйте перезапустить IDE, но плата при этом должна быть подключена к компьютеру. На Mac последовательный порт должен выглядеть примерно так – /dev/tty.usbmodem621 (для Uno или Mega 2560) или /dev/tty.usbserial-A02f8e (для старых плат на базе FTDI). На Linux – /dev/ttyACM0 или вроде того (для Uno или Mega2560) или /dev/ttyUSB0 или вроде того (для старых версий). На Windows это будет COM-порт, а какой именно – нужно будет посмотреть в «Менеджере устройств» (под секцией с портами). Если последовательного порта у Arduino не видно, читайте раздел ниже, посвященный драйверам.
Драйверы
Драйверы – это средства, с помощью которых ПО, установленное на вашем компьютере (т.е. IDE Arduino), «общается» с оборудованием, подключенным к вашему компьютеру (т.е. с платой Arduino). В случае Arduino драйверы отвечают за создание виртуального последовательного порта (или виртуального COM-порта). У плат Arduino Uno и Mega 2560 (у которых последовательная передача данных трансформируется в USB-сигнал при помощи контроллера ATmega8U2) для этого используются стандартные драйверы (USB CDC), идущие в комплекте с ОС. У других плат Arduino (где преобразование последовательного сигнала в USB-сигнал осуществляется при помощи FDTI-чипа) для этого используются FDTI-драйверы.
Самый простой способ проверить, правильные ли драйверы установлены для вашей платы – это открыть в IDE Arduino меню Инструменты > Порт (Tools > Serial Port). Причем это надо сделать два раза: первый – когда Arduino будет подключена к компьютеру, и второй – когда не будет. Затем нужно сравнить результаты. Когда Arduino не будет подключена к компьютеру, в меню «Порт» должны появиться дополнительные пункты, имеющие отношение к отключенной Arduino. Какое название будет присвоено последовательному порту Arduino – не важно.
- Если вы используете Uno или Mega 2560, то на Windows (особенно на 64-битной версии) вам, возможно, придется зайти в «Менеджер устройств» и обновить драйверы. Просто кликните по девайсу правой кнопкой мыши (плата должна быть подключена к компьютеру), а затем снова укажите Windows соответствующий файл с расширением *.inf. Он должен находиться в директории IDE Arduino в папке drivers (но не в подпапке FTDI USB Drivers).
- Если, устанавливая на Windows XP драйверы к Uno или Mega 2560, вы получаете ошибку The system cannot find the file specified («Система не может найти указанный файл»), попробуйте это решение (т.е. добавьте ключ RunOnce в «HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion»).
- На Linux платы Uno и Mega 2560 отображаются как /dev/ttyACM0. Однако стандартной версией библиотеки RXTX, которую Arduino использует для последовательной передачи данных, это не поддерживается. Впрочем, Linux-версия IDE Arduino содержит пропатченную версию RXTX-библиотеки, которая умеет искать эти /dev/ttyACM* девайсы. Кроме того, есть еще пакет для Ubuntu (для 11.04), в котором тоже есть поддержка этих девайсов. Если же, однако, вы используете RXTX-пакет из своего дистрибутива, то для того, чтобы в IDE Arduino появился нужный последовательный порт, вам, возможно, придется сделать симлинк от /dev/ttyACM0 к /dev/ttyUSB0 (к примеру).
Запустите:
sudo usermod -a -G tty yourUserName sudo usermod -a -G dialout yourUserName
Чтобы изменения вступили в силу, разлогиньтесь и снова залогиньтесь.
Доступ к последовательному порту
- Если, когда вы работаете на Windows, IDE Arduino не запускается или тормозит, или если у нее медленно открывается меню «Инструменты», то вам, возможно, надо будет отключить в «Менеджере устройств» последовательные Bluetooth-порты или другие сетевые порты. Дело в том, что IDE Arduino при запуске и открытии меню «Инструменты» сканирует все последовательные (COM) порты на вашем компьютере, и это иногда влечет за собой большие задержки и даже вылеты программы.
- Убедитесь, что у вас не запущены другие программы для сканирования последовательных портов – вроде ПО для мобильных USB-модемов, синхронизирующих приложений для КПК, драйверов Bluetooth-USB, виртуальных эмуляторов и т.д.
- Убедитесь, что ваш фаервол не блокирует доступ к последовательному порту. Среди таких фаерволов числится, например, ZoneAlarm.
- Вам нужно будет выйти из Processing, vvvv и т.д., если вы используете их для чтения данных при USB— или последовательной передаче данных на плату Arduino.
- На Linux можно попробовать запустить IDE Arduino через root – хотя бы временно, чтобы посмотреть, доступны ли для загрузки какие-нибудь обновления с фиксами.
Физическое соединение
- Во-первых, убедитесь, что плата включена (если горит зеленый светодиод – значит, включена) и подсоединена к компьютеру.
- На Arduino Uno и Mega 2560 могут быть проблемы с подключением к Mac через USB-хаб. Если в меню Инструменты > Порт (Tools > Serial Port) ничего не появляется, попробуйте подключить плату к компьютеру напрямую и перезапустить IDE Arduino.
- Во время загрузки отключите 0-ой и 1-ый цифровой контакты, т.к. они тоже используются для последовательной коммуникации с компьютером (их можно будет снова включить, когда код будет загружен).
- Попробуйте загрузить код на плату, когда к ней не подключено вообще ничего (кроме USB-кабеля, разумеется).
- Убедитесь, что плата не касается ничего металлического или токопроводящего.
- Попробуйте другой USB-кабель. Иногда они не работают.
Автоматический сброс
- Если ваша плата не поддерживает автоматический сброс, то его необходимо делать вручную за пару секунд до загрузки кода (автоматический сброс поддерживают модели Diecimila, Duemilanove и Nano, а также LilyPad, Pro и Pro Mini с 6-контактной гребенкой).
- Впрочем, имейте в виду, что на некоторые Diecimila был случайно записан неправильный загрузчик, и вам перед загрузкой придется нажимать на кнопку сброса вручную (см. вопрос о долгой загрузке Diecimila ниже).
- Кроме того, на некоторых компьютерах кнопку сброса, возможно нужно будет нажать после того, как вы нажмете кнопку загрузки в IDE Arduino. Попробуйте разные интервалы – до 10 секунд и более.
- Если вы получили ошибку [VP 1] Device is not responding correctly, попробуйте загрузиться снова, т.е. сбросьте плату и еще раз нажмите в IDE Arduino кнопку загрузки.
Загрузчик
- Убедитесь, что на вашу Arduino записан загрузчик. Чтобы проверить это, сбросьте плату. В ответ на это действие должен заморгать L-светодиод (тот, который подключен к 13-ому контакту). Если не заморгал, то загрузчика на вашей плате может не быть.
Если ничего из вышеописанного не помогает, попробуйте спросить совета на форуме. Перед публикацией поста убедитесь, что ответили в нем на следующие вопросы:
- Какая у вас операционная система?
- Какая у вас модель Arduino? Если это Mini, LilyPad или другая плата, требующая дополнительной проводки, если возможно, приложите фото всей этой системы.
- Проблемы с загрузкой были всегда? Или появились спустя какое-то время после нормальной работы? Если да, то что вы делали с платой перед тем, когда она перестала работать? Какое ПО вы недавно устанавливали или удаляли с компьютера?
- Какие сообщения отображаются, когда вы пытаетесь загрузить код с включенным «подробным выводом»? Чтобы увидеть их, кликая на кнопку загрузки, зажмите клавишу ⇧ Shift .
Почему у меня выскакивает ошибка «Build folder disappeared or could not be written» (на Mac OS X)?
Вы вытащили Arduino.app из образа диска (скажем, в папку Applications)? Если нет, то загружать скетчи у вас не получится.
Почему IDE Arduino не запускается после обновления Java на Mac?
Последнее обновление Java от Apple пытается использовать 64-битные версии родных библиотек, тогда как RXTX-библиотека Arduino идет в 32-битной версии. Таким образом, если вы запустите Arduino, то получите примерно такую ошибку:
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. Теперь IDE Arduino должна запуститься нормально.
Почему при попытке скомпилировать программу мне выдает ошибку java.lang.StackOverflowError?
Среда разработки Arduino делает некоторую предварительную обработку скетча, манипулируя кодом при помощи регулярных выражений. И порой во время этой обработки натыкается на строки, которые сбивают ее с толку. То есть, если вы увидите ошибку вроде…
java.lang.StackOverflowError at java.util.Vector.addElement(Unknown Source) at java.util.Stack.push(Unknown Source) at com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java)
…или…
at com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) at com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) at com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) at com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) at com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) at com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) at com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java)
…то случилось именно это. Следовательно, вам надо поискать в коде строки с «двойными кавычками», ‘одинарными кавычками’, обратными слэшами, комментариями и т.д. К примеру, проблемы могут возникнуть из-за пропущенных кавычек и строк вроде ‘ » ‘ (используйте вместо этого ‘ » ‘).
Какой блок питания использовать?
Как правило, плата Arduino может успешно функционировать от питания, идущего через USB-порт компьютера, к которому она подключена, однако тут есть два фактора. Во-первых, это зависит от количества и типа опциональных Shield-модулей, подключенных к Arduino, а во-вторых, от того, сколько тока может дать USB-порт компьютера (этот показатель варьируется в зависимости от производителя и модели компьютера).
Если вы обнаружите, что вашей Arduino нужно дополнительное питание, или вам понадобится, чтобы она функционировала без подключения к USB-порту компьютера, или при использовании Arduino с портом, который не дает питания, то вам понадобится блок питания, обеспечивающий напряжение от 7 до 12 В (Вольт) и достаточную силу тока. Для этих целей подойдут, например, адаптеры, умеющие конвертировать переменный ток в постоянный – они используются, как правило, для потребительской электроники, и их можно часто встретить в розничных магазинах. Однако нужно убедиться, что покупаемый адаптер имеет правильный коннектор, подходящий к разъему питания на Arduino: коннектор должен быть круглым, его внешний диаметр – 5,5 мм, а диаметр внутреннего отверстия-контакта – 2,1 мм. При этом отрицательное напряжение (или «земля») будет на внешнем контакте коннектора, а положительное – в контакте на внутреннем отверстии.
Для большинства случаев достаточно, как правило, силы тока в 1 ампер, однако некоторым Shield-модулям (или «небоскребу» из Shield-модулей) может потребоваться больше. То есть вам надо будет сложить силу тока, требуемую для питания всех подключенных к плате Shield-модулей, и купить адаптер, который сможет это совокупное питание обеспечивать (если адаптер будет давать больше, то никаких вредных побочных эффектов не будет). Также нужно помнить, что встроенный 5-вольтовый регулятор не сможет обеспечивать бесконечное количество тока (если не хотите перегреть плату, то лучше не превышать отметку в 800 миллиампер). Следовательно, если вашему проекту нужно больше, то необходимые 5 вольт (или вставьте сюда другое количество вольт, необходимых для вашего проекта) можно давать избирательно, питая различные устройства при помощи соответствующего количества адаптеров/регуляторов, а затем подключив из «земли» к одному контакту и тем самым заставив эти устройства работать вместе.
Почему мой скетч не запускается, когда плата питается от внешнего источника? (касается Arduino Diecimilia или еще более ранних моделей)
Из-за того, что RX-контакт не подключен, загрузчик на плате, возможно, будет видеть, что на плату идут мусорные данные. Следовательно, загрузчик будет работать вечно, а не те 6-8 секунд, что ему положены, а ваш скетч никогда не запустится. Попробуйте привязать RX-контакт к «земле» через 10000-омовый резистор или подключить RX-контакт напрямую к TX-контакту.
Почему IDE Arduino зависает, когда я пытаюсь загрузить программу (на Windows)?
Возможно, из-за конфликта с процессом Logitech – «LVPrcSrv.exe». Откройте диспетчер задач, и если этот процесс запущен, удалите его перед тем, как будете загружать скетч на Arduino.
Плата не включается (не загорается зеленый светодиод, отвечающий за питание) – что делать?
Если вы используете Diecimila или еще более раннюю USB-модель (например, NG), убедитесь, что перемычка (маленькая пластиковая деталь рядом с USB-разъемом) сидит на правильных контактах. Если плата питается от внешнего блока питания (вставленного в разъем для питания), перемычка должна сидеть на двух контактах, которые находятся ближе к разъему для питания. Если плата питается от USB, перемычка должна сидеть на контактах, находящихся ближе к USB-разъему. На фото ниже показано расположение перемычки, при котором питание будет осуществляться от USB-разъема.
Почему Arduino Diecimila так долго (6-8 секунд) запускает мой скетч?
На некоторые Arduino Diecimila был случайно записан загрузчик Arduino NG. Впрочем, он должен работать нормально, однако при сбросе платы скетч загружается дольше обычного (у NG нет автоматического сброса, поэтому синхронизацию процесса загрузки нужно делать вручную). Чтобы узнать, какой загрузчик стоит на Arduino, выполните сброс платы – если светодиод на 13-ом контакте моргнул 3 раза, это NG-загрузчик, а если 1 раз – это Diecimila-загрузчик. Таким образом, если у вас Diecimila с загрузчиком от NG, вам перед загрузкой скетча, возможно, понадобится сделать ручной сброс платы. Впрочем, есть и другой вариант – записать на Diecimila правильный загрузчик (читайте об этом тут).
Что делать, если при запуске arduino.exe на Windows выдает ошибку?
Если при двойном клике на иконку arduino.exe появляется ошибка вроде…
Arduino has encountered a problem and needs to close.
…вам нужно запустить Arduino при помощи файла run.bat. И проявите терпение – IDE Arduino может понадобиться некоторое время для запуска.
Почему Arduino не запускается на старых версиях 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 или позже. В старых версиях содержатся несовместимые версии некоторых системных библиотек.
Спасибо Gabe462 за подсказку.
Что делать, если при запуске Arduino выдает ошибку UnsatisfiedLinkError (о родной библиотеке librxtxSerial.jnilib)?
Если при запуске Arduino появляется примерно такая ошибка…
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/ или в папках, которые указаны в переменных PATH и CLASSPATH, находящихся в файлах IDE Arduino.
За подсказку спасибо Анурагу Сегалу (Anurag Sehgal).
Что насчет ошибки «Could not find the main class»?
Если при запуске Arduino выдает вот такую ошибку…
Java Virtual Machine Launcher: Could not find the main class. Program will exit.
…убедитесь, что вы правильно извлекли содержимое файла Arduino.zip. В частности, папка lib должна находиться аккурат в папке Arduino и содержать файл pde.jar.
Что можно сделать, если у Arduino возникают конфликты с Cygwin (на Windows)?
Если на вашей машине установлен Cygwin, то при попытке скомпилировать скетч вам может выдать следующую ошибку:
6 [main] ? (3512) C:Devarduino-0006toolsavrbinavr-gcc.exe: *** fatal error - C:Devarduino-0006toolsavrbinavr-gcc.exe: *** system shared memory version mismatch detected - 0x75BE0084/0x75BE009C. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:cygwinbin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL.
Если выдало, то перед использованием Arduino убедитесь, что у вас не запущен Cygwin. Если это не помогает, можно попробовать удалить cygwin.dll из папки Arduino и заменить его на сygwin.dll, находящийся в папке Cygwin (возможно, по маршруту c:cygwinbin).
За подсказку спасибо karlcswanson.
Почему так долго открываются IDE Arduino и меню «Инструменты» (на Windows)?
Если IDE Arduino долго запускается или зависает при попытке открыть меню «Инструменты», то здесь может быть конфликт с другим устройством в вашей системе. Среда разработки Arduino, будучи запущенной или когда вы пытаетесь открыть меню «Инструменты», пытается составить список всех COM-портов на вашем компьютере. Возможно, этот процесс замедляется каким-то COM-портом, созданным одним из девайсов на вашем компьютере.
Загляните в «Менеджер устройств». Попробуйте отключить устройства с COM-портами (например, Bluetooth-устройства).
Почему моя плата не отображается в меню Инструменты > Порт (Tools > Serial Port)?
Если вы используете USB-плату Arduino, обязательно установите FTDI-драйверы. Если вы используете обычную (не USB) плату с адаптером, конвертирующим USB-сигнал в UART-сигнал, то обязательно убедитесь, что у вас стоят драйверы для этой платы.
Кроме того, удостоверьтесь, что плата подключена. Меню «Порт» обновляется всякий раз, когда вы открываете меню «Инструменты», поэтому если плата не будет подключена, то и в меню ее тоже не будет.
Проверьте, не запущены ли у вас программы, сканирующие все UART-порты – вроде синхронизирующих приложений для КПК, драйверов Bluetooth-USB (например, BlueSoleil), виртуальных эмуляторов и т.д.
На Windows причина может быть в том, что в названии COM-порта присутствует слишком большая цифра. Как пишет пользователь zeveland:
«Небольшая подсказка для тех, у кого не получается загрузить скетч на USB-плату с большим номером COM-порта. Попробуйте снизить номер COM-порта, назначенного для FTDI-чипа. У меня много виртуальных COM-портов, настроенных на Bluetooth-устройства, поэтому плате был присвоен порт COM17. В итоге IDE Arduino не сумела найти плату, поэтому я удалил все виртуальные порты в «Панели управления» (на XP) и снизил номер для FTDI-чипа до COM2. Далее осталось лишь перенастроить Arduino на новый порт».
Если у вас Mac, и вы используете старую версию FTDI-драйверов, вам, возможно, понадобится удалить их, а взамен установить самые последние версии. Инструкции ищите тут.
Что делать, если при загрузке кода или использовании «Монитора порта» (на Mac) выдает ошибку gnu.io.PortInUseException?
Error inside Serial.<init>() gnu.io.PortInUseException: Unknown Application at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) at processing.app.Serial.<init>(Serial.java:127) at processing.app.Serial.<init>(Serial.java:72)
Это, вероятно, значит, что порт уже используется другим приложением. Поэтому убедитесь, что у вас не запущено других программ с доступом к USB— и UART-портам – вроде синхронизирующих приложений для КПК, приложений для управления Bluetooth-устройствами, некоторых фаерволов и т.д. Также имейте в виду, что некоторые программы (например, Max/MSP) держат UART-порт открытым, даже не используя его, поэтому вам, возможно, надо будет закрыть все патчи, использующие UART-порты, а то и вовсе закрыть программу.
Если эта ошибка появляется на Arduino 0004 (или ранее) или на Processing, вам надо будет запустить macos_setup.command, а затем перезапустить компьютер. Arduino 004 содержит модифицированную версию этого скрипта, и его должны запустить все пользователи (даже те, кто запускал этот скрипт, когда он выходил с Arduino 0003). Кроме того, возможно, потребуется удалить содержимое папки /var/spool/uucp.
У меня проблемы с драйверами USB FTDI
Попробуйте установить самые последние версии драйверов от FTDI или обратитесь в их поддержку – support1@ftdichip.com.
Почему мой скетч не запускается, когда я включаю питание или делаю сброс на Arduino?
Скорее всего, потому что, стоит плате включиться, компьютер начинает отправлять ей UART-данные. В течение первых нескольких секунд загрузчик (программа, заранее записанная на микроконтроллер платы) ждет, не придет ли от компьютера новый скетч, который нужно загрузить на плату. Если первые несколько секунд компьютер будет «молчать», время работы загрузчика истечет, и он запустит скетч, который уже загружен на плату. Однако если продолжать отсылать загрузчику данные, время его работы никогда не истечет, а скетч никогда не запустится. Поэтому вам нужно либо найти способ остановить передачу UART-данных в первые несколько секунд после того, как у платы будет включено питание (например, запрограммировать чип в функции setup(), чтобы он отсылал какие-нибудь данные компьютеру), или загрузить скетч на плату при помощи внешнего программатора, заменяющего собой загрузчик.
Почему мой скетч загрузился нормально, но не работает?
Вы выбрали неправильный пункт в меню Инструменты > Плата (Tools > Board). Убедитесь, что выбранная плата соответствует той, что вы пользуетесь в данный момент.
Проверьте, нет ли помех от блока питания – из-за них микроконтроллер может потерять загруженный на него скетч.
Кроме того, скетч может быть слишком велик для платы. Когда вы загружаете скетч, Arduino 0004 проверяет, не слишком ли он велик для ATmega8, однако его расчеты основываются на том, что загрузчик занимает в программной flash-памяти микроконтроллера (она составляет 8 Кб) всего 1 Кб. Однако на ваше устройство, возможно, записана старая версия загрузчика, объем которой составляет не 1 кб, а 2 Кб. Таким образом, если размер вашего скетча слишком велик, загрузится лишь его часть, но загрузчик об этом знать не будет, поэтому плата войдет в «мертвую петлю» – будет постоянно сбрасываться, тормозить, сбрасываться и т.д.
Если вы используете программатор (либо AVR-ISP, либо для параллельного порта), можно попробовать записать на плату самую последнюю версию загрузчика – при помощи меню Инструменты > Записать Загрузчик (Tools > Burn Bootloader). Кроме того, вы можете объяснить IDE Arduino, что в памяти стало меньше места для загрузки скетчей, отредактировав переменную upload.maximum_size в файле с настройками (как его найти – читайте тут). Поменяйте 7168 на 6144, и теперь IDE Arduino всегда предупредит вас, если скетч будет слишком велик.
Как мне уменьшить размер скетча?
Одно из главных преимуществ микроконтроллера ATmega168, которым оснащена плата Arduino, в том, что он очень дешев. Однако он может работать лишь с 16 Кб программного кода, что не очень много (причем 2 Кб из «общей кассы» отходят загрузчику).
Если вы в своем скетче используете вычисления с плавающей точкой, попробуйте переписать его под целочисленные выражения – это должно сэкономить вам около 2 Кб flash-памяти. Также удалите в верхней части скетча все директивы #include, относящиеся к библиотекам, которые вы не используете.
Еще один вариант – попробуйте сделать вашу программу «полаконичней». Поищите способ решить ту же задачу, но более коротким путем.
Кроме того, разработчики заявляют, что постоянно работают над уменьшением размера ядра Arduino, тем самым позволяя делать более «вместительные» скетчи.
Почему я не могу получить ШИМ-сигнал (аналоговый выход), вызывая функцию analogWrite() на всех контактах, кроме 3, 5, 6, 9, 10 и 11?
Микроконтроллер на плате Arduino (ATmega168) поддерживает ШИМ/AnalogWrite() не на всех контактах. Вызов функции analogWrite() на любых контактах, кроме перечисленных выше, даст HIGH (5 вольт) для значений выше 128 и LOW (0 вольт) для значений меньше 128. На старых версиях Arduino, оснащенных ATmega8, ШИМ поддерживается только на 9, 10 и 11 контактах.
Почему я получаю ошибки о необъявленных функциях и типах?
Среда разработки Arduino пытается автоматически сгенерировать прототипы для пользовательских функций, чтобы вы могли расставить их в своем скетче в каком угодно порядке. Этот процесс, однако, не идеален и иногда приводит к появлению ошибок.
К примеру, если вы объявите в скетче собственный тип данных и создадите функцию, которая будет принимать или возвращать данные этого вновь созданного типа, то при попытке скомпилировать скетч получите сообщение об ошибке.
Причина в том, что автоматически сгенерированный прототип для этой функции будет расположен в скетче до объявления нового типа данных.
Если объявить функцию, возвращающую 16-битные данные (например, типа unsigned int), IDE Arduino не поймет, что это, собственно, функция, и не создаст для нее прототип. Это значит, что вам надо будет написать этот прототип самому либо разместить объявление этой функции немного повыше – до того, как она будет вызвана в скетче в самый первый раз.
Почему при попытке загрузить скетч возникает ошибка invalid device signature?
Если вы получили ошибку…
avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.
…то может быть два варианта. Либо выбрана неправильная плата в меню Инструменты > Плата (Tools > Board), либо вы используете неправильную версию avrdude (для загрузки скетчей в Arduino используется немного модифицированная версия). Стандартная версия avrdude делает запросы, идентифицирующие плату, в непонятном для загрузчика формате, что в итоге и приводит к этой ошибке. Поэтому убедитесь, что у вас установлена версия avrdude, которая идет в комплекте с Arduino.
См.также
Внешние ссылки
- ↑ Arduino Troubleshooting
Форум Вопросы и темы по программированию Arduino, ESP8266, STM32, Digispark и пр.
4 сентября, 2019 — 19:58 | |
---|---|
мененжер плат .. нет esp8266 Будущее за микроконтроллерами |
uels Зарегистрирован: 4.09.2019 |
4 сентября, 2019 — 19:58 | #1 |
---|---|
в ютубе предложили на ваш форум |
uels Зарегистрирован: 4.09.2019 |
4 сентября, 2019 — 20:02 | #2 |
---|---|
прошу посмотреть на прямую через программу — TEAM VIEWER |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 08:18 | #3 |
---|---|
Сделали все правильно? Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
5 сентября, 2019 — 08:18 | #4 |
---|---|
Приложите скриншот проще и у меня нет времени чтобы ставить и подключаться к вам по TEAM VIEWER. Да и смысл в этом. Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
5 сентября, 2019 — 08:21 | #5 |
---|---|
У вас ошибка даже в названии темы. Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
5 сентября, 2019 — 08:39 | #6 |
---|---|
спасибо — нашел буква не та была — z— написал вместо s — json |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 08:44 | #7 |
---|---|
Я знаю правду! Но вам не скажу! =))) |
Степка-3003 Зарегистрирован: 5.09.2019 |
5 сентября, 2019 — 09:12 | #9 |
---|---|
КОПИРОВАТЬ СООБЩЕНИЯ ОБ ОШИБКИ .— В ПРОГРАММЕ .ТАКОЙ ОГРОМНЫЙ ТЕКСТ ПОЛУЧАЕТСЯ |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 09:14 | #10 |
---|---|
ЛИШНЕЕ УДАЛИЛ Плата generic (платформа esp8266, пакет esp8266) неизвестнаОшибка компиляции для платы Generic ESP8266 Module. |
uels Зарегистрирован: 4.09.2019 |
5 сентября, 2019 — 09:16 | #11 |
---|---|
У вас какая плата? Будущее за микроконтроллерами |
Admin Зарегистрирован: 3.07.2018 |
Что делать?
С такой проблемой сталкиваются довольно
часто. Причем даже те, кто уже имел неплохой опыт программирования ардуино.
Понятное дело, что первое, что приходит на ум
заказчику – ошибка в моей программе, за что поначалу мне было немного обидно.
Существует две наиболее частые ситуации:
- Arduino IDE ругается, что не может найти указанный файл (No such file or directory). Это говорит о том, что нужно установить какую-то библиотеку. А со своими программами я всегда поставляю все необходимые библиотеки.
- Загрузка скетча подвисает, а потом выдает ошибку:
avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xe4 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe4 avrdude: stk500_recv(): programmer is not responding
1я ситуация разобрана здесь.
Вторая ситуация связана либо с тем, что плата выбрано неверно, либо выбранная плата имеет в себе старый загрузчик, который не желает работать на той скорости, на которой хочет IDE.
Дело в том, что Arduino IDE предполагает, что все современные Nano и UNO должны работать со скоростью
15200 бит в секунду. А китайские клоны до сих пор довольно часто работают со
скоростью в 2 раза меньше – 57600.
Решить эту проблему можно двумя способами:
- Обновить загрузчик на плате
- Добавить плату со старым загрузчиком в конфигурацию Arduino IDE
Лично мне кажется, что второй способ – более
универсальный и простой. Поэтому его и опишу.
Итак, зайдите на компьютере в папку, в которую
установлена Arduino IDE. Лично у меня это, как
и большинства, “C:\Program Files (x86)\Arduino”, если Вы на Windows.
Теперь откройте папку hardware\arduino\avr и
найдите файл boards.txt
В этом файле и находятся все платы, которые Вы выбираете через меню «Инструменты > Плата…»
Откройте этот файл в текстовом редакторе,
например, в блокноте.
Найдите в нем строчку uno.upload.speed
Мы видим, что скорость загрузки равно 115200.
Но у нас плата, которая хочет 57600!
Можно, конечно, поменять на 115200 на 57600,
но тогда, к сожалению, мы не сможет загружать скетчи на плату с новым загрузчиком.
Выход, получается, один – добавить плату,
скажем, UNO2,
на случай скорости 57600.
Предлагаю просто вставить себе мои настройки и сохранить файл:
uno2.name=Uno 57600 uno2.vid.0=0x2341 uno2.pid.0=0x0043 uno2.vid.1=0x2341 uno2.pid.1=0x0001 uno2.vid.2=0x2A03 uno2.pid.2=0x0043 uno2.vid.3=0x2341 uno2.pid.3=0x0243 uno2.upload.tool=avrdude uno2.upload.protocol=arduino uno2.upload.maximum_size=32256 uno2.upload.maximum_data_size=2048 uno2.upload.speed=57600 uno2.bootloader.tool=avrdude uno2.bootloader.low_fuses=0xFF uno2.bootloader.high_fuses=0xDE uno2.bootloader.extended_fuses=0xFD uno2.bootloader.unlock_bits=0x3F uno2.bootloader.lock_bits=0x0F uno2.bootloader.file=optiboot/optiboot_atmega328.hex uno2.build.mcu=atmega328p uno2.build.f_cpu=16000000L uno2.build.board=AVR_UNO uno2.build.core=arduino uno2.build.variant=standard ############################################################## nano2.name=Nano 57600 nano2.upload.tool=avrdude nano2.upload.protocol=arduino nano2.bootloader.tool=avrdude nano2.bootloader.unlock_bits=0x3F nano2.bootloader.lock_bits=0x0F nano2.build.f_cpu=16000000L nano2.build.board=AVR_NANO nano2.build.core=arduino nano2.build.variant=eightanaloginputs ## Arduino Nano w/ ATmega328P ## -------------------------- nano2.menu.cpu.atmega328=ATmega328P nano2.menu.cpu.atmega328.upload.maximum_size=30720 nano2.menu.cpu.atmega328.upload.maximum_data_size=2048 nano2.menu.cpu.atmega328.upload.speed=57600 nano2.menu.cpu.atmega328.bootloader.low_fuses=0xFF nano2.menu.cpu.atmega328.bootloader.high_fuses=0xDA nano2.menu.cpu.atmega328.bootloader.extended_fuses=0xFD nano2.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex
Теперь у вас две платы UNO и две Nano:
Удачи!