Установка arduino uno на windows 7. Возникают проблемы с драйверами USB FTDI

Рассмотрим начало работы с Arduino в операционной системе Windows. В качестве примера возьмём платформу Arduino Uno. Для других плат разница минимальна.

Установка Arduino IDE

Для начала нужно установить на компьютер интегрированную среду разработки Arduino - Arduino IDE. Из за войны между Arduino SRL и Arduino LLC , в зависимости от модели платформы, выберете версию Arduino IDE.

Скачать Arduino IDE 1.7.7 - для всех платформ (стабильная версия от Arduino SRL).
Скачать Arduino IDE 1.6.4 - для всех платформ, кроме Arduino Leonardo ETH и Arduino M0 (стабильная версия от Arduino LLC).

Запуск Arduino IDE

После того как вы загрузили и установили Arduino IDE, давайте запустим её! Должно открыться окно как на рисунке ниже.

Что-то пошло не так?

Arduino IDE не запускается? Вероятно на компьютере некорректно установлена JRE (Java Runtime Environment). Обратитесь к пункту (1) для переустановки Arduino IDE: инсталлятор сделает всю работу по развёртыванию JRE.

Подключение Arduino к компьютеру

После установки Arduino IDE пришло время подключить платформу Arduino к компьютеру.

Соедините Arduino с компьютером через USB-кабель. Вы увидите, как на плате загорится светодиод «ON», и начнёт мигать светодиод «L». Это означает, что на плату подано питание, и микроконтроллер Arduino начал выполнять прошитую на заводе программу «Blink» (мигание светодиодом).

Чтобы настроить Arduino IDE на работу с конкретной Arduino, нам необходимо узнать, какой номер COM-порта присвоил компьютер данной платформе. Для этого нужно зайти в «Диспетчер устройств» Windows и раскрыть вкладку «Порты (COM и LPT)». Мы должны увидеть следующую картину:


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

Что-то пошло не так?

Если после подключения Arduino к компьютеру, в диспетчере устройств не появляется новых устройств, это может быть следствием одной из причин:
Неисправный USB-кабель или порт
Блокировка со стороны операционной системы
Неисправная плата Arduino

Настройка Arduino IDE на работу с Arduino

Теперь нам необходимо сообщить Arduino IDE, что плата, с которой ей предстоит общаться, находится на COM-порту с номером 2.
Для этого переходим в меню: Инструменты Порт и выбираем порт «COM2». Теперь Arduino IDE знает - что-то находится на порту «COM2». И с этим «чем-то» ей вскоре предстоит общаться.

Чтобы у Arduino IDE не осталось никаких сомнений, нам необходимо сообщить Arduino IDE с какой именно платой будем работать. Для этого переходим в меню: Инструменты Плата и выбираем плату «Arduino Uno».


Теперь Arduino IDE знает всё что ей необходимо для прошивки Arduino.

Что-то пошло не так?

Список последовательных портов пуст? Значит Arduino некорректно подключена. Вернитесь к пункту (3), чтобы отладить соединение.
Arduino IDE невероятно тормозит при навигации по меню? Отключите в диспетчере устройств все внешние устройства типа «Bluetooth Serial». Например, виртуальное устройство для соединения с мобильным телефоном по Bluetooth может вызвать такое поведение.

Среда настроена, плата подключена. Теперь можно переходить к загрузке скетча.
Arduino IDE содержит очень много готовых примеров, в которых можно быстро подсмотреть решение какой-либо задачи. Есть в ней и простой пример «Blink». Давайте выберем его.


Немного модифицируем код, чтобы увидеть разницу с заводским миганием светодиода.
Вместо строчки:

Полная версия кода:

void setup()
{
// настраиваем пин 13 в режим выхода
pinMode(13, OUTPUT);
}

void loop()
{
// подаём на пин 13 «высокий сигнал»
digitalWrite(13, HIGH);

// ждём 100 миллисекунд
delay(100);

// подаём на пин 13 «низкий сигнал»
digitalWrite(13, LOW);

// ждём 100 миллисекунд
delay(100);
}

Теперь светодиод «L» должен загораться и гаснуть каждые 100 миллисекунд. То есть в 10 раз быстрее, чем в заводской версии. Загрузим наш скетч в Arduino и проверим, так ли это?

После загрузки светодиод начнёт мигать быстрее. Это значит, что всё получилось. Теперь можно смело переходить к «Экспериментам»

Что-то пошло не так?

В результате загрузки появляется ошибка вида avrdude: stk500_get sync(): not in sync: resp = 0x00? Это значит, что Arduino настроена некорректно. Вернитесь к предыдущим пунктам, чтобы убедиться в том, что устройство было распознано операционной системой и в Arduino IDE установлены правильные настройки для COM-порта и модели платы.

