Как настроить программу arduino ide для работы с конкретной платой семейства arduino

В процессе переделки своего гигрометра с Arduino на самодельную плату пришлось задуматься о поддержке последней в Arduino IDE. Первый вариант «градусника» был собран на базе Freeduino 2009, который есть аналог Arduino Duemilanove, поэтому проблем не было. После перехода на собственную плату на базе Atmega8a пришлось отказаться от загрузчика и заливать прошивку через программатор. В качестве программатора у меня используется USBAsp v2.0, который был куплен на ebay.

С заливкой простеньких программок вида «помигать светодиодом» проблем не возникло. А вот собрать arduino-проект и залить его оказалось сложнее. Чтобы не писать длинные Makefile’ы я просто решил добавить поддержку своей новой платы в IDE. В этом нет ничего сложного, но есть пара подводных камней, на которые я наткнулся в процессе.

Типичная рекомендация из гугла — добавить описание своей платы и программатора в файлы boards.txt и programmers.txt, поставляемые с Arduino IDE. Мне не понравился такой подход, т.к. при апгрейде IDE мои изменения будут утеряны и придется снова все повторить.

Как быстро установить и настроить Arduino IDE. Проверка соединения. Уроки Arduino для начинающих

Дальнейшее гугление привело меня на форум, где описывали похожий случай. Оказывается IDE позволяет определить пользовательский конфиг в папке со скетчами. В моем случае это ~/development/arduino, значит конфиги будут лежать в ~/development/arduino/hardware/own/boards.txt и ~/development/arduino/hardware/own/programmers.txt соответственно.

После добавления описаний получилось:

$ cat ~/development/arduino/hardware/own/boards.txt own.name=Generic ATmega8 board own.upload.using=usbasp own.upload.maximum_size=8192 own.build.mcu=atmega8 own.build.f_cpu=16000000L own.build.core=arduino

Фьюзы были прошиты заранее, когда игрался с простыми примерами. В моем случае lfuse=0xff hfuse=0xd9

$ cat ~/development/arduino/hardware/own/programmers.txt usbasp.name=USBAsp usbasp.communication=usb usbasp.protocol=usbasp

Теперь в IDE появился мой программатор и плата. Запускаю компиляцию и. облом не может инклудить файл WProgram.h. Далее нагуглилось, что WProgram.h — файл принадлежащий платформе «arduino». Это та самая опция own.build.core=arduino, которую я просто скопировал из примера, но не задумывался о ее назначении.

Чтобы не плодить копии сделал символическую ссылку на директорию, поставляемую с arduino ide.

$ mkdir ~/development/arduino/hardware/own/cores $ ln -s /usr/share/arduino/hardware/arduino/cores/arduino ~/development/arduino/hardware/own/cores/arduino

Источник: blog.tataranovich.com

Начало работы с Arduino IDE и платой Arduino

Что такое Arduino IDE? Как мы знаем, для успешной работы нам необходимы текстовый редактор для написания кода программы, компилятор для преобразования кода программы в машинный код/бинарный файл и программное обеспечение для загрузки этого кода в микроконтроллер.

Arduino для начинающих. Начало работы

Когда все эти функции мы объединяем в одном программном продукте, добавляя в него ряд дополнительных функций (поддержка консоли, отладка программы и т.п.), мы получаем интегрированную среду разработки (в англ. Integrated Development Environment, IDE). Соответственно, Arduino IDE, как следует из ее названия, является интегрированной средой разработки для плат Arduino. Она состоит из продвинутого редактора кода программы, компилятора, программатора, последовательной консоли, последовательного плоттера и многих других полезных инструментов. И при этом она легка в освоении и использовании.

Читайте также:
Установка программ в Андроид 10

Начало работы с Arduino IDE и платой Arduino: краткое руководство

Arduino IDE является кроссплатформенным программным продуктом и может работать на операционных системах Linux и Windows. Ее можно даже использовать в операционной системе платы Raspberry Pi. (. ) Мы можем программировать платы с помощью Arduino IDE и языка Arduino (в некоторых источниках его называют Wiring), который является производным от языков программирования C/C++.

