Arduino ide сбросить все настройки

Обновлено: 04.07.2024

Два способа перезагрузить Arduino на программном уровне

Для того, чтобы перезагрузить ваш Arduino не нажимая кнопку Reset, существует два варианта. Ниже рассмотрены оба.

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

Используем провод, подключенный к 12 контакту

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

Без дополнительных ухищрений на программном уровне не обойтись, так как в начале работы нашего скетча, все пины на Arduino принимают значение LOW. В результате мы отключим наш контроллер. Но! Трюк заключается в том, что первое, что происходит в пределах функции setup(): мы подаем HIGH на контакт 12, который вызывает наш пин reset (digitalWrite(resetPin, HIGH), и таким образом обеспечивает сигнал HIGH на контакте Arduino RESET.

int led = 13;//пин 13 будет работать в качестве пина OUTPUT

// функция setup отработате один раз, после того как вы нажмете reset:

// инициализируем цифровой пин в качестве выхода

Serial.begin(9600);// инициализируем подключение по серийному порту

Serial.ln(«reset»);// отображаем строку reset, чтобы знать, что была произведена перезагрузка и

// опять отрабатывает функция setup

// цикл loop отрабатывает вновь и вновь:

delay(1000); // ждем одну секунду

digitalWrite(led, LOW); // отключаем светодиод, подав команду LOW

delay(1000); // ждем одну секунду

Serial.ln(«this never happens»);

// этого никогда не произойдет, так как Arduino перезагружается

Используем исключительно программную перезагрузку

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

void(* resetFunc) (void) = 0;//объявляем функцию reset с адресом 0

resetFunc(); //вызываем reset

Вся программа для перезагрузки Arduino:

// функция setup отрабатывает один раз после нажатия reset:

// инициализируем цифровой пин в качестве выхода.

Serial.begin(9600);// инициализируем серийный порт

void(* resetFunc) (void) = 0; // объявляем функцию reset

// этот цикл отрабатывается вновь и вновь:

digitalWrite(led, HIGH); // включаем светодиод

delay(1000); // ждем секунду

digitalWrite(led, LOW); // отключаем светодиод, подавая команду LOW

delay(1000); // ждем одну секунду

resetFunc(); //вызываем reset

Для чего можно использовать программную перезагрузку Arduino?

Перезагрузку Arduino на программном уровне можно использовать при работе с nRF24L01+ 2.4 Гц трансивером (с использованием библиотеки RF24 library). Этот скетч отлично подходит в тех случаях, когда трансивер теряет связь и перестает работать. Обеспечить перезагрузку модулей радиопередатчиков 2.4G Гц достаточно сложно, а вот перезагрузить ваш Arduino Uno или Arduino Pro Mini не составит проблем. Ваша программа должна отработать примерно следующее: «Если на протяжении 100 мс не было получено пакета данных, Arduino должен перезагрузиться». В результате модули радиопередатчиков автоматически переподключаются и связь налаживается!

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Автоматический (программный) сброс

Устройства кейса в Arduino Uno

1. Аппаратные средства, а именно печатные платы Arduino.

Благодаря тому, что архитектура печатных плат и программное обеспечение являются полностью открытыми, платформа приобрела большую популярность, что послужило причиной появления большого количества клонов оригинальных печатных плат, всевозможных датчиков и других аппаратных средств совместимых с Arduino. Здесь нужно сразу отметить, что неоригинальные платы работают ничуть не хуже оригинальных, так что можете не бояться их приобретать. Кроме того появились альтернативные средства разработки, в том числе и графические, такие как Ardublock и miniBloq (подробнее см. в статье «Конструкторы программируемых роботов»).

В отличие от всех предыдущих плат Ардуино, Uno в качестве преобразователя интерфейсов USB-UART использует микроконтроллер ATmega16U2 (ATmega8U2 до версии R2) вместо микросхемы FTDI.

На плате Arduino Uno версии R2 для упрощения процесса обновления прошивки добавлен резистор, подтягивающий к земле линию HWB микроконтроллера 8U2.

Изменения на плате версии R3 перечислены ниже:

МикроконтроллерATmega328
Рабочее напряжение
Напряжение питания (рекомендуемое)7-12В
Напряжение питания (предельное)6-20В
Цифровые входы/выходы14 (из них 6 могут использоваться в качестве ШИМ-выходов)
Аналоговые входы
Максимальный ток одного вывода40 мА
Максимальный выходной ток вывода 3.3V50 мА
Flash-память32 КБ (ATmega328) из которых 0.5 КБ используются загрузчиком
SRAM2 КБ (ATmega328)
EEPROM1 КБ (ATmega328)
Тактовая частота16 МГц

Схема и исходный проект

Файлы EAGLE: arduino-uno-Rev3-reference-de.zip (ПРИМЕЧАНИЕ: совместимо с версиями Eagle не ниже 6.0)

Примечание: В файлах проекта Ардуино могут фигурировать микроконтроллеры ATmega8, 168 или 328. Например, в последних моделях используется микроконтроллер ATmega328, но на схеме может быть указан микроконтроллер ATmega8. Это не является ошибкой, поскольку все три микросхемы полностью совместимы между собой по выводам.

Напряжение внешнего источника питания может быть в пределах от 6 до 20 В. Однако, уменьшение напряжения питания ниже 7В приводит к уменьшению напряжения на выводе 5V, что может стать причиной нестабильной работы устройства. Использование напряжения больше 12В может приводить к перегреву стабилизатора напряжения и выходу платы из строя. С учетом этого, рекомендуется использовать источник питания с напряжением в диапазоне от 7 до 12В.

Ниже перечислены выводы питания, расположенные на плате:

Объем флеш-памяти ATmega328 составляет 32 КБ (из которых 0.5 КБ используются загрузчиком). Микроконтроллер также имеет 2 КБ памяти SRAM и 1 КБ EEPROM (из которой можно считывать или записывать информацию с помощью библиотеки EEPROM).

С использованием функций pinMode(), digitalWrite() и digitalRead() каждый из 14 цифровых выводов может работать в качестве входа или выхода. Уровень напряжения на выводах ограничен 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Помимо этого, некоторые выводы Ардуино могут выполнять дополнительные функции:

Помимо перечисленных на плате существует еще несколько выводов:

Смотрите также соответствие выводов Arduino и ATmega328. Распиновка для микроконтроллеров ATmega8, 168 и 328 идентична.

Библиотека SoftwareSerial позволяет реализовать последовательную связь на любых цифровых выводах Arduino Uno.

В микроконтроллере ATmega328 также реализована поддержка последовательных интерфейсов I2C (TWI) и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной I2C; для получения более подробной информации см. документацию. Для работы с интерфейсом SPI используйте библиотеку SPI.

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

ATmega328 в Arduino Uno выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по оригинальному протоколу STK500 (описание, заголовочные файлы C).

Тем не менее, микроконтроллер можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; более подробно об этом см. соответствующие инструкции.

Исходный код прошивки микроконтроллера ATmega16U2 (или 8U2 на платах версии R1 и R2) находится в свободном доступе. Прошивка ATmega16U2/8U2 включает в себя DFU-загрузчик (Device Firmware Up), позволяющий обновлять прошивку микроконтроллера. Для активации режима DFU необходимо:

Автоматический (программный) сброс

Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Arduino Uno спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Один из выводов ATmega8U2/16U2, участвующий в управлении потоком данных (DTR), соединен с выводом RESET микроконтроллера ATmega328 через конденсатор номиналом 100 нФ. Когда на линии DTR появляется ноль, вывод RESET также переходит в низкий уровень на время, достаточное для перезагрузки микроконтроллера. Данная особенность используется для того, чтобы можно было прошивать микроконтроллер всего одним нажатием кнопки в среде программирования Ардуино. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии DTR.

Однако эта система может приводить и к другим последствиям. При подключении Uno к компьютерам, работающим на Mac OS X или Linux, его микроконтроллер будет сбрасываться при каждом соединении программного обеспечения с платой. После сброса на Arduino Uno активизируется загрузчик на время около полсекунды. Несмотря на то, что загрузчик запрограммирован игнорировать посторонние данные (т.е. все данные, не касающиеся процесса прошивки новой программы), он может перехватить несколько первых байт данных из посылки, отправляемой плате сразу после установки соединения. Соответственно, если в программе, работающей на Ардуино, предусмотрено получение от компьютера каких-либо настроек или других данных при первом запуске, убедитесь, что программное обеспечение, с которым взаимодействует Ардуино, осуществляет отправку спустя секунду после установки соединения.

На плате Uno существует дорожка (отмеченная как «RESET-EN»), разомкнув которую, можно отключить автоматический сброс микроконтроллера. Для повторного восстановления функции автоматического сброса необходимо спаять между собой выводы, расположенные по краям этой дорожки. Автоматический сброс также можно выключить, подключив резистор номиналом 110 Ом между выводом RESET и 5В; для получения более подробной информации см. соответствующую ветку форума.

Безопасное использование ножки RESET на Arduino

В этой статье я опишу способ безопасного использования ножки RESET на плате Ардуино для собственных нужд.

Итак, чтобы получить желаемый результат, нам надо изменить код бутлоадера, прошить его в Ардуину и изменить фьюзы! Именно в такой последовательности! Это очень важно! Вы готовы?

Шаг первый

Открываем файл «pathToArduinohardwarearduinoavrbootloadersoptibootoptiboot.c» в текстовом редакторе или в имеющейся среде программирования (я использую Atmel Studio 6.2). Следующие строчки надо закомментировать:

А вслед за ними вставить такой код:

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

Сначала запускаем omake.exe c параметром clean, затем с параметром atmega328 и внимательно читаем ответ. Если там не упоминаются ошибки «error:», то в папке должна появиться наша прошивка optiboot_atmega328.hex. Замечательно!

Шаг второй

Пути к файлам подставьте свои. COM-порт укажите тот, который используется вашим SPI-программатором или Ардуиной, заменяющей программатор. Я же использовал еще одну Pro Mini через COM-программатор PL2303HXA. В нее я закачал стандартный скетч ArduinoISP, который эмулирует работу SPI-программатора по протоколу STK500 v1. Примерная схема подключения показана в этой стате [5].

После того, как все подключено, можно проверить связь с программируемой Ардуиной с помощью запуска flash.bat: он покажет сигнатуру микроконтроллера и другую информацию. Теперь можно запустить второй скрипт flash_boot.bat. Если скажет «столько-то bytes of flash verified», значит все ОК, бутлоадер на месте.

Шаг третий

Хочу заметить, что неправильные фьюзы можно вылечить с помощью «Atmega fusebit doctor» [7].

«Atmega fusebit doctor» на беспаечной макетной плате

Используя калькулятор фьюзов [8] и даташит [9], создадим командный скрипт flash_fuse.bat для установки правильных фьюзов в наш многострадальный чип:

Шаг четвертый

Добавим свои настройки в конец файла (для версии Arduino IDE 1.0.5 они немного другие):

Название платы «[Optiboot] Arduino Pro Mini (5V, 16MHz) w/ ATmega328p» появится в меню «Tools/Board» в самом конце списка.

Ограничения

Как вы помните, кнопка RESET на плате Ардуино замыкает ножку RESET на землю [10]. С помощью нее мы вводим микроконтроллер в режим перепрошивки основной программы. Именно поэтому я не рекомендую использовать эту ножку в режиме вывода пяти вольт. Если надо управлять «силовой» нагрузкой, то лучше вывести на ножку землю, а на вторую линию питания нагрузки завести пять вольт. Отключение питания происходит переводом ножки в режим ввода. Так мы избежим возможного короткого замыкания. Остальные режимы можно использовать без проблем.

Второе замечание касается сторонних библиотек: если мы передаем ножку как параметр, то нам неизвестно в каком режиме она будет работать. Тут уж ничего не поделать. Разве, что использовать ножку только на очень простой логике, которую сами пишем. И еще рекомендую ставить паузу в начале инициализации программы, чтобы было понятно по светодиоду, что кнопку RESET лучше отпустить немедленно, если кнопка вдруг не сработала, как ожидалось.

Третье замечание касается стандартной нумерации ножек. Да, у ножки RESET нету номера! Есть только регистры микроконтроллера, которыми она управляется. Эта проблема легко решается несколькими правками файла «pathToArduinohardwarearduinoavrvariantsstandardpins_arduino.h»:

После этого все стандартные функции, кроме analogRead(), будут работать с ножкой RESET под номером 20 (RST), как и с любой другой. И даже если у вас имеется дополнительные аналоговые ножки A6 и A7, то они работают отдельно по своему принципу. Можете сами убедиться в этом, написав такой скетч:

Заключение

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

Архив со всеми затронутыми файлами для Arduino IDE 1.5.8 вы можете скачать по ссылке [11]. Структура каталогов сохранена.

Судя по тому, что ide заливает новый скетч прямо при работе пользовательского кода, оно как то делает ресет. Но судя по схеме (nano) такая возможность не предусмотрена. Тогда как? И главное - как это сделать самому?

ps. может там на usb просто есть возможность питание отключать через драйвер?

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

IDE ресет не делает. Ресет делает мелкосхема USB-UART. А первым стартует загрузчик.

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

Jeka_M аватар

Но судя по схеме (nano) такая возможность не предусмотрена.

По какой схеме? Разных вариаций ардуин существует множество. От оригинальной до разных китайских клонов.
Обычно предусмотрено. От ножки DTR микросхемы USB-UART преобразователя через конденсатор 0.1uf на ножку RESET микроконтроллера.

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

А вот да, нашел схему где разведен dtr. А на другой схеме он в воздухе висел. Не знал, что там все по разному бывает, попробую dtr дернуть

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

xDriver аватар

IDE ресет не делает. Ресет делает мелкосхема USB-UART. А первым стартует загрузчик.

т.к. платформа не была конкретизирована, спрошу, а как же Леонардо делает ресет?

у меня есть предположение, но хотелось бы уточнить.

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

т.к. платформа не была конкретизирована, спрошу, а как же Леонардо делает ресет?

у меня есть предположение, но хотелось бы уточнить.

"Но судя по схеме (nano) такая возможность не предусмотрена" - воспринял как 168/328 Atmega.
Как делает Леонардо не знаю и даже в руках не держал.))))

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

Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.

Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз

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

Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.

Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз

если это не отключить в инициализации, то да

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

Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.

Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз

А почему тогда МК не ресетится при открытии монитора порта? Ведь тоже порт юзается так же как и при заливке скетча!

1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.

2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?

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

ua6em аватар

Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.

Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз

А почему тогда МК не ресетится при открытии монитора порта? Ведь тоже порт юзается так же как и при заливке скетча!

1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.

2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?

мк ресетится, а вот буфер СH340 не очищается, так как понятия не имеет, что мк ресетнулся

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

Все даже проще оказалось, каждое открытие устройства COM под виндой и так уже дергает DTR и приводит к ресету.

Это объясняет заодно почему мне не удавалось управлять прошивкой через "echo x >com5", она ресетилась каждый раз

А почему тогда МК не ресетится при открытии монитора порта? Ведь тоже порт юзается так же как и при заливке скетча!

1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.

2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?

мк ресетится, а вот буфер СH340 не очищается, так как понятия не имеет, что мк ресетнулся

ничего не понял про буфер.

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

ua6em аватар

ничего не понял про буфер.

Вам про ком порт почитатать, хардовый, со всеми сигналами TX-RX RTS-CTS DTR-DSR . и как добраться из монитора (DATA) к этим управляющим сигналам


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

У меня ресетится nano при открытии монитора в IDE.

Прошиваем стандартный блинк, чтоб раз 5 в секунду мигал, открываем монитор - все на секунду замирает

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

У меня ресетится nano при открытии монитора в IDE.

Прошиваем стандартный блинк, чтоб раз 5 в секунду мигал, открываем монитор - все на секунду замирает

Опа, а у меня не происходит этого ( в принципе и не надо). Что мы делаем не так?

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

ЕвгенийП аватар

1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.

2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?

Точно? У меня не так.

1. Работает ардуина.
2. Закрываю монитор порта
3. Ардуина продолжает работу
4. Открываю монитор порта
5. Ардуина перезагружается.

Что я не так делаю?

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

Feronos аватар

Я правильно понимаю, что речь идёт про IDE на "микромягких окнах"? Или с линукса кто-то тоже пробовал? А то я-то на работе на убунте сижу, с ардуинкой все свои дела там делаю.

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

2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?

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

на маке тоже перезагружается при открытии монитора

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

Feronos аватар

На линьке так же

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

1. Заливаю скетч - идёт открытие порта - ресет - заливка - работе скетча.

2. открываю монитор порта - ( тут выходит открытия ком порта не происходит) - кидаю туда символы - ресета нет естественно. НО почему?

Точно? У меня не так.

1. Работает ардуина.
2. Закрываю монитор порта
3. Ардуина продолжает работу
4. Открываю монитор порта
5. Ардуина перезагружается.

Что я не так делаю?

вы не настроили компорт, если настроить "правильно" ресетится не будет.
к примеру к компорту подключено радиопередающее устройство, DTR или CTS линии - разрешение
на передачу и будет каждый раз при старте ОСИ самопроизвольное (неконтролируемое) включение,
в этом случае оно точно не надо, видимо ТС тоже радиопопуляризатор )))

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

Ну так это смотря какой эмулятор.) У меня на Win не перегружается.
К примеру скетч с выводом в терминал работает круглосуточно.
И что ж теперь терминал держать постоянно включенным! Непорядок.

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

Ну так это смотря какой эмулятор.) У меня на Win не перегружается.
К примеру скетч с выводом в терминал работает круглосуточно.
И что ж теперь терминал держать постоянно включенным! Непорядок.

Юзаю монитор, который с IDE. Ничего специально не настраивал.

Т.е. вопрос так и не выяснили, к тому же дабавился ещё один, почему у одним монитор ресетит , а у других нет?

И что это за настройки?

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

asam аватар

Юзаю монитор, который с IDE. Ничего специально не настраивал.

Т.е. вопрос так и не выяснили, к тому же дабавился ещё один, почему у одним монитор ресетит , а у других нет?

И что это за настройки?

Ресетит линией DTR. Настройки- Hardware Flow Control. Если отключить, то должна больше не ресетить.

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

Юзаю монитор, который с IDE. Ничего специально не настраивал.

Т.е. вопрос так и не выяснили, к тому же дабавился ещё один, почему у одним монитор ресетит , а у других нет?

И что это за настройки?

Ресетит линией DTR. Настройки- Hardware Flow Control. Если отключить, то должна больше не ресетить.

Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?

Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?

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

asam аватар

Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?

Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?

Аппаратный Flow Control это когда линия DTR дергаются автоматически при открытии порта. Но никто не запрещает программе дернуть ее "вручную".

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

Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?

Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?

Аппаратный Flow Control это когда линия DTR дергаются автоматически при открытии порта. Но никто не запрещает программе дернуть ее "вручную".

Ну тогда наверное ясно всё. IDE при открытии порта - дёргает DTR в обязательном порядке, а монитор просто открывает и тогда в зависимости от настроек потока - DTR задействуется или нет.

Вроде не сложно, но почему то до сих пор этой инфы про ардуину нигде не было!

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

Щас глянул у себя - сия настройка стоит в НЕТ. Тогда опять вопрос, почему же при заливке скетча ресет есть?

Или IDE сама временно корректирует эту вещь в "АППАРАТНОЕ", чтобы сбросить МК перед заливкой, а монитор порта настройку не меняет и открывает порт как есть. ТАК?

Аппаратный Flow Control это когда линия DTR дергаются автоматически при открытии порта. Но никто не запрещает программе дернуть ее "вручную".

Ну тогда наверное ясно всё. IDE при открытии порта - дёргает DTR в обязательном порядке, а монитор просто открывает и тогда в зависимости от настроек потока - DTR задействуется или нет.

Вроде не сложно, но почему то до сих пор этой инфы про ардуину нигде не было!

ни под виндами ни под Линукс дёрганье IDE пином DTR при открытии монитора порта не зависит от установок настроек управления потоком!

Среда разработки Ардуино

Написание программ


Verify (Проверить)
Проверить код на ошибки.


Upload (Прошить)
Скомпилировать программу и "зашить" ее в микроконтроллер Ардуино. Подробнее о прошивке - см. ниже.

Примечание: чтобы прошить микроконтроллер через внешний программатор - нужно зажать клавишу "shift" перед нажатием на эту иконку. При этом текст возле кнопки изменится на "Upload using Programmer".


New (Создать)
Создать новую программу.


Open (Открыть)
Команда открывает меню со списком всех скетчей, доступных в вашей рабочей папке. После щелчка по файлу его содержимое откроется в текущем окне.


Save (Сохранить)
Сохранить программу


Serial Monitor
Открыть программу "Serial Monitor" (для работы с последовательным интерфейсом).

Дополнительные команды находятся в меню: File, Edit, Sketch, Tools и Help. В этих меню всегда активны только те пункты, которые можно применить к текущему элементу или фрагменту кода.

Меню "Edit (Правка)"

  • Copy for Forum (Скопировать для форума)
    Скопировать код программы в буфер обмена в специальном формате, удобном для постинга на форум (с подсветкой синтаксиса).
  • Copy as HTML (Скопировать как HTML)
    Скопировать код программы в буфер обмена в виде HTML-кода, удобного для встраивания в веб-страницы.

Меню "Sketch (Программа)"

Меню "Tools (Инструменты)"

  • Auto Format (Автоформат)
    Эта команда наводит красоту в вашем коде, а именно: делает одинаковые отступы соответствующих открывающих и закрывающих фигурных скобок, дополнительные отступы кода внутри логических блоков.
  • Archive Sketch (Заархивировать скетч)
    Создать .zip-архив текущего скетча. Результирующий архив помещается в папку с программой.
  • Board (Плата)
    Выбрать модель используемого Ардуино. Описание различных плат Ардуино см. ниже.
  • Serial Port (Последовательный порт)
    Это меню содержит список всех последовательных устройств, присутствующих в системе (как физических, так и виртуальных). Их список должен обновляться автоматически при каждом открытии главного меню.
  • Programmer (Программатор)
    Позволяет выбрать внешний программатор для прошивки микроконтроллера без использования USB-соединения. Обычно эта функция требуется редко - например, для прошивки загрузчика в новый микроконтроллер.
  • Burn Bootloader (Прошить загрузчик)
    Это меню позволяет прошить загрузчик в контроллер Ардуино. При нормальной работе Ардуино эта функция обычно не требуется, но она может быть полезна, если вам вдруг потребуется заменить микроконтроллер ATmega на новый (который с магазина идет без загрузчика). Перед прошивкой убедитесь, что в меню Boards выбрана именно ваша плата.

Скетчбук (рабочая папка)

В среде разработки Ардуино используется принцип организации скетчбука: все ваши программы (или скетчи) хранятся в одном месте. Чтобы просмотреть их, необходимо выбрать меню File > Sketchbook или щелкнуть по кнопке Open на панели инструментов. Директория для хранения ваших программ будет автоматически создана при первом запуске среды Ардуино. Ее месторасположение всегда можно изменить в окне настроек программы.

Начиная с версии 1.0, файлы скетчей имеют расширение .ino. В предыдущих версиях использовалось расширение .pde. В новых версиях программы (1.0 и старше) файлы .pde по-прежнему можно открыть, только их расширение будет автоматически переименовано на .ino.

Вкладки, компиляция и работа с несколькими файлами

Среда Ардуино позволяет работать с программами, состоящими из нескольких файлов (каждый из которых открывается в отдельной вкладке). Например, это могут быть файлы Ардуино (без расширения), C-файлы (с расширением .c), файлы C++ (с расширением .cpp) или заголовочные файлы (.h).

Прошивка

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

Библиотеки

Список основных библиотек, описанных на сайте, приведен здесь. Некоторые из них устанавливаются вместе со средой разработки Ардуино, остальные можно скачать из разных источников. В версиях IDE 1.0.5 и старше реализована возможность импорта библиотек прямо из zip-архива и подключения их к текущему скетчу. См. инструкции по установке сторонних библиотек.

Инструкции по написанию собственных библиотек см. здесь.

Оборудование сторонних производителей

Для работы с "железом" сторонних производителей необходимо добавить ряд файлов в директорию hardware, расположенную внутри рабочей папки. Среди этих файлов должны быть файлы с информацией о добавляемой плате (эта информацию будет отображаться в меню Board), библиотеки, загрузчики и параметры для программатора. Для установки нового оборудования необходимо создать папку внутри директории hardware и распаковать в нее содержимое архива с данными о добавляемом "железе". (Не следует называть создаваемую папку "arduino", иначе будет затерта информация о самой платформе Ардуино). Чтобы удалить добавленное оборудование - достаточно просто удалить его папку.

Дополнительную информацию о создании пакетов для стороннего оборудования можно найти в соответствующем разделе на сайте Arduino Google Code.

Программа "Serial Monitor"

Общаться с Ардуино можно также через Processing, Flash, MaxMSP и пр. (подробнее об этом читайте здесь).

Настройки

Некоторые параметры можно задать непосредственно в окне настроек программы (на Mac-системах это окно вызывается из меню Arduino, на Windows и Linux-системах - из меню File). Остальные параметры находятся в конфиг-файле, местонахождение которого также указано в окне настроек.

Поддерживаемые языки


Среда разработки Ардуино 1.0.1 переведена более чем на 30 различных языков. По умолчанию, язык IDE выбирается исходя из языковых настроек вашей операционной системы. (Обратите внимание: на Windows и Linux-системах язык IDE определяется по региональным настройкам, отвечающим за формат даты и валюты, а не по языкоу самой операционной системы).

Если вы хотите вручную изменить текущий язык программы, запустите среду Ардуино и откройте окно настроек. В поле Editor Language будет выпадающий список поддерживаемых языков. Выберите из списка предпочитаемый язык и перезапустите программу, чтобы изменения вступили в силу. Если выбранный вами язык не поддерживается, то по умолчанию IDE подгрузит английскую локализацию.

Чтобы сбросить языковые настройки среды и вернуть автоматический выбор ее языка по региональным настройкам операционной системы, в выпадающем списке необходимо выбрать пункт System Default. Изменения вступят в силу после перезапуска IDE Arduino. И наоборот, чтобы изменение языковых настроек операционной системы повлияли на текущий язык программы, необходимо просто перезапустить среду Ардуино.

Разновидности плат

Выбирать модель используемой платы в среде Ардуино необходимо по двум причинам:

  1. Чтобы задать параметры, используемые во время компиляции и прошивки скетчей (такие, как тактовая частота, бодрейт и др.);
  2. Чтобы задать настройки фьюз-битов, используемые во время прошивки загрузчика в контроллер платы.

Ниже перечислены основные пункты меню Boards и дана расшифровка соответствующих им настроек:

  • Arduino Uno
    ATmega328, работающий на частоте 16 МГц с авто-сбросом, используемый загрузчик - optiboot (115200 бод, 0.5 КБ).
  • Arduino Duemilanove w/ ATmega328
    ATmega328, работающий на частоте 16 МГц с авто-сбросом.
  • Arduino Diecimila or Duemilanove w/ ATmega168
    ATmega168, работающий на частоте 16 МГц с авто-сбросом. Настройки компиляции и прошивки эквивалентны пункту Arduino NG or older w/ ATmega168, за исключением загрузчика с уменьшенным таймаутом (после сброса платы светодиод на 13-м выводе мигает только один раз).
  • Arduino Nano w/ ATmega328
    ATmega328, работающий на частоте 16 МГц с авто-сбросом. Имеет восемь аналоговых входов.
  • Arduino Nano w/ ATmega168
    ATmega168, работающий на частоте 16 МГц с авто-сбросом. Настройки компиляции и прошивки эквивалентны пункту Arduino NG or older w/ ATmega168, за исключением загрузчика с уменьшенным таймаутом (после сброса платы светодиод на 13-м выводе мигает только один раз). Имеет восемь аналоговых входов.
  • Arduino Mega 2560 or Mega ADK
    ATmega2560, работающий на частоте 16 МГц с авто-сбросом, используемый загрузчик - stk500v2.
  • Arduino Mega (ATmega1280)
    ATmega1280, работающий на частоте 16 МГц с авто-сбросом.
  • Arduino Leonardo
    ATmega32u4, работающий на частоте 16 МГц с авто-сбросом.
  • Arduino Mini w/ ATmega328
    ATmega328, работающий на частоте 16 МГц с авто-сбросом, используемый загрузчик - optiboot(115200 бод, 0.5 КБ). Имеет восемь аналоговых входов.
  • Arduino Mini w/ ATmega168
    Настройки эквивалентны пункту Arduino NG or older w/ ATmega168 (т.е. ATmega168, работающий на частоте 16 МГц без авто-сброса).
  • Arduino Ethernet
    Настройки эквивалентны Arduino UNO с установленной Ethernet-платой расширения.
  • Arduino Fio
    ATmega328, работающий на частоте 8 МГц с авто-сбросом. Настройки эквивалентны пункту Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ATmega328.
  • Arduino BT w/ ATmega328
    ATmega328, работающий на частоте 16 МГц. Прошитый загрузчик (4 КБ) содержит коды для инициализации встроенного bluetooth-модуля.
  • Arduino BT w/ ATmega168
    ATmega168, работающий на частоте 16 МГц. Прошитый загрузчик (4 КБ) содержит коды для инициализации встроенного bluetooth-модуля.
  • LilyPad Arduino w/ ATmega328
    ATmega328, работающий на частоте 8 МГц (3.3В) с авто-сбросом. Настройки эквивалентны пункту Arduino Pro or Pro Mini (3.3V, 8MHz) w/ ATmega328.
  • LilyPad Arduino w/ ATmega168
    ATmega168, работающий на частоте 8 МГц. Настройки компиляции и прошивки эквивалентны пункту Arduino Pro or Pro Mini (8MHz) w/ ATmega168. Используется загрузчик с уменьшенным таймаутом (при сбросе платы светодиод на 13-м выводе мигает три раза), поскольку базовые версии LilyPad не поддерживают функцию авто-сброса. В LilyPad также нет внешнего тактового генератора, поэтому при прошивке загрузчика фьюз-биты ATmega168 устанавливаются таким образом, чтобы контроллер тактировался от внутреннего генератора на 8 МГц.

Инструкции по добавлению в программу других устройств описаны выше в разделе "Оборудование сторонних производителей". Текст данного руководства опубликован под лицензией Creative Commons Attribution-ShareAlike 3.0. Примеры кода, встречающиеся в руководстве, являются свободным контентом.

Я загрузил sketch в Arduino Uno, цикл которого выглядит примерно так:

Итак, теперь я больше ничего не могу загрузить, потому что IDE говорит: «порт уже используется».

Есть ли способ «перезагрузить» Arduino без другого программиста?

Правка :
Ничто другое не использует последовательный порт, и все шло отлично, пока я не загрузил предыдущий эскиз.

Правка :
Я нашел несколько интересных вещей:

  1. Подготовьте основную пустую программу (пустая настройка, цикл и т.д.)
  2. Скомпилируйте это.
  3. Сброс Arduino с помощью аппаратной кнопки на чипе
  4. Нажмите Ctrl + U загрузить свой код.
  5. Если неудачно - добрался до 3.

Задержка запуска программ начинается с момента запуска, просто работайте в соответствии с вашим временем. Это сработало для меня, когда ошибка в коде моего Arduino выполняла программный сброс каждые 500 мс.

У меня была такая же проблема на двух Arduino (одна Uno и одна плата Modern Device Freeduino/USB Host), и окно между сбросом и началом использования последовательного порта было настолько маленьким, что было невозможно загрузить.

Я наконец-то решил проблему, купив другую Arduino Uno и собрав кабель ISP для этих инструкций , и используя его для прошивки приложения Bare Bones из примеров на каждую недоступную плату, используя Arduino IDE версии 0023 Следуя этим инструкциям для изменения настроек .txt. (Обязательно сохраните исходный файл перед его редактированием, чтобы вы могли заменить его после того, как спасли Arduino.)

  • Вы можете перезаписать загрузчик на Arduino, чтобы получить больше места.
  • Как только загрузчик будет перезаписан, плата загрузится быстрее.
  • Возможно, вы можете запрограммировать необработанные AVR для специальных проектов, но я не пробовал это: Google для ArduinoISP
  • Это быстро исправит Arduinos, который вы заблокируете в будущем.
  • Теперь вы можете безопасно экспериментировать, чтобы найти способы предотвратить блокировку устройства при использовании последовательного порта в будущем.

Убедитесь, что вы подключаете Arduino непосредственно к компьютеру, а не через концентратор. Использование концентратора даст вам эту ошибку.

После того, как почесал голову об этой проблеме, вот очень простое РЕШЕНИЕ, которое работает в любое время:

  • Отключите USB-кабель
  • Зайдите в ваш менеджер устройств
  • Нажмите на порты (COM и LPT)
  • Щелкните правой кнопкой мыши на Arduino . (COMx)
  • Свойства
  • Настройки порта
  • Установите Flow Control наАППАРАТНОЕ ОБЕСПЕЧЕНИЕ
  • Создать пустой эскиз (* Необязательно)
  • Подключите USB-кабель
  • Загрузить (Ctrl - U)

Я только что провел последние 5 часов в поисках решения этой проблемы (последовательный порт COM3 уже используется, последовательный порт выделен серым цветом) . Я перепробовал все предложенные мной форумы, включая этот.

Примечание: Сброс платы вручную с помощью кнопки на чипе или в цифровом виде через разное. коды в интернете не помогли решить эту проблему, потому что сигнал был каким-то образом заблокирован/запутан между моим arduino uno и портом в моем ноутбуке. Обновление драйверов похоже на сброс проблемы «последовательный порт уже используется».

По крайней мере, пока ..

У меня похожая проблема.

Если я включаю myarduino Перед запуском загруженной программы происходит задержка.

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

void setup()<> void loop()<>

так что моя проблема решена.

Отключите любое соединение с выводами Arduino перед загрузкой.

Если последовательная консоль все еще открыта, последовательный порт будет зарезервирован. Закройте его и попробуйте снова.

Если порт говорит: «Уже используется», то вы, вероятно, используете неправильный порт . Переключите его на порт, к которому вы подключили свое arduino и , Затем попробуйте выполнить повторную загрузку, вы обязательно увидите, что он работает.


У меня была та же проблема сегодня. Вот простое решение, которое мы нашли, чтобы решить эту проблему (спасибо Ангиаре):

Вместо того, чтобы загружать новые коды в arduino с помощью «кнопки загрузки» (кружок с зеленой стрелкой) на экране, используйте мышь, чтобы нажать «Эскиз», а затем «Загрузить».

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