Site Loader

Содержание

Как программируют 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.

Урок 8. Как управлять цифровым выходом Arduino

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

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

Обычный способ подключить светодиод к Arduino можно посмотреть ниже на схеме. Т.к. по предыдущим урокам мы уже знаем что такое макетная плата (урок 4) и разобрались уже с выводами платы Ардуино Uno (урок 2), то подключить светодиод к цифровому выводу нам не составит никакого труда. Например так:

Светодиоды имеют полярность, что означает, что они должны быть подключены определенным образом:

  • Катод светодиода подключается к заземляющему выводу Arduino (GND)
  • Анод светодиода подключается к цифровому выводу Arduino (вывод 13 в этом примере)

Также вы можете заметить резистор на схеме выше. Резистор в цепи выше является резистором ограничения тока. Он ограничивает электрический ток, протекающий через светодиод, что предотвращает его перегорание.

Важно! Если вы пока еще слабо ориентируетесь в электричестве, резисторах и подобных темах — не отчаивайтесь, скоро мы запустим курс «Электроника для начинающих», где разберем все основы.

Токоограничивающие резисторы могут быть любого значения от 100 Ом до 47 кОм. Сопротивление будет определять, насколько ярко будет гореть светодиод:

  • Меньшее сопротивление позволяет течь более сильному току, делая его ярче,
  • Большее сопротивление ограничивает ток, делая светодиод тусклее.

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

Функция pinMode()

Но пойдем по порядку. Мы уже знаем из Урока 6 две основные функции void setup() и void loop(). Далее мы будем работать в них.

Для нашего урока нам нужна новая функция о которой мы пока не проходили — pinMode(). Эта функция сообщает Arduino выводить напряжение или измерять напряжение на цифровом выводе. Мы будем использовать эту новую функцию именно в void setup(), т.к. наша новая функция относится к настройкам.

Функция

pinMode() принимает два аргумента. Аргументы — это информация, необходимая функции для выполнения своей задачи. Они помещаются в скобки функции и разделяются запятой.

  • Первый аргумент функции pinMode() — это номер пина, т.е. 13 в нашем примере (см. схему выше).
  • Второй аргумент устанавливает режим ввода или вывода. В примере выше — вывод.

Используйте OUTPUT, если вы хотите вывести напряжение, и используйте INPUT, если вы хотите прочитать напряжение.

Мы собирались использовать режим OUTPUT, так как мы хотим отправить ток на светодиод.

Функция digitalWrite()

Переходим к новой функции, которую нам нужно обязательно изучить — digitalWrite(). Функция под названием digitalWrite() позволит нам контролировать состояние напряжения на выводе:

  • ВЫСОКОЕ или HIGH состояние напряжения — напряжение на выводе составляет 5 вольт,
  • НИЗКОЕ или LOW состояние напряжения — напряжение на выводе составляет 0 вольт.

Функция digitalWrite() будет использоваться в void loop():

В этой функции также есть два аргумента — номер контакта и состояние напряжения (ВЫСОКОЕ или НИЗКОЕ).

Функция delay()

Далее, мы освоим функцию delay(). Она простая и  будет использоваться для контроля того, как долго будет установлен вывод на HIGH:

Функция delay() сообщает Arduino остановиться и ждать. Число в скобках обозначает длину задержки в миллисекундах (1 секунда = 1000 миллисекунд).

В этот момент в программе светодиод горит в течение одной секунды.

Чтобы отключить его, мы можем использовать digitalWrite() с параметром LOW в качестве второго аргумента:

Функция delay() будет сохранять состояние напряжения НИЗКИМ в течение 1000 миллисекунд.

Поскольку две функции digitalWrite() и delay() используются в void loop(), код будет выполняться снова и снова, заставляя светодиод мигать, т.е. включаться и выключаться.

Функция digitalWrite() действительно очень полезна, когда помещается в тело условного оператора.

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

Простыми словами, мы используем условные операторы, когда нужно сделать X, если Y. Например: если A > 5, то Y = 10.

Но вернемся к основной теме урока — код ниже установит цифровой вывод на режим ВЫСОКИЙ, когда показание датчика будет больше 50:

В примере выше если переменная sensorReading больше 50, будет выполнена функция digitalWrite(), и outputPin будет установлен в состояние ВЫСОКОГО напряжения.

Если переменная sensorReading меньше 50, код в операторе if будет проигнорирован, и функция digitalWrite() не будет выполнена.

В следующих уроках мы изучим еще ряд навыков, которые лучше знать на старте изучения Ардуино.

Урок 6. Как программировать Ардуино или анатомия скетча

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

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

Как мы уже изучили в предыдущем уроке — программное обеспечение, используемое для создания эскизов Arduino, называется IDE, что означает интегрированную среду разработки. Программное обеспечение бесплатно и скачать вы его можете по ссылке в Уроке 5.

Каждый скетч, каждая программа Arduino состоит из двух основных частей:

  • void setup() — часть программы где нужно указать то, будет выполняться один раз без повторений.
  • void loop() — содержит инструкции, которые повторяются снова и снова, пока плата не будет выключена.

В переводе с английского языка слово loop означает — цикл. Слово setup переводится как — настройка.

Итак, программы на языке Arduino называются «скетчами» или «эскизами» и эскиз Arduino состоит из двух основных частей:

  • функции настройки (setup),
  • функции цикла (loop).

setup() — функция setup() автоматически выполняется в самом начале программы Arduino. Внутри этой функции вы будете инициализировать переменные, пины (выводы платы) и любые библиотеки, которые вы могли бы использовать в своем эскизе. Функция setup() запускается только один раз во время выполнения скетча Arduino, прямо при включении питания или сбросе.

loop() — функция loop() содержит основную часть вашей программы. Эта функция выполняется после завершения setup(). Arduino будет выполнять команды внутри цикла снова и снова, пока плата не выключится.

Вот такая простая анатомия скетча Ардуино. С этого момента вам очень пригодится Справочник программиста Arduino. Напоминаю, что платы программируются на языке, который очень близок классическому C++.

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

Урок 5. Arduino IDE

К этому уроку курса «Ардуино для начинающих» мы уже узнали, что такое микроконтроллер, изучили платы Arduino и главную плату Arduino Uno. Также мы изучили понятие макетных плат и того, как с ними работать.

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

Как мы уже знаем, для того, чтобы мы могли взаимодействовать с периферийными устройствами нам нужно написать определенную программу и закачать её на плату Ардуино (или любую другую). Для таких действий применяется очень популярный инструмент, который называется Arduino IDE (англ. — Integrated development environment) — интегрированная среда разработки Ардуино. У нас есть отдельный большой материал про Arduino IDE. Самый большой плюс этой IDE — она абсолютно бесплатна.

Скачать программу

На данный момент мы готовы скачать это бесплатное программное обеспечение Arduino IDE, в которой мы будем писать скетчи, которые будут «говорить» плате что делать.

Вы можете скачать нужную версию Arduino IDE по ссылке в таблице ниже. Рекомендуем скачивать последнюю версию. Текущая стабильная версия 1.8.10:

Важно! Русский язык входит в базовый пакет установки Arduino IDE.

Скачать более ранние версии можно по этой ссылке.

Для установки программного обеспечения вам нужно будет кликнуть на ссылку, соответствующую операционной системе вашего компьютера выше. Далее вам нужно будет пройти стандартные шаги как при установке любой программы Windows (и других операционных систем).

Скетч

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

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

После установки

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

В программе есть основные инструменты:

  1. Меню (англ. — Menu Bar). Предоставляет вам доступ к инструментам, необходимым для создания и сохранения эскизов Arduino.
  2. Кнопка подтверждения (англ. — Verify Button). Компилирует ваш код и проверяет ошибки в написании или синтаксисе.
  3. Кнопка загрузки (англ. — Upload Button). Отправляет код на подключенную плату, такую как Arduino Uno. Светодиоды на плате будут быстро мигать при загрузке.
  4. Новый скетч (англ. — New Sketch). Открывает новое окно, содержащее пустой скетч (эскиз).
  5. Имя скетча (англ. — Sketch Name). Когда скетч сохранен, здесь отображается его имя.
  6. Открыть скетч (англ. — Open Existing Sketch). Позволяет открыть сохраненный эскиз или один из сохраненных примеров.
  7. Сохранение скетча (англ. — Save Sketch). Сохранить скетч, который у вас есть в данный момент.
  8. Последовательный монитор (англ. — Serial Monitor). Когда плата подключена, здесь отобразится последовательная информация вашего Arduino.
  9. Область написания кода (англ. — Code Area). В этой области вы пишете код, который будет «говорить» плате что делать.
  10. Область сообщений (англ. — Message Area). В этой области можно наблюдать различные сообщения, которые транслируют вам статус сохранения, компиляции кода, информацию об ошибках и многое другое.
  11. Текстовая консоль (англ. — Text Console). Показывает детали сообщений об ошибках, размер программы, которая была скомпилирована и дополнительную информацию.
  12. Плата и последовательный порт (англ. — Board and Serial Port). Сообщает, какая плата используется и к какому последовательному порту она подключена.

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

Кстати, совсем недавно вышла новая версия Arduino Pro IDE.

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

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

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

Для подключения библиотеки к программе, выберите ее из меню Sketch > Import Library.

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

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

Библиотеки Matrix и Sprite больше не входят в состав стандартного распространяемого ПО.

Специализированные библиотеки Arduino Due

  • Audio — проигрывание аудио-файлов с SD-карты памяти.
  • Scheduler — реализация многозадачности.
  • USBHost — взаимодействие с USB-гаджетами, такими как мышь или клавиатура.

Специализированные библиотеки Esplora

  • Esplora — данная библиотека позволяет легко взаимодействовать с различными датчиками и приводами на плате Arduino Esplora.

Специализированные библиотеки Arduino Robot

  • Robot — библиотека обеспечивает доступ к функциям Arduino Robot.

Библиотеки для работы с USB (для Leonardo, Micro, Due и Esplora)

  • Keyboard — отправка сигналов нажатия клавиш подсоединенному компьютеру.
  • Mouse — управление указателем мыши на подсоединенном компьютере.

Вспомогательные библиотеки

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

Связь (сети и протоколы):

  • Messenger — для обработки текстовых сообщений, поступающих от компьютера.
  • NewSoftSerial — усовершенствованная версия библиотеки SoftwareSerial.
  • OneWire — управление устройствами (от Dallas Semiconductor), работающими по протоколу One Wire.
  • PS2Keyboard — считывание символов с PS2-клавиатуры.
  • Simple Message System — отправка сообщений между компьютером и Ардуино.
  • SSerial2Mobile — отправка текстовых сообщений и электронной почты с мобильного телефона (посредством AT-команд и библиотеки SoftwareSerial).
  • Webduino — реализация расширяемого веб-сервера (для использования с платой расширения Arduino Ethernet).
  • X10 — отправка сигналов через линии электропередач по протоколу X10.
  • XBee — для связи с беспроводными модулями XBees в режиме API.
  • SerialControl — удаленное управление другими Ардиуно по последовательному интерфейсу.

Обработка сигнала с датчиков:

  • Capacitive Sensing — использование двух или более выводов Ардуино в качестве емкостных датчиков.
  • Debounce — для считывания зашумленного сигнала с цифровых выводов (может использоваться, например, для обработки дребезга контактов при нажатии кнопки).

Дисплеи и светодиоды:

    • GFX — базовый класс со стандартными графическими процедурами (от Adafruit Industries).
    • GLCD — графические процедуры для LCD-дисплеев на основе чипсета KS0108 или эквивалентного.
  • LedControl — для управления светодиодными матрицами или семисегментными индикаторами, работающих с драйвером MAX7221 или MAX7219.
  • LedControl — альтернатива библиотеке Matrix для управления несколькими светодиодами с помощью микросхем Maxim.
  • LedDisplay — управление светодиодной бегущей строкой HCMS-29xx.
  • Matrix — базовая библиотека для работы с матрицей светодиодов.
  • PCD8544 — библиотека для работы с LCD-контроллером экранов, подобных Nokia 55100 (от Adafruit Industries).
  • Sprite — базовая библиотека для работы со спрайтами и анимацией на светодиодных матрицах.
  • ST7735 — библиотека для работы с LCD-контроллером TFT-экранов диагонально 1.8″ и разрешением 128×160 (от Adafruit Industries).

Синусоидальные и аудио-сигналы:

  • FFT — частотный анализ аудио- и других аналоговых сигналов.
  • Tone — генерирование прямоугольного сигнала звуковой частоты на любом выводе микроконтроллера в фоновом режиме.

Двигатели и ШИМ:

  • TLC5940 — 16-канальный 12-разрядный ШИМ-контроллер.

Работа с временными интервалами:

  • DateTime — библиотека для отслеживания в программе текущей даты и времени.
  • Metro — выполнение определенных действий через равные промежутки времени.
  • MsTimer2 — использует прерывание от Таймера 2 для выполнения определенного действия каждые N миллисекунд.

Вспомогательные библиотеки:

  • PString — небольшой класс для осуществления вывода в буферы.
  • Streaming — метод упрощения работы с операторами вывода.
Последовательный порт

— ссылка на 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 (RX), 14 (TX)

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

Серийный

0 (RX), 1 (TX)

Uno WiFi Rev.2

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

0 (RX), 1 (TX)

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

Платы MKR

Серийный

13 (прием), 14 (TX)

Ноль

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

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

0 (RX), 1 (TX)

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

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

0 (RX), 1 (TX)

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

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

15 (RX), 14 (TX)

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

.

Arduino — Введение

Что такое Ардуино?

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

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

Arduino родился в Ivrea Interaction Design Institute как простой инструмент для быстрого прототипирования, предназначенный для студентов, не имеющих опыта работы в области электроники и программирования.Как только она достигла более широкого сообщества, плата Arduino начала меняться, чтобы адаптироваться к новым потребностям и задачам, дифференцируя свое предложение от простых 8-битных плат до продуктов для приложений IoT, носимых устройств, 3D-печати и встроенных сред. Все платы Arduino имеют полностью открытый исходный код, что дает пользователям возможность создавать их независимо и, в конечном итоге, адаптировать к своим конкретным потребностям. Программное обеспечение также имеет открытый исходный код, и его объем растет благодаря участию пользователей со всего мира.

Почему Ардуино?

Благодаря простому и доступному пользовательскому интерфейсу Arduino использовалась в тысячах различных проектов и приложений.Программа Arduino проста в использовании для новичков, но достаточно гибка для опытных пользователей. Он работает на Mac, Windows и Linux. Учителя и студенты используют его для создания недорогих научных инструментов, для доказательства принципов химии и физики или для начала работы с программированием и робототехникой. Дизайнеры и архитекторы создают интерактивные прототипы, музыканты и художники используют их для инсталляций и экспериментов с новыми музыкальными инструментами. Создатели, конечно же, используют его для создания многих проектов, представленных, например, на Maker Faire.Arduino — ключевой инструмент для изучения нового. Любой человек — дети, любители, художники, программисты — может начать возиться, просто следуя пошаговым инструкциям набора, или делиться идеями в Интернете с другими членами сообщества Arduino.

Существует множество других микроконтроллеров и микроконтроллерных платформ, доступных для физических вычислений. Parallax Basic Stamp, Netmedia BX-24, Phidgets, Handyboard MIT и многие другие предлагают аналогичные функции. Все эти инструменты берут на себя беспорядочные детали программирования микроконтроллеров и объединяют их в простой в использовании пакет.Arduino также упрощает процесс работы с микроконтроллерами, но дает некоторые преимущества учителям, студентам и заинтересованным любителям по сравнению с другими системами:

  • Недорогой — Платы Arduino относительно недороги по сравнению с другими платформами микроконтроллеров. Наименее дорогая версия модуля Arduino может быть собрана вручную, и даже предварительно собранные модули Arduino стоят менее 50 долларов.
  • Кросс-платформенный — Программное обеспечение Arduino (IDE) работает в операционных системах Windows, Macintosh OSX и Linux.Большинство систем микроконтроллеров ограничены Windows.
  • Простая и понятная среда программирования — Программа Arduino (IDE) проста в использовании для новичков, но при этом достаточно гибка, чтобы продвинутые пользователи могли ею воспользоваться. Для учителей он удобно основан на среде программирования Processing, поэтому студенты, обучающиеся программированию в этой среде, будут знакомы с тем, как работает Arduino IDE.
  • Программное обеспечение с открытым исходным кодом и расширяемое программное обеспечение — Программное обеспечение Arduino публикуется как инструменты с открытым исходным кодом, доступные для расширения опытными программистами.Язык может быть расширен за счет библиотек C ++, и люди, желающие разобраться в технических деталях, могут перейти с Arduino на язык программирования AVR C, на котором он основан. Точно так же вы можете добавить код AVR-C прямо в свои программы Arduino, если хотите.
  • Открытое и расширяемое оборудование. — Планы плат Arduino публикуются под лицензией Creative Commons, поэтому опытные разработчики схем могут создать свою собственную версию модуля, расширяя и улучшая ее.Даже относительно неопытные пользователи могут создать макетную версию модуля, чтобы понять, как он работает, и сэкономить деньги.

Как использовать Arduino?

См. Руководство по началу работы. Если вы ищете вдохновения, вы можете найти множество руководств на Arduino Project Hub.

Текст руководства по началу работы с Arduino находится под лицензией Лицензия Creative Commons Attribution-ShareAlike 3.0. Примеры кода в руководстве опубликованы в открытом доступе.

.

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

.Сервопривод

— Ссылка Arduino

Позволяет платам Arduino / Genuino управлять различными серводвигателями.
Эта библиотека может управлять большим количеством сервоприводов. Он использует таймеры осторожно: библиотека может управлять 12 сервоприводами, используя только 1 таймер. На Arduino Due вы можете контролировать до 60 сервоприводов.

Эта библиотека совместима с avr, megaavr, sam, samd, nrf52, stm32f4, mbed архитектуры так что вы должен иметь возможность использовать его на следующие платы Arduino:

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

Использование

Эта библиотека позволяет плате Arduino управлять серводвигателями RC (хобби). Сервоприводы имеют встроенные шестерни и вал, которым можно точно управлять. Стандартные сервоприводы позволяют расположить вал под разными углами, обычно от 0 до 180 градусов. Сервоприводы непрерывного вращения позволяют настраивать вращение вала на различные скорости.

Библиотека Servo поддерживает до 12 двигателей на большинстве плат Arduino и 48 на Arduino Mega. На платах, отличных от Mega, использование библиотеки отключает функцию analogWrite () (PWM) на контактах 9 и 10, независимо от того, есть ли на этих контактах сервопривод.На Mega можно использовать до 12 сервоприводов, не мешая функциональности ШИМ; использование двигателей от 12 до 23 отключит ШИМ на контактах 11 и 12.

Для использования этой библиотеки:

  #include 
  

Схема

Серводвигатели

имеют три провода: питание, заземление и сигнальный. Провод питания обычно красного цвета и должен быть подключен к выводу 5V на плате Arduino. Заземляющий провод обычно черный или коричневый и должен быть подключен к контакту заземления на плате Arduino.Сигнальный контакт обычно желтого, оранжевого или белого цвета и должен быть подключен к цифровому контакту на плате Arduino. Обратите внимание, что сервоприводы потребляют значительную мощность, поэтому, если вам нужно управлять более чем одним или двумя, вам, вероятно, потребуется запитать их от отдельного источника (то есть не от вывода + 5V на вашем Arduino). Обязательно соедините заземление Arduino и внешнего источника питания вместе.

Примеры

  • Ручка: управление валом серводвигателя поворотом потенциометра
  • Sweep: перемещает вал серводвигателя вперед и назад
.

alexxlab

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

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