Язык arduino ide: Программирование Ардуино | Аппаратная платформа Arduino

Содержание

Arduino и совместимые языки программирования | GeekBrains

Для тех, кто не разделяет железо и код.

https://d2xzmw6cctk25h.cloudfront.net/post/1017/og_cover_image/d546216a36e4dcd612076245e1060f61

Начать свой путь в IT бывает очень сложно хотя бы просто потому, что глядя на окружающие технологии невозможно отделить «железный» интерес от программного. С одной стороны — желание создать устройство с безупречным внешним видом, множеством датчиков и безграничными возможностями, с другой — таинство обработки данных, стремление максимально увеличить быстродействие, не пренебрегая функциональностью. Arduino — первый шаг к большим изобретениям, не требующий ни глубоких знаний схемотехники, ни опыта в программировании.

Что такое Arduino

Если называть вещи своими именами, то Arduino — это конструктор для тех, кому надоело созидать бесполезные образы и захотелось хоть немного наделить их жизнью. В самом простейшем случае Arduino — печатная плата, на которой расположен контроллер, кварцевый генератор, АЦП/ЦАП, несколько разъёмов, диодов и кнопок. Остальное — дело рук хозяина: хотите — создавайте робота, хотите — программно-аппаратную платформу для «умного» дома, ну или забудьте про практическую пользу и развлекайтесь.

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

Arduino достаточно ограниченная платформа в плане возможностей программирования, особенно в сравнении с Raspberry Pi. В силу того, что порог входа неприлично низкий (базовый Tutorial занимает 3 листа формата A4), то рассчитывать на изобилие языков без подключения дополнительных модулей не приходится. За основу здесь принят C/C++, но с использованием различных IDE и библиотек вы получите доступ к оперированию Python, C#, Go, а также таким детским развлечениям, как Snap! и ArduBlock. О том как, когда и кому их использовать, поговорим далее.

C/C++

Базовый язык платформы Arduino, который с некоторыми доработками и упрощениями используется в стандартной программной оболочке. Найти все доступные команды «для новичка» можно здесь, но никто не мешает вам воспользоваться исходными возможностями языка C++, никаких надстроек не потребуетс. Если же есть желание поиграть с «чистым» C, то к вашим услугам программа WinAVR, предназначенная, как следует из названия, для взаимодействия ОС Windows и МК серии AVR, которые и используются на Arduino. Более подробное руководство можете прочитать вот здесь.

Использование C/C++ рекомендуется тем, кто уже имеет представление о программировании, выучил в школе пару языков и хочет создать на Arduino что-то большее, чем светодиодную «мигалку» или простую машинку.

Ardublock

Временно отойдем от языков взрослых к любимому ребятней языку Scratch, а вернее к его адаптации — Ardublock. Здесь всё тоже самое, но с адаптацией к вашей платформе: цветные блоки, конструктор, русские названия, простейшая логика. Такой вариант здорово подойдет даже тем, кто с программированием не знаком вовсе. Подобно тому, как в языке Logo вы можете перемещать виртуальную черепашку по виртуальной плоскости, здесь с помощью нехитрых операций вы можете заинтересовать ребенка реальной интерпретацией его программных действий.

Да, кстати, для использования необходимо на вашу стандартную среду Arduino IDE установить плагин. Последние версии лучше не хватать, они довольно сложные, для начала подойдет датированная концом 2013 года. Для установки скачанный файл переименовываем в «ardublock-all» и запихиваем в папку «Мои документы/Arduino/tools/ArduBlockTool/tool». Если её не существует — создаем. Если что-то не поняли, то вот здесь более подробно.

Snap!

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

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

Рекомендуется младшей возрастной группе, тем, кто учил программирование так давно, что уже ничего не помнит и тем, кто хочет завлечь своего ребенка в IT через Scratch и Snap!.

Python

Формально программировать на Arduino вы можете используя хоть язык Piet, просто потому что при должном упорстве вы скомпилируете в машинный код что угодно. Но в силу того, что Python — один из наиболее популярных языков с практически оптимальным сочетанием сложность\возможности, то обойти стороной его применяемость в Arduino было бы нелепо. Начать изучение Python вы можете с нашего бесплатного интенсива «Основы языка Python».

Итак, для этого вам понадобится библиотеки PySerial (ранее, возможно, вы использовали её для общения с портами компьютера) и vPython. О том, как правильно всё настроить и заставить в конечном счёте работать, можете соответственно почитать здесь и здесь.

Go и другие языки.

Подобно тому, как Arduino взаимодействует с Python через библиотеку PySerial, он может взаимодействовать и с Go, и c Java, и с HTML, и с чем только захотите. Arduino — достаточно популярная платформа, чтобы такой банальный вопрос, как выбор удобного языка, не остановил очередного исследователя. Единственное, что требуется от владельца этой маленькой платы — задумать что-нибудь удивительно интересное, а удобный инструмент неизбежно найдётся.

Как программируют Arduino

Arduino — это про­грам­ми­ру­е­мый мик­ро­кон­трол­лер, кото­рый мож­но исполь­зо­вать в робо­то­тех­ни­ке, умном доме и вооб­ще запро­грам­ми­ро­вать его как угод­но: что­бы он кор­мил кота, поли­вал рас­те­ния, пре­ду­пре­ждал вас о при­бли­же­нии вра­гов или откры­вал две­ри с помо­щью маг­нит­но­го клю­ча. У нас есть под­бор­ка 10 инте­рес­ных вещей, кото­рые мож­но сде­лать на этой плат­фор­ме. Теперь вре­мя разо­брать­ся, как про­грам­ми­сты с ней рабо­та­ют.

Язык Arduino

Если опыт­ный про­грам­мист посмот­рит на код для Arduino, он ска­жет, что это код на C++. Это неда­ле­ко от исти­ны: основ­ная логи­ка Арду­и­но реа­ли­зо­ва­на на C++, а свер­ху на неё надет фрейм­ворк Wiring, кото­рый отве­ча­ет за обще­ние с желе­зом.

На это есть несколь­ко при­чин:

  1. У С++ сла­ва «слиш­ком слож­но­го язы­ка». Arduino пози­ци­о­ни­ру­ет­ся как мик­ро­кон­трол­ле­ры и робо­то­тех­ни­ка для начи­на­ю­щих, а начи­на­ю­щим ино­гда труд­но объ­яс­нить, что С++ не такой уж слож­ный для стар­та. Про­ще сде­лать фрейм­ворк и назвать его отдель­ным язы­ком.
  2. В чистом С++ нет удоб­ных команд для AVR-контроллеров, поэто­му нужен был инстру­мент, кото­рый возь­мёт на себя все слож­ные функ­ции, а на выхо­де даст про­грам­ми­сту часто исполь­зу­е­мые коман­ды.
  3. Раз­ра­бот­чи­ки дали про­грам­ми­стам про­сто писать нуж­ные им про­грам­мы, а все слу­жеб­ные коман­ды, необ­хо­ди­мые для пра­виль­но­го оформ­ле­ния кода на С++, взя­ла на себя спе­ци­аль­ная сре­да раз­ра­бот­ки.

Сре­да раз­ра­бот­ки (IDE) Arduino.

Подготовка и бесконечность

В любой про­грам­ме для Arduino есть две прин­ци­пи­аль­ные части: под­го­то­ви­тель­ная часть и основ­ной цикл.

В под­го­то­ви­тель­ной части вы гово­ри­те желе­зу, чего от вас ожи­дать: какие пор­ты настро­ить на вход, какие на выход, что у вас как назы­ва­ет­ся. Напри­мер, если у вас дат­чик под­клю­чён ко вхо­ду 10, а лам­поч­ка к выхо­ду 3, то вы може­те обо­звать эти вхо­ды и выхо­ды как вам удоб­но, а даль­ше в коде обра­щать­ся не к деся­то­му вхо­ду и тре­тье­му выхо­ду, а по-человечески: к дат­чи­ку или лам­поч­ке. Вся часть с под­го­тов­кой выпол­ня­ет­ся один раз при стар­те кон­трол­ле­ра. Кон­трол­лер всё запо­ми­на­ет и пере­хо­дит в основ­ной цикл.

Основ­ной цикл — это то, что про­ис­хо­дит в функ­ции loop(). Арду­и­но берёт отту­да коман­ды и выпол­ня­ет их под­ряд. Как толь­ко коман­ды закон­чи­лись, он воз­вра­ща­ет­ся в нача­ло цик­ла и повто­ря­ет всё. И так до бес­ко­неч­но­сти.

В основ­ном цик­ле мы опи­сы­ва­ем все полез­ные вещи, кото­рые дол­жен делать кон­трол­лер: счи­ты­вать дан­ные, мигать лам­па­ми, включать-выключать мото­ры, кор­мить кота и т. д.

Что можно и чего нельзя

Арду­и­но рабо­та­ет на одно­ядер­ном и не шиб­ко шуст­ром про­цес­со­ре. Его так­то­вая часто­та — 16 мега­герц, то есть 16 мил­ли­о­нов про­цес­сор­ных опе­ра­ций в секун­ду. Это не очень быст­ро, плюс ядро толь­ко одно, и оно испол­ня­ет одну коман­ду за дру­гой.

Вот какие огра­ни­че­ния это на нас накла­ды­ва­ет.

Нет насто­я­щей мно­го­за­дач­но­сти. Мож­но симу­ли­ро­вать мно­го­за­дач­ность с помо­щью при­ё­ма Protothreading, но это ско­рее костыль. Нель­зя, напри­мер, ска­зать: «Когда нажмёт­ся такая-то кноп­ка — сде­лай так». Вме­сто это­го при­дёт­ся в основ­ном цик­ле писать про­вер­ку: «А эта кноп­ка нажа­та? Если да, то…»

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

Ана­ло­гич­но с сетью: без допол­ни­тель­ных плат и биб­лио­тек Арду­и­но не может ни с чем общать­ся (кро­ме как включать-выключать элек­три­че­ство на сво­их выхо­дах).

Полег­че со слож­ной мате­ма­ти­кой: если вам нуж­но что-то слож­ное типа три­го­но­мет­ри­че­ских функ­ций, будь­те гото­вы к тому, что Арду­и­но будет счи­тать их доволь­но мед­лен­но. Для вас это одна строч­ка кода, а для Арду­и­но это тыся­чи опе­ра­ций под капо­том. Поща­ди­те.

Отчё­ты? Ошиб­ки? Толь­ко при ком­пи­ля­ции. У Арду­и­но нет встро­ен­ных средств сооб­щить вам, что ему нехо­ро­шо. Если он завис, он не пока­жет окно ошиб­ки: во-первых, у него нет гра­фи­че­ско­го интер­фей­са, во-вторых — экра­на. Если хоти­те систе­му оши­бок или отчёт­ность, пиши­те её 🙂

Если серьёз­но, то перед зали­вом про­грам­мы на кон­трол­лер ком­пи­ля­тор про­ве­рит код и най­дёт в нём опе­чат­ки или про­бле­мы с типа­ми дан­ных. Но на этом всё: если у вас слу­чай­но полу­чи­лась бес­ко­неч­ная пет­ля в коде или при каких-то обсто­я­тель­ствах вы пове­си­те про­цес­сор деле­ни­ем на ноль — жми­те пере­за­груз­ку и исправ­ляй­те код.

И всё же

Арду­и­но — это кайф: вы с помо­щью кода може­те управ­лять физи­че­ским миром, мото­ра­ми, лам­па­ми и элек­тро­де­та­ля­ми. Мож­но создать умную розет­ку; мож­но собрать умный замок для сей­фа; мож­но сде­лать детек­тор влаж­но­сти поч­вы, кото­рый будет вклю­чать авто­ма­ти­че­ский полив. И всё это — на доволь­но понят­ном, чита­е­мом и ком­пакт­ном язы­ке C++, на кото­рый свер­ху ещё наде­та удоб­ная биб­лио­те­ка для желе­за. Пре­крас­ный спо­соб про­ве­сти выход­ные.

Какие ещё языки используют для Arduino

Но чу! Под Arduino мож­но писать и на дру­гих язы­ках!

С. Как и С++, Си лег­ко мож­но исполь­зо­вать для про­грам­ми­ро­ва­ния мик­ро­кон­трол­ле­ров Arduino. Толь­ко если С++ не тре­бу­ет ника­ких допол­ни­тель­ных про­грамм, то для С вам пона­до­бит­ся WinAVR, что­бы пра­виль­но пере­ве­сти код в язык, понят­ный кон­трол­ле­рам AVR.

Python. Было бы стран­но, если бы тако­му уни­вер­саль­но­му язы­ку не нашлось при­ме­не­ния в робо­то­тех­ни­ке. Берё­те биб­лио­те­ки PySerial и vPython, при­кру­чи­ва­е­те их к Python и гото­во!

Java. Прин­цип такой же, как в Python: берё­те биб­лио­те­ки для рабо­ты с пор­та­ми и кон­трол­ле­ра­ми и мож­но начи­нать про­грам­ми­ро­вать.

HTML. Это, конеч­но, совсем экзо­ти­ка, но есть про­ек­ты, кото­рые застав­ля­ют HTML-код рабо­тать на Arduino.

А вооб­ще Arduino рабо­та­ет на кон­трол­ле­рах AVR, и про­шить их мож­но любым кодом, кото­рый ском­пи­ли­ро­ван под это желе­зо. Всё, что вам нуж­но — най­ти биб­лио­те­ку для ваше­го люби­мо­го язы­ка, кото­рая пре­об­ра­зу­ет нуж­ные коман­ды в машин­ный код для AVR.

Уроки Arduino. О платформе | AlexGyver Technologies

О платформе


Что же такое Arduino? Формально это – торговая марка, под которой выпускаются официальные платы и софт. Название Ардуино идёт от одноименного названия рюмочной в Италии, где создатели платформы любили пропустить по рюмочке. Предлагаемая Arduino платформа включает в себя железо (сами платы) и софт (среда разработки).

Семейство Ардуино – несколько моделей так называемых отладочных плат. Отладочная плата представляет собой как ни странно печатную плату, в сердце которой стоит микроконтроллер – та самая штука, которую мы будем программировать. Микроконтроллер это микросхема, содержащая в себе микропроцессор, интерфейсы ввода-вывода, память (оперативную и постоянную), таймеры и другие штуки. Да, микропроцессор – это другое, микропроцессор по сути может только выполнять вычисления (как процессор в компьютере), а микроконтроллер – это практически полноценный компьютер, размещенный в одном кристалле микросхемы. В большинстве плат Arduino используются микроконтроллеры серии ATmega от производителя AVR.

Запомнили сразу важную мысль – Ардуино – не микроконтроллер, не процессор, Ардуино – платформа (и торговая марка конечно же =) ). Плата Ардуино – это отладочная плата с микроконтроллером на борту.

Железо


Помимо микроконтроллера на отладочной плате стоит обвязка, необходимая для его работы: это кварцевый генератор, задающий частоту работы процессора, и “рассыпуха” – конденсаторы и резисторы, выполняющие фильтрующие и подтягивающие функции.

Arduino “на минималках”: кварц, конденсаторы и прочее

Давайте так: что нужно сделать для того, чтобы собрать устройство на микроконтроллере? Нужно подключить к выходам микроконтроллера необходимые устройства (далее – “железо”), загрузить на микроконтроллер прошивку, которая будет управлять этим железом, и обеспечить всё это дело стабильным питанием. Цель разработчиков ардуино была совместить вышеуказанное с простотой и удобством работы и модульностью, тем самым превратив разработку электронных устройств в мощный универсальный конструктор. Эта цель была достигнута так: на плате, вместе с микроконтроллером, разместили “программатор” для загрузки прошивки, usb порт и стабилизатор питания, позволяющий питать плату от широкого диапазона постоянных напряжений: 5-19 вольт. Микроконтроллеру нужно 5 вольт, что стабилизатор ему и обеспечивает.

Загрузка прошивки


USBasp – ISP программатор для AVR (в том числе Arduino)

Что касается так называемого программатора: изначально способом загрузки прошивки в микроконтроллер является загрузка посредством ISP (in-system programming) программатора, который загружает прошивку напрямую в память микроконтроллера. Это способ хорош и надёжен, но он дороже и не такой универсальный как тот, который используется в Ардуино. Работает это так: вместо ISP программатора на плате стоит USB-TTL преобразователь, который позволяет Ардуино (на её стороне TTL – транзистор-транзистор логика) буквально общаться с компьютером (на его стороне – USB) и обмениваться данными. Но просто общаясь с компьютером загрузить прошивку не получится, поэтому в памяти микроконтроллера “живёт” загрузчик (он же bootloader), который умеет ловить данные, идущие с компьютера и загружать их во Flash память микроконтроллера. При каждом запуске микроконтроллера загрузчик ждёт команду от компьютера, мол желает ли тот загрузить новую прошивку. Если никто ему не отвечает какое-то время, он запускает уже имеющуюся в памяти МК прошивку. Отсюда вытекает несколько минусов:

  • Загрузчик сидит во Flash памяти и занимает место (около 6%, что довольно-таки много)
  • При подаче питания на МК прошивка стартует не сразу, каждый раз загрузчик ждёт команду от компьютера в течение какого-то времени (пару секунд), прежде чем передать управление имеющейся в памяти программе.

Оба этих минуса решаются частично или полностью:

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

Возвращаясь к USB-TTL преобразователю: почему именно такой способ загрузки прошивки выбрали разработчики Arduino? Да всё очень просто: микросхема USB-TTL преобразователя стоит дешевле микросхем, могущих в ISP (роль оных обычно выполняют микроконтроллеры), что прилично удешевляет платформу. Но самое главное – использование USB-TTL преобразователя добавляет нам возможность общаться с платой при помощи компьютера (смартфона, планшета) без использования дополнительного железа, т.е. мы можем как управлять какими-то устройствами (если это заложено в коде прошивки), так и получать от Ардуино данные, например показания с датчиков. Но самое-самое главное – это позволяет отлаживать код, вручную, но все таки отлаживать.

Софт


Что касается программной части, предоставленной Arduino, то это Arduino IDE (Integrated Development Environment – интегрированная среда разработки), включающая в себя редактор кода, компилятор и всё остальное необходимое для загрузки прошивки в плату. Подробнее о ней поговорим в отдельном уроке.

Модели Ардуино


Платы Arduino

Вот мы и добрались до самих плат Ардуино, которых на данный момент появилось великое множество благодаря открытости платформы: все схемы и исходные коды находятся в открытом доступе, и вы можете сделать свою версию платы и продавать её, чем активно занимаются китайцы. Единственный пункт: слово Arduino – зарегистрированная торговая марка, и свою плату вам придется назвать как-то по-другому, отсюда и появились всякие Искры, Бузины и прочие так называемые Arduino совместимые платы.
Разновидностей плат очень много, но используют они одни и те же модели микроконтроллеров. От модели микроконтроллера зависит объем памяти и количество ног, ну и есть некоторые специальные фишки. На большинстве моделей Arduino стоят 8-битные МК от AVR с кварцевым генератором на 16 МГц (либо ниже), то есть по производительности платы на ATmega не отличаются, отличаются только объемом памяти, количеством ног и интерфейсов/таймеров. Модели Ардуино с МК от производителя ARM, например Arduino DUE, в разы мощнее своих собратьев за счёт 32-битного процессора, но это совсем другая история.

ПараметрATtiny85ATmega328ATmega32u4ATmega2560
Кол-во ног83244100
Из них доступны5232486
Flash память8 Kb32 Kb32 Kb256 Kb
EEPROM память512 bytes1 Kb1 Kb4 Kb
SRAM память512 bytes2 Kb2.5 kB8 Kb
Каналов АЦП3 (4 с rst)6 (8 в SMD корпусе)1216
Каналов PWM36715
Таймеры2х 8bit2х 8bit2х 8bit2х 8bit
  1х 16bit2х 16bit4х 16bit
Serial интерфейсНетх1х1х4
I2C интерфейсНетДаДаДа
Прерывания1 (6 PCINT)2 (23 PCINT)5 (44 PCINT)8 (32 PCINT)
Платы на его основеDigispark, LilyTinyUno, Nano, Pro Mini, Lilypad, StrongLeonardo, Micro, Pro Micro, BS MicroMega, Mega Pro

Таким образом вы должны сразу понять, что, например, Ардуино Уно=Нано=Про Мини=Лилипад по своим возможностям и взаимозаменяемости. Или Леонардо=Про Микро. Ссылки на недорогие китайские Ардуины вы можете найти у меня на сайте. Точно там же вы найдёте ссылки на кучу датчиков, модулей и другого железа, которое можно подключить к Arduino. О возможностях ардуино по работе с другими железками поговорим в одном из следующих уроках.

Программирование


Код. Ничего лишнего

Ардуино программируется на языке программирования C/C++ с соответствующим ему синтаксисом. Встроенный сборщик, препроцессор и компилятор (avr-gcc или Win-AVR) прощают большое количество ошибок и делает многое за пользователя автоматически, мы даже об этом не знаем и не задумываемся. Базовые функции для управления выводами и интерфейсами микроконтроллера, математика и некоторые другие функции/макросы взяты из открытого фреймворка для работы с микроконтроллерами под названием Wiring. Именно из него состоит базовый набор инструментов Ардуино. В связи с этим сами разработчики Ардуино называют язык “упрощённым c++”, и даже дали ему отдельное название – Arduino Wiring.

Тут следует отделить мух от котлет: “из коробки” в Arduino IDE нам доступна огромная куча различных функций и инструментов:

  • Все возможности языка C++, которые предоставляет компилятор: типы данных, операторы и вообще весь необъятный синтаксис. Мы программируем на том же C++, на котором можно программировать в любом другом месте.
  • “Ядро” Ардуино – библиотека Arduino.h, которая автоматически подключается в код. В ней содержатся функции для управления пинами, интерфейсами, а также имеется набор всяких полезных функций и инструментов. А ещё оно отвечает за инициализацию и настройку периферии микроконтроллера при запуске. В ядре кстати лежат стандартные библиотеки для Serial, Wire, SPI и EEPROM.
  • В папке с программой лежит набор стандартных библиотек: для LCD дисплея, шаговика, сервопривода и некоторых других железок.
  • С компилятором идёт набор низкоуровневых библиотек для AVR (сон, progmem, watchdog и многие другие).
  • Компилятор позволяет работать с микроконтроллером “напрямую” при помощи регистров и чтения даташита до утра.
  • Также мы можем писать на ассемблере, взяв под контроль каждый такт работы МК.

Если вы научитесь свободно прогать на Ардуино и вдруг перейдете к разработке программ на том же C++ в более взрослых средах разработки, вы будете неприятно удивлены большим количеством дополнительного кода, который придется писать руками. И наоборот, если умеющий в плюсы (си-плюс-плюсы) человек посмотрит на типичный ардуино-код, он скажет “да как это вообще работает то?”. Компилятор в Arduino IDE настроен на максимальную всеядность и прощение ошибок, потому что это обучающая платформа.

Сейчас вернёмся к такому понятию, как библиотека. Жизнь рядового ардуинщика неразрывно связана с библиотеками, потому что огромное комьюнити за годы своего существования сделало огромное количество этих самых библиотек на все случаи жизни и для всех продающихся датчиков и модулей. Библиотека это набор файлов, в которых содержится дополнительный код, которым мы можем пользоваться просто ознакомившись с документацией или посмотрев примеры. Такой подход называется “черным ящиком”, мы можем даже не догадываться, какой ужас и кошмар (в плане сложности кода) содержится в библиотеке, но с лёгкостью пользоваться возможностями, который этот код даёт. Купили модуль – нашли библиотеку – открыли пример – всё, результат достигнут…

Хейтеры платформы


В мире серьезных программистов и разработчиков очень не любят Ардуино. Почему? Рассмотрим несколько популярных негативных комментариев о платформе.

  • В среде Arduino IDE работа с микроконтроллером упрощена настолько, что ардуинщику вообще ничего не нужно знать о его архитектуре и о том, как он вообще программируется и настраивается: все сделано в виде готовых и понятных функций.
    • С каких пор удобство и простота стали плохими? Для новичка это единственный способ познакомиться с миром робототехники без изучения кипы документации и получения соответствующего образования. Также напомню, что Ардуино создана в первую очередь для обучения, и во вторую – для быстрого и удобного создания прототипов электронных устройств, это её фишка.
  • Это всё конечно хорошо, но скрытый за ширмой дружелюбного “Ардуино Вайринга” код ужасает: за безобидными на первый взгляд функциями кроются полотна кода, который что-то проверят, перепроверяет, перенастраивает уже настроенное и делает многие другие на первый взгляд ненужные вещи. Это безобразие работает очень медленно и занимает кучу места!
    • Да, стандартные функции имеют кучу защит от дурака новичка, они тяжёлые и медленные. Но новичку не понадобится писать такой код, где скорость и память будут критичны! А если понадобится, то к этому времени он уже будет в состоянии писать код оптимально и найдёт на моём сайте или в другом месте в Интернете быстрые аналоги Ардуино-функций или напишет их сам. А ещё мы переписали стандартное ядро Ардуино и сделали его быстрым и резким. И ещё один момент: ядро Ардуино устроено так, что обеспечивает совместимость кода и библиотек для всех Ардуино-плат. Начали делать проект на Arduino NANO и памяти/ног стало не хватать? Переносим проект на Arduino MEGA и продолжаем работать. NANO оказалась слишком велика для проекта? Переносим на ATTiny85, даже не открывая документацию: большинство библиотек работают на всех Ардуино-совместимых платах, это очень жирный плюс, хоть и в ущерб производительности и памяти.
  • Стандартные функции из Arduino.h описывают незначительную часть всех возможностей и настроек, которые есть в микроконтроллере.
    • А никто и не обещал вам HAL! Возможности МК раскрываются при использовании библиотек (см. список библиотек), благо сообщество у платформы действительно огромное. Также всегда можно научиться работать с даташитом и регистрами и настраивать всё что угодно и как угодно вручную.
  • Arduino IDE “скрывает” от пользователя важные низкоуровневые настройки.
    • И правильно делает! Одна ошибка – и можно остаться с заблокированным камнем. При желании через Arduino IDE можно и фьюзы прошить, и под другие частоты настроить, об этом мы говорим вот в этом уроке.
  • Ардуино для детей! Серьёзные дяди работают с “голым камнем”.
    • Всё верно, для детей и домохозяек. Плата Ардуино задумана для создания макетов, прототипирования, её можно рассматривать как часть электронного “конструктора” для обучения. На плате есть вся необходимая обвязка, почему не использовать её даже как сердце проекта?
  • Arduino IDE для детей! Серьёзные дяди работают во взрослых средах разработки.
    • Верно, но есть небольшой нюанс: Arduino IDE официально бесплатная, после простой установки (Далее, Далее, Далее, Готово) она сразу готова к работе: достаточно выбрать плату из списка и начать писать код. Взрослые среды разработки требуют взрослого подхода и порог вхождения для работы с ними несоизмеримо высок. Помимо непростой установки и настройки вас ждут расширенные настройки самого микроконтроллера в ручном режиме, чтение документации и даташитов, “взрослый” интерфейс и множество нюансов в самом программировании и настройках компилятора. Времени на изучение этого всего уйдёт немеренно.
  • Ардуинщики ходят по замкнутому кругу, они никогда не разовьются дальше мигания светодиодом.
    • Почему? Платформа ничем не ограничивает разработчика…
  • На Ардуино нельзя создать что-то реально сложное и интересное.
    • Почему же? Arduino IDE ничем не ограничивает разработчика, можно вообще отказаться от Arduino.h и начать кодить с чистого листа при помощи регистров и ассемблерных вставок, т.е. абсолютно так же, как во взрослой среде разработки. “Мощи” не хватит? Почему то её достаточно для создания 3D принтеров и прочих многоосевых ЧПУ станков, прошивка которых состоит из десятков тысяч строк кода.
  • А STM32 лучше! И в разы мощнее! И возможностей у неё больше! И она дешевле!!!
    • Да, да, да. Но не забывайте про порог вхождения и размер сообщества с контентом, библиотеками и примерами “для новичков”, а также о сложности работы с STM в целом. Посмотрите видосы вот на этом канале и сравните происходящее с работой с Arduino. Что касается возможностей и скорости работы – для большинства любительских проектов Arduino (ATmega328/2560) будет более чем достаточно, особенно если уметь писать оптимальный код.
  • Качество кода “из Интернета” просто ужасное.
    • Да, из-за простых, но понятных стандартных примеров аудитория ардуинщиков выросла очень быстро и буквально завалила интернет своими проектами, завлекая тем самым в это хобби других новичков. 99% учебных примеров, примеров работы с библиотеками и модулями написаны простенько и ужасно не оптимально: int переменные для всего подряд, вездесущий delay, блокирующие циклы и прочее, помимо богомерзких ардуино-функций. Люди берут эти примеры как основу и так и продолжают дальше писать. Но эти люди стоят на пороге очень большой двери под названием робототехника. Перешагнув через этот порог, отбросив все кривые примеры и научившись грамотно выстраивать структуру своего кода, они попадают в мир безграничных возможностей для творчества и исследования, мир бесконечно интересных и разнообразных проектов на Arduino. Для этого я и пишу данные уроки.

Что ещё хочется сказать по поводу негатива от “профессионалов” – в большинстве случаев они просто завидуют: в “их время” для создания даже простенького проекта на базе микроконтроллера нужно было потратить огромное количество времени на изучение документации на английском языке на конкретную модель МК, на все остальные железки и микросхемы в проекте, научиться работать в недружелюбной среде разработки, развести и спаять плату, купить дорогой программатор и прочее прочее. А в наше время можно купить плату за 150р, воткнуть её в USB, запустить программу уровня “блокнот с кнопкой Загрузить” и начать кодить с использованием огромного количества готовых библиотек и примеров для практически любых железок на рынке, а на любой вопрос найти ответ в гугле. Реально, у ребят просто пригорает =)

Видео версия


Важные страницы


Языки программирования [Амперка / Вики]

Итак, у вас есть процессор. Вы наверняка понимаете, что процессор можно как-то запрограммировать, чтобы он делал то, что вы хотите. Для того, чтобы была выполнена полезная работа необходимо (а) написать полезную программу и (б) отдать её процессору для исполнения.

В целом, не важно какой именно у вас процессор: последний Intel Pentium в вашем ноутбуке или микроконтроллер на плате Arduino. Принципы написания программы, т.е. программирования, в обоих случаях одни и те же. Различается лишь быстродействие и объём возможностей по работе с другими устройствами.

Что такое программа и куда её писать

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

Байт инструкции Что он означает для процессора
00001001 означает: взять следующий байт и запомнить его в ячейке №1
00000110 …это как раз следующий байт, который мы запоминаем в ячейке №1: число 5
00011001 означает: отнять от значения в ячейке №1 единицу и оставить там обновлённый результат
00101001 означает: сравнить значение в ячейке №1 с нулём и если оно ноль — перепрыгнуть через столько байт, сколько указано в следующем байте
00000100 …если результат был ноль, мы хотим прыгнуть через 4 байта, к предпоследней инструкции
10000011 означает, что мы хотим вывести на экран символ, код которого записан в следующем байте
01000001 …букве «A» как раз соответствует этот код
00101000 означает, что мы хотим прыгнуть назад на столько байт, сколько указано в следующем байте
00000110 …прыгать будем на 6 байт назад, к инструкции №3
10000011 означает, что мы хотим вывести на экран символ, код которого записан в следующем байте
00100001 …знаку «!» как раз соответствует этот код

В результате исполнения такой последовательности инструкций на экран будет выведена паническая фраза «АААА!».

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

Зачем нужны языки программирования

Для упрощения задачи в миллион раз были придуманы языки программирования. Их очень много и даже из тех, что постоянно на слуху можно быстро вспомнить десяток-другой: Assembler, C, C++, C#, Java, Python, Ruby, PHP, Scala, JavaScript.

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

Проблема в том, что такие языки не понятны процессору и перед тем как отдать ему эту программу, её нужно скомпилировать: перевести с естественного языка в те самые инструкции в виде нулей и единиц. Этим занимаются программы, которые называются компиляторами. У каждого языка, если только он не остался на уровне фантазий, есть свой компилятор. Для популярных языков их обычно несколько на выбор, от разных производителей и для разных платформ. Большинство из них свободно доступно в интернете.

