Как программируют Arduino
Arduino — это программируемый микроконтроллер, который можно использовать в робототехнике, умном доме и вообще запрограммировать его как угодно: чтобы он кормил кота, поливал растения, предупреждал вас о приближении врагов или открывал двери с помощью магнитного ключа. У нас есть подборка 10 интересных вещей, которые можно сделать на этой платформе. Теперь время разобраться, как программисты с ней работают.
Язык Arduino
Если опытный программист посмотрит на код для Arduino, он скажет, что это код на C++. Это недалеко от истины: основная логика Ардуино реализована на C++, а сверху на неё надет фреймворк Wiring, который отвечает за общение с железом.
На это есть несколько причин:
- У С++ слава «слишком сложного языка». Arduino позиционируется как микроконтроллеры и робототехника для начинающих, а начинающим иногда трудно объяснить, что С++ не такой уж сложный для старта. Проще сделать фреймворк и назвать его отдельным языком.
- В чистом С++ нет удобных команд для AVR-контроллеров, поэтому нужен был инструмент, который возьмёт на себя все сложные функции, а на выходе даст программисту часто используемые команды.
- Разработчики дали программистам просто писать нужные им программы, а все служебные команды, необходимые для правильного оформления кода на С++, взяла на себя специальная среда разработки.
Среда разработки (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() — это номер пина, т.е. 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 и всё волшебство будет происходить именно здесь. Не торопитесь и потратьте некоторое время, чтобы осмотреться и освоиться в этой программе. Нам предстоит много программировать в неё.
В программе есть основные инструменты:
- Меню (англ. — Menu Bar). Предоставляет вам доступ к инструментам, необходимым для создания и сохранения эскизов Arduino.
- Кнопка подтверждения (англ. — Verify Button). Компилирует ваш код и проверяет ошибки в написании или синтаксисе.
- Кнопка загрузки (англ. — Upload Button). Отправляет код на подключенную плату, такую как Arduino Uno. Светодиоды на плате будут быстро мигать при загрузке.
- Новый скетч (англ. — New Sketch). Открывает новое окно, содержащее пустой скетч (эскиз).
- Имя скетча (англ. — Sketch Name). Когда скетч сохранен, здесь отображается его имя.
- Открыть скетч (англ. — Open Existing Sketch). Позволяет открыть сохраненный эскиз или один из сохраненных примеров.
- Сохранение скетча (англ. — Save Sketch). Сохранить скетч, который у вас есть в данный момент.
- Последовательный монитор (англ. — Serial Monitor). Когда плата подключена, здесь отобразится последовательная информация вашего Arduino.
- Область написания кода (англ. — Code Area). В этой области вы пишете код, который будет «говорить» плате что делать.
- Область сообщений (англ. — Message Area). В этой области можно наблюдать различные сообщения, которые транслируют вам статус сохранения, компиляции кода, информацию об ошибках и многое другое.
- Текстовая консоль (англ. — Text Console). Показывает детали сообщений об ошибках, размер программы, которая была скомпилирована и дополнительную информацию.
- Плата и последовательный порт (англ. — 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: перемещает вал серводвигателя вперед и назад