Данная статья посвящена началу работы с Arduino IDE. У нас на сайте уже есть достаточно популярная статья про начало работы с платой Arduino, но в ней основное внимание уделено именно работе с платой Arduino, вопросы работы с Arduino IDE в ней рассмотрены в меньшей степени, чем в данной статье. Также для начинающих рекомендуем прочитать статью про наиболее распространенные ошибки при работе с платой Arduino.

Альтернативами Arduino IDE, которые могут заместить практически все ее функции, являются Arduino Web Editor и PlatformIO.

Как установить Arduino IDE

Установка Arduino IDE отличается исключительной простотой. Вначале скачайте Arduino IDE с официального сайта. Доступны ее различные версии для операционных систем Windows, Mac и Linux. Также возможны ее два варианта – Arduino IDE 1.x и Arduino IDE 2.x. В большинстве своем различия между этими двумя вариантами обусловлены различным видом графического интерфейса пользователя (GUI).

В данной статье мы будем использовать ее классический вариант 1.X.

Для установки Arduino IDE выполните следующую последовательность действий:

  • по вышеприведенной ссылке скачайте установщик Arduino IDE для необходимой вам операционной системы;
  • запустите на выполнение скачанный .exe файл;
  • согласитесь с условиями лицензии, выберите должна ли Arduino IDE быть установлена для всех пользователей или нет и нажмите “Next” для продолжения;
  • выберите путь для установки Arduino IDE или оставьте его по умолчанию (какой предлагает установщик) и нажмите на “Install”;
  • подождите пока закончится процесс установки, затем нажмите на “Close”.

Последовательность шагов при установке Arduino IDEУстановка драйвера для Arduino

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

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

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

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

Основы работы с Arduino IDE

После завершения процесса установки Arduino IDE вы можете запустить ее при помощи ярлыка быстрого запуска на рабочем столе или из меню Start. На следующем рисунке показан интерфейс запущенной Arduino IDE.

Интерфейс Arduino IDE и назначение его элементов

Выбор платы Arduino

Прежде чем начать компиляцию программы в Arduino IDE очень важно выбрать в ней правильную плату Arduino, с которой вы работаете. Для этого выберите пункт меню “Tools” -> “Board” -> “Arduino AVR Boards” и в нем выберите вашу плату Arduino.

Читайте также:
Как запретить открытие программы при запуске

Выбор платы Arduino в Arduino IDE

Выбор порта подключения платы Arduino

Также перед началом работы в Arduino IDE необходимо выбрать правильный последовательный (COM) порт, к которому подключена плата Arduino. Иначе вы не сможете загрузить код программы в плату. Для выбора номера порта откройте пункт меню “Tools” -> “Port” и в нем выберите правильный COM порт, к которому подключена плата.

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

Выбор порта подключения платы Arduino

Также, чтобы не отключать плату Arduino от USB порта, можно посмотреть COM порт, к которому она подключена, в диспетчере устройств операционной системы Windows.

Код программы мигания светодиодом

Самым простым способом проверить работу платы Arduino является загрузка в нее кода программы мигания светодиодом. Чтобы открыть код программы мигания светодиодом выберите в Arduino IDE пункт меню Files -> Examples -> Basics -> Blink.

Открытие в Arduino IDE примера программы мигания светодиодом

После выбора этого пункта меню откроется новое окно с кодом программы мигания светодиода. В коде данной программы вы можете увидеть две функции: void setup() и void loop() . Функция void setup() – это самая первая функция, которая вызывается (исполняется) когда на плату Arduino подается питание. Обычно в теле данной функции производится объявление необходимых глобальных переменных, установка режимов работы используемых контактов и инициализация различных устройств, подключенных к плате Arduino. Тело функции void loop() исполняется в непрерывном бесконечном цикле, в него вы можете добавить все команды, которые необходимо исполнять непрерывно.

Открытый в Arduino IDE пример программы мигания светодиодом

В коде нашей программы мигания светодиодом в функции void setup() присутствует команда:

Источник: microkontroller.ru

Arduino: один скетч под несколько платформ