Итак, есть программы на вполне понятном человеку языке: их ещё называют «исходным кодом», просто «кодом» или «исходниками». Они пишутся в простые текстовые файлы с помощью любого текстового редактора, хоть с помощью notepad. Затем они превращаются в понятные процессору наборы нулей и единиц с помощью компилятора: компилятор получает на вход исходный код, а на выходе создаёт бинарный исполняемый файл, тот самый, понятный процессору.

Бинарные файлы не пригодны для чтения и предназначены, в общем, лишь для исполнения процессором. Они могут иметь разный тип в зависимости от того для чего получены: .exe — это программы для Windows, .hex — программы для исполнения микроконтроллером типа Arduino и т.п.

Почему же существует столько языков программирования и в чём разница?

  • Почему? Потому что на Земле много людей и компаний, и многие считали, что могут сделать лучше всех: удобнее, понятнее, быстрее, стройнее.

  • В чём разница: разные языки — это разный баланс скорости написания, понятности при чтении и скорости исполнения.

Посмотрим на одну и ту же программу, которая выводит на экран песенку про 99 бутылок пива на разных языках программирования.

Например, язык Perl. Пишется быстро; понять, что имел в виду программист невозможно; исполняется медленно:

sub b{$n=99-@_-$_||No;"$n bottle"."s"x!!--$n." of beer"};$w=" on the wall";
die map{b."$w,\n".b.",\nTake one down, pass it around,\n".b(0)."$w.\n\n"}0..98

Язык Java. Пишется относительно долго; читается просто; исполняется довольно быстро, но занимает много памяти:

class bottles
{
    public static void main(String args[])
    {
        String s = "s";
        for (int beers=99; beers>-1;)
        {
            System.out.print(beers + " bottle" + s + " of beer on the wall, ");
            System.out.println(beers + " bottle" + s + " of beer, ");
            if (beers==0)
            {
                System.out.print("Go to the store, buy some more, ");
                System.out.println("99 bottles of beer on the wall.\n");
                System.exit(0);
            }
            else
                System.out.print("Take one down, pass it around, ");
            s = (--beers == 1) ? "" : "s";
            System.out.println(beers + " bottle" + s + " of beer on the wall.\n");
        }
    }
}

Язык Assembler. Пишется долго; читается сложно; исполняется очень быстро:

code segment
assume cs:code,ds:code
org 100h
start:
 
 
; Main loop
 
mov cx, 99                    ; bottles to start with
 
loopstart:
 
call printcx                  ; print the number
mov dx,offset line1           ; print the rest of the first line
mov ah,9                      ; MS-DOS print string routine
int 21h
 
call printcx                  ; print the number
mov dx,offset line2_3         ; rest of the 2nd and 3rd lines
mov ah,9
int 21h
 
dec cx                        ; take one down
call printcx                  ; print the number
mov dx,offset line4           ; print the rest of the fourth line
mov ah,9
int 21h
 
cmp cx, 0                     ; Out of beer?
jne loopstart                 ; if not, continue
 
int 20h                       ; quit to MS-DOS
 
 
; subroutine to print CX register in decimal
 
printcx:
 
mov di, offset numbufferend   ; fill the buffer in from the end
mov ax, cx                    ; put the number in AX so we can divide it
 
printcxloop:
mov dx, 0                     ; high-order word of numerator - always 0
mov bx, 10
div bx                        ; divide DX:AX by 10. AX=quotient, DX=remainder
add dl,'0'                    ; convert remainder to an ASCII character
mov [ds:di],dl                ; put it in the print buffer
cmp ax,0                      ; Any more digits to compute?
je printcxend                 ; if not, end
dec di                        ; put the next digit before the current one
jmp printcxloop               ; loop
 
printcxend:
mov dx,di                     ; print, starting at the last digit computed
mov ah,9
int 21h
ret
 
 
; Data
 
line1 db ' bottles of beer on the wall,',13,10,'$'
line2_3 db ' bottles of beer,',13,10,'Take one down, pass it around,',13,10,'$'
line4 db ' bottles of beer on the wall.',13,10,13,10,'$'
numbuffer db 0,0,0,0,0
numbufferend db 0,'$'
 
code ends
end start

На чём программируется Arduino

Если говорить об Arduino или о микроконтроллерах от компании Atmel, на каком языке можно писать программы для них? Теоретический ответ: на любом. Но на практике, выбор ограничивается языками Assembler, C и C++. Это связанно с тем, что в сравнении с настольным компьютером у них очень ограниченные ресурсы. Килобайты памяти, а не гигабайты. Мегагерцы на процессоре, а не гигагерцы. Это плата за дешевизну и энергоэффективность.

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

Assembler, как вы видели, нельзя назвать самым простым и элегантным и, как результат, флагманским языком для Arduino является C/C++.

Во многих источниках говорится, что Arduino программируется на языке Arduino, Processing, Wiring. Это не совсем корректное утверждение. Arduino программируется на C/C++, а то, что называется этими словами — это просто удобный «обвес», который позволяет решать многие типичные задачи, не изобретая велосипед каждый раз.

Почему C и C++ упоминаются в одном предложении? C++ — это надстройка над C. Всякая программа на C является корректной программой для C++, но не наоборот. Вы можете пользоваться и тем и другим. Чаще всего вы даже не будете задумываться о том, что используете, решая текущую задачу.

Ближе к делу: первая программа

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

Пойдём по порядку. Напишем исходный код. Можно написать его в блокноте или любом другом редакторе. Однако для того, чтобы работа была удобной, существуют так называемые среды разработки (IDE: Integrated Development Environment). Они в виде единого инструмента предоставляют и текстовый редактор с подсветкой и подсказками, и компилятор, запускаемый по кнопке, и много других радостей. Для Arduino такая среда называется Arduino IDE. Она свободно доступна для скачивания на официальном сайте.

Установите среду и запустите её. В появившемся окне вы увидите: большая часть места отдана текстовому редактору. В него и пишется код. Код в мире Arduino ещё называют скетчем.

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

void setup()
{
}
 
void loop()
{
}

Не будем пока заострять внимание на значении написанного кода. Скомпилируем его. Для этого в Arduino IDE, на панели инструментов есть кнопка «Verify». Нажмите её и через несколько секунд бинарный файл будет готов. Об этом возвестит надпись «Done compiling» под текстовым редактором.

В результате, у нас получился бинарный файл с расширением .hex, который может исполнять микроконтроллер.

Теперь необходимо подсунуть его Arduino. Этот процесс называется загрузкой, прошивкой или заливкой. Для выполнения загрузки в Arduino IDE, на панели инструментов есть кнопка «Upload». Соедините Arduino с компьютером через USB-кабель, нажмите «Upload» и через несколько мгновений программа будет загружена в Arduino. При этом программа, которая была там ранее будет стёрта.

Об успешной прошивке возвестит надпись «Done Uploading».

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

  1. В меню Tools → Board выбран тот порт, к которому действительно подключена Arduino. Можете повставлять и повынимать USB-кабель, чтобы понять какой порт появляется и исчезает: это и есть Arduino.

  2. Вы установили необходимые драйверы для Arduino. Это необходимо для Windows, не требуется под Linux и необходимо только для старых плат до Arduino Duemilanove на MacOS.

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

Arduino — Окружающая среда

Программное обеспечение Arduino (IDE)

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

Написание эскизов

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

NB: Версии программного обеспечения Arduino (IDE) до 1.0 сохраняли эскизы с расширением .pde. Эти файлы можно открыть с версией 1.0, вам будет предложено сохранить эскиз с расширением .ino при сохранении.

Проверить
Проверяет код на наличие ошибок при его компиляции.

Загрузить
Компилирует ваш код и загружает его на настроенную плату.Подробнее см. Загрузку ниже.

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

Новый
Создает новый эскиз.

Открыть
Представляет меню всех эскизов в вашем альбоме. Щелчок по одному из них откроет его в текущем окне, перезаписав его содержимое.

Примечание: из-за ошибки в Java это меню не прокручивается; если вам нужно открыть эскиз в конце списка, используйте файл | Вместо этого меню Sketchbook .

Сохранить
Сохраняет ваш эскиз.

Serial Monitor
Открывает серийный монитор.

Дополнительные команды находятся в пяти меню: File , Edit , Sketch , Tools , Help .Меню являются контекстно-зависимыми, что означает, что доступны только те элементы, которые имеют отношение к выполняемой в данный момент работе.

Файл
  • Новый
    Создает новый экземпляр редактора с уже имеющейся минимальной структурой эскиза.
  • Открыть
    Позволяет загрузить файл скетча, просматривая диски и папки компьютера.
  • Открыть недавние
    Предоставляет краткий список последних эскизов, готовых к открытию.
  • Sketchbook
    Показывает текущие эскизы в структуре папок альбомов; щелчок по любому имени открывает соответствующий эскиз в новом экземпляре редактора.
  • Примеры
    Любой пример, предоставленный программным обеспечением Arduino (IDE) или библиотекой, отображается в этом пункте меню. Все примеры структурированы в виде дерева, что обеспечивает легкий доступ по темам или библиотекам.
  • Закрыть
    Закрывает экземпляр программного обеспечения Arduino, из которого он был выбран.
  • Сохранить
    Сохраняет эскиз под текущим именем. Если файлу не было присвоено имя ранее, имя будет указано в окне «Сохранить как …».
  • Сохранить как …
    Позволяет сохранить текущий эскиз под другим именем.
  • Параметры страницы
    Показывает окно параметров страницы для печати.
  • Печать
    Отправляет текущий эскиз на принтер в соответствии с настройками, определенными в параметрах страницы.
  • Настройки
    Открывает окно настроек, в котором можно настроить некоторые параметры среды IDE, например язык интерфейса IDE.
  • Выйти
    Закрывает все окна IDE. Те же эскизы, которые открываются при выборе «Выйти», будут автоматически открыты при следующем запуске IDE.
Редактировать
  • Отменить / Вернуть
    Возврат к одному или нескольким шагам, которые вы сделали во время редактирования; когда вы вернетесь, вы можете перейти вперед с Redo.
  • Вырезать
    Удаляет выделенный текст из редактора и помещает его в буфер обмена.
  • Копировать
    Дублирует выделенный текст в редакторе и помещает его в буфер обмена.
  • Копировать для форума
    Копирует код вашего скетча в буфер обмена в форме, удобной для публикации на форуме, с раскраской синтаксиса.
  • Копировать как HTML
    Копирует код вашего эскиза в буфер обмена как HTML, подходящий для встраивания в веб-страницы.
  • Вставить
    Помещает содержимое буфера обмена в позицию курсора в редакторе.
  • Выбрать все
    Выбирает и выделяет все содержимое редактора.
.

analogRead () — Ссылка на Arduino

Описание

Считывает значение с указанного аналогового вывода. Платы Arduino содержат многоканальный 10-битный аналого-цифровой преобразователь. Это означает, что он будет отображать входные напряжения между 0 и рабочим напряжением (5 В или 3,3 В) в целочисленные значения от 0 до 1023. На Arduino UNO, например, это дает разрешение между показаниями: 5 вольт / 1024 единиц или 0,0049 В (4,9 мВ) на единицу. В таблице ниже указаны используемые контакты, рабочее напряжение и максимальное разрешение для некоторых плат Arduino.

На платах на базе ATmega (UNO, Nano, Mini, Mega) считывание аналогового входа занимает около 100 микросекунд (0,0001 с), поэтому максимальная скорость чтения составляет около 10 000 раз в секунду.

Доска Рабочее напряжение Используемые штифты Максимальное разрешение

Уно

5 Вольт

A0 — A5

10 бит

Мини, Нано

5 Вольт

A0 — A7

10 бит

Mega, Mega2560, MegaADK

5 Вольт

A0 — A14

10 бит

Микро

5 Вольт

A0 — A11 *

10 бит

Леонардо

5 Вольт

A0 — A11 *

10 бит

Ноль

3.3 Вольта

A0 — A5

12 бит **

Срок погашения

3,3 В

A0 — A11

12 бит **

Платы семейства MKR

3,3 В

A0 — A6

12 бит **

* A0 — A5 обозначены на плате, A6 — A11 доступны соответственно на контактах 4, 6, 8, 9, 10 и 12
** Разрешение по умолчанию analogRead () для этих плат составляет 10 бит, для совместимость.Вам нужно использовать analogReadResolution (), чтобы изменить его на 12 бит.

Синтаксис

Параметры

вывод : имя вывода аналогового входа для чтения (от A0 до A5 на большинстве плат, от A0 до A6 на платах MKR, от A0 до A7 на Mini и Nano, от A0 до A15 на Mega).

Возвращает

Аналоговое показание на выводе. Хотя это ограничено разрешением аналого-цифрового преобразователя (0-1023 для 10 бит или 0-4095 для 12 бит). Тип данных: int .

,Последовательный порт

— ссылка на Arduino

Описание

Используется для связи между платой Arduino и компьютером или другими устройствами. Все платы Arduino имеют как минимум один последовательный порт (также известный как UART или USART), а некоторые — несколько.

Доска Имя USB CDC Последовательные контакты Контакты Serial1 Последовательный 2 контакта Serial 3 контакта

Uno, Nano, Mini

0 (RX), 1 (TX)

Мега

0 (RX), 1 (TX)

19 (прием), 18 (передача)

17 (прием), 16 (передача)

15 (прием), 14 (передача)

Леонардо, Микро, Юнь

Серийный

0 (RX), 1 (TX)

Uno WiFi Rev.2

Подключено к USB

0 (RX), 1 (TX)

Подключено к NINA

Платы MKR

Серийный

13 (прием), 14 (передача)

Ноль

SerialUSB (только собственный порт USB)

Подключено к порту программирования

0 (RX), 1 (TX)

Срок погашения

SerialUSB (только собственный порт USB)

0 (RX), 1 (TX)

19 (прием), 18 (передача)

17 (прием), 16 (передача)

15 (прием), 14 (передача)

101

Серийный

0 (RX), 1 (TX)

На Uno, Nano, Mini и Mega контакты 0 и 1 используются для связи с компьютером.Подключение чего-либо к этим контактам может помешать этой связи, в том числе вызвать сбои при загрузке на плату.

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

Последовательная связь на контактах TX / RX использует логические уровни TTL (5 В или 3,3 В в зависимости от платы). Не подключайте эти контакты напрямую к последовательному порту RS232; они работают при напряжении +/- 12 В и могут повредить вашу плату Arduino.

Чтобы использовать эти дополнительные последовательные порты для связи с вашим персональным компьютером, вам понадобится дополнительный адаптер USB-to-serial, поскольку они не подключены к адаптеру Mega USB-to-serial. Чтобы использовать их для связи с внешним устройством с последовательным интерфейсом TTL, подключите контакт TX к контакту RX вашего устройства, RX — к контакту TX вашего устройства, а землю Mega — к земле вашего устройства.

,

Arduino — Библиотеки

Ссылка Язык | Библиотеки | Сравнение | изменения

Библиотеки

Среда Arduino может быть расширена за счет использования библиотек, как и большинство платформ программирования. Библиотеки предоставляют дополнительные функции для использования в эскизах, например работа с оборудованием или манипулирование данными. Чтобы использовать библиотеку в эскизе, выберите ее в Sketch> Import Library .
Ряд библиотек поставляется вместе с IDE, но вы также можете загрузить или создать свои собственные.См. Эти инструкции для получения подробной информации об установке библиотек. Также есть руководство по написанию собственных библиотек. См. Руководство по стилю API для получения информации о создании хорошего API в стиле Arduino для вашей библиотеки.

Стандартные библиотеки

  • EEPROM — чтение и запись в «постоянное» хранилище
  • Ethernet — для подключения к Интернету с помощью Arduino Ethernet Shield, Arduino Ethernet Shield 2 и Arduino Leonardo ETH
  • Firmata — для связи с приложениями на компьютере по стандартному последовательному протоколу.
  • GSM — для подключения к сети GSM / GRPS с экраном GSM.
  • LiquidCrystal — для управления жидкокристаллическими дисплеями (LCD)
  • SD — для чтения и записи SD-карт
  • Servo — для управления серводвигателями
  • SPI — для связи с устройствами с помощью шины последовательного периферийного интерфейса (SPI)
  • SoftwareSerial — для последовательной связи на любых цифровых выводах. Версия 1.0 и более поздние версии Arduino включают библиотеку NewSoftSerial Микала Харта как SoftwareSerial.
  • Stepper — для управления шаговыми двигателями
  • TFT — для рисования текста, изображений и фигур на экране Arduino TFT
  • WiFi — для подключения к Интернету с помощью платы Arduino WiFi Shield
  • Wire — двухпроводный интерфейс (TWI / I2C) для отправки и получения данных через сеть устройств или датчиков.

Библиотеки Matrix и Sprite больше не являются частью основного дистрибутива.

101 Только библиотеки

  • CurieBLE — Взаимодействие со смартфонами и планшетами с Bluetooth Low Energy (BLE).
  • CurieIMU — Управление бортовым акселерометром и гироскопом.
  • CurieTimerOne — Позволяет использовать функции таймера.
  • CurieTime — Позволяет управлять и использовать внутренние RTC (часы реального времени)

Библиотеки только для оплаты

  • Аудио — Воспроизведение аудиофайлов с SD-карты.

Библиотеки Due, Zero и MKR1000

  • USBHost — Обменивайтесь данными с периферийными устройствами USB, такими как мыши и клавиатуры.
  • Планировщик — Управление несколькими неблокирующими задачами.

Нулевые и все библиотеки плат MKR на базе SAMD21

  • AudioFrequencyMeter — выборка аудиосигнала и получение его частоты.
  • AudioZero — Воспроизведение аудиофайлов с SD-карты
  • RTC — Часы реального времени для планирования событий
  • ArduinoSound — простой способ воспроизведения и анализа аудиоданных
  • I2S — Для использования протокола I2S на SAMD21

WiFi 101 и библиотека MKR1000

  • WiFi101 — библиотека для использования только с Wifi Shield 101
  • WiFi101OTA — Беспроводные обновления на MKR1000

MKR WiFi 1010, MKR VIDOR 4000, Arduino NANO 33 IoT и Arduino UNO WiFi Rev.2

  • WiFi NINA — библиотека для использования модуля WiFi Nina вышеперечисленных плат.

Arduino Nano 33 BLE, Nano 33 BLE Sense, NANO 33 IoT, Uno WiFi Rev 2, MKR WiFi 1010.

  • ArduinoBLE — библиотека для использования функций BLE вышеперечисленных плат.

Arduino Nano 33 IoT и UNO WiFi Rev.2

  • ArduinoLSM6DS3 — библиотека для использования 6-осевого IMU LSM6DS3, доступная в Arduino Nano 33 IoT и Arduino UNO WiFi Rev.2.

Arduino Nano 33 BLE и BLE Sense

  • ArduinoLSM9DS1 — библиотека для использования 9-осевого IMU LSM9DS1, доступная на Arduino Nano 33 BLE и Arduino Nano 33 BLE Sense.

Arduino Nano 33 BLE Sense

  • PDM — библиотека для использования цифрового микрофона MP34DT05, наша библиотека PDM может использоваться также с нашей библиотекой ArduinoSound.
  • ArduinoAPDS9960 — библиотека для использования датчика жестов APDS9960; он чувствует жест, цвет, окружающее освещение и близость.
  • ArduinoLPS22HB — библиотека для использования барометра и датчика температуры LPS22; это сверхкомпактный датчик, который работает как барометр с цифровым выходом.
.

Добавить комментарий

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