Коментарии:

Мы рассмотрим начало работы с Arduino Nano в операционной системе Windows 10.

1. Установка Arduino IDE

Устанавливаем на компьютер интегрированную среду разработки Arduino — Arduino IDE.

Для этого переходим на официальный сайт Arduino и скачиваем последнюю версию Arduino IDE.

https://www.arduino.cc/en/Main/software#

Запускаем от имени Администратора скачанный файл.

Соглашаемся с лицензией.


Ничего не меняем и нажимаем "Далее" .



Выбираем путь установки.


Дожидаемся конца установки.




В следующем окне (ставим галочку "Всегда доверять программному обеспечению Arduino LLC" и нажимаем Установить .



В окне установки нажимаем Close .



2. Запуск Arduino IDE

Главное окно Arduino IDE. Пока Arduino Nano не подключено к компьютеру. Обратите внимание на то что в правом нижнем углу есть надпись «Arduino/Genuino Uno on COM1» . Это значит что программа настроена для работі с платой Arduino Uno и поиск ее осуществляется на порту COM1.

3. Подключение Arduino к компьютеру

Соединяем Arduino с компьютером через USB-кабель. На Arduino должен загорется светодиод.

Теперь необходимо узнать номер COM-порта который присвоил компьютер данной платформе. Переходим в «Диспетчер устройств» Windows и раскрыть вкладку «Порты (COM и LPT)» .


И так ОС Windows 10 определила нашу плату Arduino как COM-порт №3.

4. Настройка Arduino IDE на работу с Arduino

Укажем Arduino IDE что наша плата Arduino Nano находится на COM-порт №3.

Запускаем Arduino IDE и переходим в пункт меню:

"Инструменты--> Порт--> и выбираем порт COM3".



Еще необходимо указать Arduino IDE с какой именно платой работать.

Выбираем в меню:

"Инструменты--> Плата--> выбираем плату «Arduino Nano»".



На этотм установка и настройка Arduino закончена.

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

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

Среда Arduino

  • Убедитесь, что в меню Tools > Board выбрана именно ваша модель Ардуино. Если у вас Arduino Uno - выбирайте соответствующий пункт. Также имейте ввиду, что модели после Arduino Duemilanove идут с микроконтроллером ATmega328, а более старые версии - с ATmega168. Чтобы узнать, какой контроллер используется в вашем Ардуино - прочите надпись на микроконтроллере (самая большая микросхема на плате). Дополнительную информацию о меню Board можно найти в разделе Среда разработки Arduino .
  • Затем проверьте, чтобы в меню Tools > Serial Port был выбран правильный порт (если порт не появляется, попробуйте перезапустить среду IDE при подключенном к компьютеру устройстве). На компьютерах Mac, последовательный порт должен выглядеть примерно так: /dev/tty.usbmodem621 (для Arduino Uno или Mega 2560) либо /dev/tty.usbserial-A02f8e (для более старых версий Ардуино с микросхемой FTDI). На Linux: /dev/ttyACM0 или что-то наподобие (для Arduino Uno или Mega 2560), либо /dev/ttyUSB0 (для более старых версий Ардуино). На Windows - это будет COM-порт, однако перед выбором в Диспетчере устройств нужно проверить, какой именно из них ассоциирован с Ардуино. Если таковых портов в списке нет, см. следующий раздел о драйверах.

Драйверы

Драйверы позволяют прикладному ПО на компьютере (т.е. среде Ардуино) общаться с подключенным к нему "железом" (платой Ардуино). Применительно к Ардуино, драйверы отвечают за создание в системе виртуального последовательного порта (или виртуального 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*. Существует также специальный (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 секунды.
  • Если у вас возникает такая ошибка: " Device is not responding correctly." попробуйте прошить программу еще раз (другими словами, сбросьте плату и нажмите кнопку Upload еще раз).

Загрузчик

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

Если программы по-прежнему не прошиваются, задайте вопрос на форуме . В своем сообщении укажите, пожалуйста, следующую информацию:

  • Версию вашей операционной системы.
  • Тип вашего Ардуино. Если это Mini, LilyPad или другая модель, требующая дополнительных проводов, по возможности добавьте в сообщение фото вашей схемы.
  • Получалось ли у вас до этого успешно прошить плату. Если да, то опишите, что вы делали с платой до того, как она перестала работать, какое программное обеспечение в последнее время вы ставили или удаляли со своего компьютера?
  • Сообщения, появляющиеся при попытке загрузить программу в Ардуино. Для получения сообщений зажмите кнопку Shift при нажатии на кнопку Upload на панели инструментов.

Возникает ошибка "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 осуществляет предварительную обработку вашего скетча путем манипуляций над кодом с помощью регулярных выражений. Иногда определенные строки текста приводят к сбоям этого процесса. Если вы видите примерно такую ошибку:

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 Diecimila или младше)

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

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

Эта проблема может возникать из-за конфликта Ардуино с процессом Logitech "LVPrcSrv.exe". Откройте Диспетчер задач и найдите его в списке процессов. Если он там есть, то следует завершить процесс перед прошивкой программы.

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

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

(благодарность mrbbp за сообщение и картинку)

Запуск программы на 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 возникает ошибка, например такая:

Arduino has encountered a problem and needs to close.

то попробуйте запустить Ардуино с помощью файла 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 или новее. Системные библиотеки более старых версий не совместимы с Ардуно.

Благодарность Gabe462 за сообщение.

При запуске среды Ардуино возникает ошибка UnsatisfiedLinkError (с сообщением о библиотеке librxtxSerial.jnilib)

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

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"?

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

Java Virtual Machine Launcher: Could not find the main class. Program will exit.

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

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

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

6 ? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** fatal error - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** system shared memory version mismatch detected - 0x75BE0084/0x75BE009C.

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

В поиске Windows (Пуск -> Найти) вбейте cygwin1.dll и удалите все найденные файлы, кроме самой последней версии. Самая свежая версия должна находится в папке x:\cygwin\bin, где "x" - диск, на который устанавливался дистрибутив 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-системах)?

Error inside Serial.() gnu.io.PortInUseException: Unknown Application at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) at processing.app.Serial.(Serial.java:127) at processing.app.Serial.(Serial.java:72)

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

Если эта ошибка возникает в среде Processing, либо на Ардуино версии 0004 или раньше, то нужно запустить скрипт macosx_setup.command и перезагрузить компьютер. В Arduino 0004 этот скрипт изменен, и его должны запустить все пользователи (даже те, кто запускал такой же скрипт, идущий вместе с Ардуино версии 0003). Также необходимо удалить содержимое папки /var/spool/uucp.

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

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

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

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

Вы неправильно выбрали устройство из меню 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 КБ уже заняты загрузчиком).

Если в своей программе вы используете вычисления с плавающей точкой, попробуйте переписать код так, чтобы заменить их на целочисленные вычисления - это позволит сэкономить приблизительно 2 КБ памяти. Вначале программы удалите директивы #include всех неиспользуемых библиотек.

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

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

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

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

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

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

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

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

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

Следующая ошибка:

Avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check.

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

Вернее его китайский аналог.

Существенное отличие китайского аналога от оригинала это его цена. Оригинальный Arduino UNO на данный момент на официальном сайте стоит $24.95, в то время как китайский аналог с доставкой обошёлся мне менее чем в $3 (дешевле в 8 раз). Более детальное сравнение оригинала с аналогом будет как нибудь в следующей статье, а сейчас дабы не отдалятся от основных целей, приступим.



Подключение к ПК и установка драйвера.

Ввиду того что в данном китайском аналоге Arduino для подключения к USB используется микросхема CH340G , предоставленные драйвера не подойдут для оригинальной Arduino и их аналогов, которые содержат в своём составе микросхему ATMEGA16U2 .


Подключаем платформу Arduino к компьютеру через USB кабель, которым подключаются принтеры. На плате загорится светодиод "ON ". В диспетчере устройств появится новое устройство "USB2.0 - Serial ". Необходимо установить драйвера, работать в примере будем на Windows.

Скачиваем архив, распаковываем и запускаем файл CH341SER.EXE . Выбираем INSTALL .


В процессе установки драйвера замигает светодиод RX , после установки появится соответствующее сообщение, нажимаем "Ок ".

В диспетчере устройств появится новое устройство "USB-Serial CH340 ". В моём случае устройство подключилось на порт COM7 , у каждого может быть любой другой номер порта, главное его запомнить для будущей работы.

Первый скетч.

Программа для Arduino называется скетч. Для того что бы записать в Arduino скетч нужно установить на компьютер среду разработки Arduino . Скачиваем последнюю версию и распаковываем. Запускаем среду разработки файлом arduino.exe .

Программа по-умолчанию загрузилась у меня с русским интерфейсом.

Для выбора иного языка необходимо воспользоваться пунктом меню "Файл " - "Настройки ".

В списке "Язык редактора " можно выбрать любой другой язык, нажать "Ок " и перезапустить среду разработки. В составе имеются белорусский, украинский и другие языки.


Так же нужно проверить что бы правильно была выбрана платформа Arduino, для этого переходим в "Инструменты " – "Плата: " У меня по-умолчанию была правильно выбрана Anduino UNO, если у Вас что то другое, выбирайте свою платформу со списка.


Так же нужно выбрать правильно порт, на который подключена наша платформа. Для этого во время установки драйвера я уделял на это внимание (нужно посмотреть порт в диспетчере устройств). В моём случае это COM7 . Теперь в "Инструменты " - "Порт: " нужно правильно указать порт.

Теперь попробуем запустить свой первый скетч на Arduino, который будет мигать светодиодом.

В данной версии среды разработки уже имеется коллекция простых скетчей, среди которых находится и наш скетч.
Для этого перейдём в "Файл " - "Образцы " - "01.Basics " – "Blink ".

В новом окне откроется код программы. Теперь подготовим светодиод для нашей программы. На многих платах как и на моей, нужный светодиод был уже впаян вместе с остальными радиодеталями...


Но могут встречаться платы, на которых нет данного светодиода, в таком случае придётся его подключить через пины на плате. Возьмём самый обычный цветной светодиод и подключим его через ограничительный резистор 220Ом - 1Ком, к пинам на плате 13 и GND (в процессе подключения светодиода к Arduino рекомендуется отключить кабель USB).


Когда всё готово, остаётся загрузить программу для мигания светодиодом в микроконтроллер. В среде разработчика жмём на кнопку "Вгрузить ", для загрузки скетча в Anduino.

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

Для того что бы выключить Anduino, достаточно разъединить плату с USB кабелем.

На этом можно закончить первое знакомство с платформой, убедившись что всё работает исправно.

В принципе она универсальна и на ней можно реализовать огромное количество проектов.

Приступим!

Первым делом нам нужно скачать и установить среду разработки со встроенными драйверами, это можно сделать с официального сайта Arduino.cc или по ссылке . После чего можно подключить плату к компьютеру через usb провод которой чаще всего идет в комплекте, либо через любой подходящий. Ардуино использует USB B, в нем нет ничего особенного. Если все сделано правильно и плата исправна windows найдет новое устройство и самостоятельно установит его после чего на плате загорится светодиод помеченный как ON или PWR.

Теперь можно открывать Arduino ide и перед нами сразу появится окно редактора.1) Окно редактора, то место куда мы будем писать код.

2)Окно состояния, здесь будут отображается ошибки и другая информация о нашей программе и процессе заливки прошивки в плату.

3) Панель инструментов и т.д.

Кстати ide поддерживает русский язык, что должно помочь в ее освоении. Теперь проверим все ли хорошо и перейдем на вкладку инструменты -> Платы. Там сразу должна быть выбрана наша плата:


Если это не так-то выберем ее вручную.

Теперь попробует прошить нашу плату тестовой прошивкой, для этого идем Файл -> примеры -> Basics -> Blink. Сразу в окне редактора появились комментарии и сам текст программы. Комментарии всегда расположены между тегами */ или с // и их можно без проблем удалить, они не как не повлияют на работу программы и перестанут мешать сконцентрироваться на главном.

После чего останется такой код:

C++

void setup() { pinMode(13, OUTPUT); } void loop() { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }

void setup () {

pinMode (13 , OUTPUT ) ;

void loop () {

Если вы получили ошибку: Проблема загрузки на плату то не отчаивайтесь это легко исправить. Для этого идем Инструменты -> Порт -> и там выбераем порт рядом с которым в скобочках написано Arduino/Genuino Uno и пробуем прошить контроллер заново. Если что-то не получается пишите в комментариях, разберемся.

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

void setup() { }

Эту часть кода среда разработки сгенерировала нам самостоятельно, здесь между фигурных скобок происходит инициализация входов, выходом платы, в нашем случае там написано pinMode(13, OUTPUT); Это значит что 13 пин платы к которому подключен светодиод (о котором мы говорили в прошлой статье) мы назначаем на выход.

Эту часть кода так же сгенерирована автоматически, между фигурных скобок пишется тот код, который будет выполнять непосредственно наша программа бесконечно. То есть это бесконечный цикл. В нем написано digitalWrite(13, HIGH); , что по Русски значит подать 5 вольт на 13 пин, это действия зажигает светодиод.

delay(1000); Эта задержка, она останавливает выполнение следующей инструкции на 1000 мили секунд (1 секунду).

digitalWrite(13, LOW); подтягивает 13 пин к земле, по русски убирает 5 вольт что приводит к потуханию светодиода.

И так как void loop() это бесконечный цикл то лампочка на Arduino будет мигать бесконечно!

Развлекаться с голой платой Arduino не так весело как хотелось бы из-за того что на плате установлен всего 1 светодиод и нет ни одной кнопки но это не значит что поморгать светодиодом это все что мы можем! Давайте заставим его загораться и тухнуть по команде с компьютера!

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