Мир DIY на основе экосистемы Arduino цветет и пахнет. Количество плат, совместимых с Arduino становится все больше и больше. Какие-то платы полностью совместимы с Atmel AVR, какие-то имеют существенные отличия. Да и среди микроконтроллеров AVR могут быть значительные несоответствия, которые необходимо учитывать, если требуется написать скетч или библиотеку, которые должны без проблем работать на разных аппаратных платформах.

robot, франкенштейн

Различия между микроконтроллерами и платформами обычно заключается в следующих моментах (список далеко не полный):

  • Конкретные пины у разных микроконтроллеров могут иметь различные функции. К примеру, на одном микроконтроллере пин за номером 1 умеет делать PWM, а на микроконтроллере другого типа нет.
  • Могут различаться разрядности АЦП (используем для analogRead) и ЦАП (используем для analogWrite, т.е. для ШИМ). На одном микроконтроллере разрядность 8бит (изменение от 0 и до 254), на другом 10бит (измерение от 0 и до 1023), а на третьем 12бит.
  • Могут кардинально различаться даже способы указания пинов. Так, для Atmel AVR применяется просто числовое указание пинов 1, 2, 3 и т.п. А для экосистемы ESP используется наименование пинов D1, D2, D3 и т.п.
Читайте также:
Развлекательная программа это смешно

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

По сути, макрос — это текстовой кусочек исходного кода, который перед компиляцией заменяется на свое значение. Иногда подобная замена может быть условной, что позволяет существенно изменять код программы при компиляции при разных условиях. В среде Arduino используется С++, язык очень мощный, позволяющий программисту сделать все и даже немного больше. Развивается С++ с 1983 года и с тех пор разработчики навертели в языке кучу предопределенных макросов, ознакомиться с которыми будет как минимум полезно.

При компиляции скетча или библиотеки Arduino IDE передает компилятору параметр mmcu=architecture или mmcu=MCU type. В данном параметре указывается конкретный микроконтроллер, под который идет компиляция или же определяется архитектура. Например, при компиляции под Atmega328p передается параметр mmcu=atmega328p. Далее компилятор, а для компиляции под AVR используется AVR Libc от Atmel создаются собственные макросы.

Во-первых, определяются два макроса __AVR и __AVR__ которые означают, что программа скомпилирована под платформу AVR. Во-вторых, определяется макрос обозначающий архитектуру, это может быть __AVR_ARCH__=1 или __AVR_MEGA__[5] и т.п. И в-третьих, определяется макрос обозначающий конкретный тип микропроцессора, например, __AVR_ATmega328P__. Подробнее об определяемых макросах компилятора при работе с AVR можно посмотреть в документации на AVR Libc.

Если разбираться дальше и погрузиться в дебри экосистемы ESP от Espressif под Arduino, то тут все немного путанее. Найти в документации по ESP для Arduino и в документации ESP для IDF описание макросов мне не удалось. Но есть лайфхак, даже два.

Итак, чтобы понять какие макросы передаются при компиляции конкретной платы, необходимо включить полный вывод при компиляции (осуществляется в настройках Arduino IDE), откомпилировать скетч под нужную плату и посмотреть параметры D, передаваемые компилятору. Это и будут искомые макросы. Например, при компиляции для Lolin D1 R2 ATmega328P 8Mhz, single chip» #else // Pins setup WeMos D1 Mini, Mini Pro, Mini Lite, Ai-Thinker #define OK_1 D3 // OK output for channel 1 #define OK_2 D7 // OK output for channel 2 #define Button_1 D2 // Button for channel 1 #define Button_2 D5 // Button for channel 2 #define LED_1 BUILTIN_LED // LED indicator for channel 1 #define LED_2 D8 // LED indicator for channel 2 #define CompiledFor «ESP8266 chip» #endif

В примере я использовал структуру из #ifdef, #else и #endif. Если при компиляции определяется, что программируется под плату Atmega328p, то используются пины 15, 14, 2, 3, 7, 8, а также создается текстовая константа, которая затем выводится в последовательный порт. Если же такой чип не обнаружен, то считается, есть идет компиляция под ESP и используются соответствующие пины D3, D7, D2, D5, D13, D8.

Опубликовано 30.05.2019 автором kvv213 в следующих категориях:
DIY Soft статья

Источник: blog.kvv213.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru