Как программировать ардуино?

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

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

Основой конструктора служит плата ввода-вывода (аппаратная часть), а также программная часть. Программное обеспечение конструктора на основе Ардуино представлено интегрированной средой разработки Arduino IDE.

Внешне сама среда выглядит так:

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

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

Нужно ли знать программирование?

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

После того как программа составлена она загружается (прошивается) на плату. Ардуино в этом случае имеет неоспоримое преимущество – для программирования в большинстве случаев используется USB-кабель. Сразу после загрузки программа готова выполнять различные команды.

Начинающим работать с Arduino нужно знать две ключевые функции:

  • setup() – используется один раз при включении платы, применяется для инициализации настроек;
  • loop() – используется постоянно, является завершающим этапом настройки setup.

Пример записи функции setup():

void setup() { Serial.begin(9600); // Открываем serial соединение pinMode(9, INPUT); // Назначаем 9 пин входом pinMode(13, OUTPUT); // Назначаем 13 пин выходом }

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства.

Функция loop() выполняется после функции setup(). Loop переводится как петля, или цикл. Функция будет выполняться снова и снова. Так микроконтроллер ATmega328 (большинстве плат Arduino содержат именно его), будет выполнять функцию loop около 10 000 раз в секунду.

Также вы будете сталкиваться с дополнительными функциями:

  • pinMode – режим ввода и вывода информации;
  • analogRead – позволяет считывать возникающее аналоговое напряжение на выводе;
  • analogWrite – запись аналогового напряжения в выходной вывод;
  • digitalRead – позволяет считывать значение цифрового вывода;
  • digitalWrite – позволяет задавать значение цифрового вывода на низком или высоком уровне;
  • Serial.print – переводит данные о проекте в удобно читаемый текст.

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

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

Как настроить Ардуино?

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

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

  • Как уберечь Arduino и другие платы от кривых рук
  • 10 способов «убить» микроконтроллер Arduino
  • Как безопасно подключать внешние устройства к микроконтроллеру?

Алгоритм классической настройки программы Arduino выглядит так:

  • установка IDE, которую можно загрузить ниже или или с сайта производителя;
  • установка программного обеспечения на используемый ПК;
  • запуск файла Arduino;
  • вписывание в окно кода разработанную программу и перенос ее на плату (используется USB кабель);
  • в разделе IDE необходимо выбрать тип конструктора, который будет использоваться. Сделать это можно в окне «инструменты» — «платы»;
  • проверяете код и жмете «Дальше», после чего начнется загрузка в Arduino.

Первый проект

Вот мы и дошли до нашего первого проекта. Давайте соединим Ардуино, светодиод и кнопку. Этот проект отлично подойдет начинающим.

Схема у нас будет такая:

Светодиод загорится после нажатия на кнопку, а после следующего нажатия погаснет. Сам скетч или программа для Ардуино будет такой:

// пины подключенных устройств int switchPin = 8; int ledPin = 11; // переменные для хранения состояния кнопки и светодиода boolean lastButton = LOW; boolean currentButton = LOW; boolean ledOn = false; void setup() { pinMode(switchPin, INPUT); pinMode(ledPin, OUTPUT); } // функция для подавления дребезга boolean debounse(boolean last) { boolean current = digitalRead(switchPin); if(last != current) { delay(5); current = digitalRead(switchPin); } return current; } void loop() { currentButton = debounse(lastButton); if(lastButton == LOW && currentButton == HIGH) { ledOn = !ledOn; } lastButton = currentButton; digitalWrite(ledPin, ledOn); }

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

После того, как Вы разберетесь с начальными навыками работы с платой можно приступать к реализации более сложных и многогранных задач. Конструктор позволяет создать RC-машинку, управляемый вертолет, создать свой телефон, управляемый катер, создать систему «умный дом» и т.д.

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

26.04.2017 | Публикации |Arduino | Дмитрий Васильев

7Загрузка скетчав память Ардуино

Теперь можно загрузить программу в память платы. Подключите плату к компьютеру, подождите несколько секунд, пока происходит инициализация платы. Нажмите кнопку Загрузить, и Ваш скетч запишется в память платы Arduino. Светодиод должен начать весело подмигивать вам с периодичностью 2 секунды (1 секунду горит, 1 выключен). Ниже приведён код нашей первой программы для Ардуино.

void setup() { // блок инициализации pinMode(13, OUTPUT); // задаём пин 13 в качестве выхода. } void loop() { // цикл, который повторяется бесконечно, пока включена плата: digitalWrite(13, HIGH); // подаём на 13 вывод высокий уровень — зажигаем светодиод delay(1000); // на 1000 мсек = 1 сек. digitalWrite(13, LOW); // подаём на 13 вывод низкий уровень — гасим светодиод delay(1000); // на 1 сек. } // далее цикл повторяется

Почитайте комментарии в тексте программы – их достаточно чтобы разобраться с нашим первым экспериментом. Сначала описываем блок инициализации setup(), в котором задаём начальные значения переменных и функции выводов Arduino. Далее следует бесконечный цикл loop(), который повторяется снова и снова, пока на плату подаётся питание. В этом цикле мы выполняем все необходимые действия. В данном случае – зажигаем и гасим светодиод. Оператор delay() задаёт длительность выполнения (в миллисекундах) предшествующего оператора. Оператор digitalWrite() указывает Ардуино, на какой вывод подать напряжение, и какой именно уровень напряжения.Ваш первый скетч готов!

Полезный совет

В сети есть множество сайтов, посвящённых работе с платами семейства Arduino. Читайте, осваивайте, не бойтесь экспериментировать и познавать новое! Это увлекательное и полезное занятие, которое принесёт вам много удовольствия.

Обратите внимание

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

Arduino

Arduino Software


Arduino IDE с примером простой программы.

Тип

Интегрированная среда разработки

Автор

Разработчик

Arduino Software

Написана на

C++

Операционная система

Кроссплатформенная

Последняя версия

1.8.8 (7 декабря 2018 года)

Лицензия

LGPL или GPL

Сайт

Arduino Software на Викискладе

Arduino — торговая марка аппаратно-программных средств для построения простых систем автоматики и робототехники, ориентированная на непрофессиональных пользователей.

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

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

Конструктив

Частый способ применения Arduino

Под торговой маркой Arduino выпускается несколько плат с микроконтроллером (англ. boards) и платы расширения (так называемые шилды — транслитерация с англ. shields). Большинство плат с микроконтроллером снабжены минимально необходимым набором обвязки для нормальной работы микроконтроллера (стабилизатор питания, кварцевый резонатор, цепочки сброса и т. п.).

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

Классический

Классический конструктив Arduino с платами расширения

Классические Arduino и Arduino-совместимые платы спроектированы для монтажа в стопки через штыревые линейки. Таким образом базовую микропроцессорную плату дополняют необходимой периферией и внешними подключениями.

Существует набор плат стандартной длины («Uno», «Pro», «Leonardo») и платы с расширенным набором штыревых линеек («Mega», «Due»). Платы расширения стандартной длины могут устанавливаться и в расширенные процессорные платы.

Миниатюрные конструктивы

Arduino

Плата «Nano» в макетке

Выпускаются отдельные платы уменьшенных габаритов (например, «Nano», «Micro») в габарите DIP корпусов микросхем. К ним нет шилдов, они предназначены для установки в макетные платы.

Позже выпущена линейка Arduino «MKR» в похожем конструктиве. К ним есть небольшой набор шилдов.

Сторонние проекты

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

  • бескорпусной с соединениями на миниатюрных цанговых штыревых линейках (торговая марка «Microduino Upin27 Series»). Габарит плат 25*28 мм.
  • В стиле конструкторов Лего с электрическими соединениями на подпружиненных контактах и механической фиксацией, совместимой с конструкторами Лего (торговая марка «Microduino mCookie Series»).

Плата Femtoduino

Самый миниатюрный клон был выпущен под торговой маркой Femtoduino. Его размеры всего 15*20 мм, включая разъем micro USB, стабилизатор напряжения и полный комплект ввода-вывода Arduino Uno. Той же компанией выпущен самый «нафаршированный» миниатюрный клон под торговой маркой IMUduino. Это клон Arduino Leonardo с поддержкой USB Host (клавиатура и мышь), Bluetooth 4 Low Energy, шестиосный гироскоп/акселерометр, трехосный магнитометр (компас), барометр. Размер устройства 16*40 мм. К сожалению, проект на данный момент не предлагает совместимых по цоколевке плат расширения.

Промышленные конструктивы

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

Сама компания Arduino не выпускает такую продукцию, однако в своем магазине продает изделия компании Industrial Shields. Также известна продукция компании Archiduino. Решения обеих компаний основаны на процессорах AVR. Компании предлагают набор корпусов на DIN-рейку, в которые разработчик может установить ряд периферийных модулей. Компания Industruino предлагает изделия как с AVR так и с SAMD21.

Микроконтроллер

Микроконтроллеры для Arduino отличаются наличием предварительно прошитого в них загрузчика (англ. bootloader). С помощью этого загрузчика пользователь загружает свою программу в микроконтроллер без использования традиционных отдельных аппаратных программаторов. Загрузчик соединяется с компьютером через интерфейс USB (если он есть на плате) или с помощью отдельного переходника UART-USB. Поддержка загрузчика встроена в Arduino IDE и выполняется в один щелчок мыши.

На случай затирания загрузчика или покупки микроконтроллера без загрузчика разработчики предоставляют возможность прошить загрузчик в микроконтроллер самостоятельно. Для этого в Arduino IDE встроена поддержка нескольких популярных дешевых программаторов, а большинство плат Arduino имеет штыревой разъем для внутрисхемного программирования (ICSP для AVR, JTAG или SWD для ARM).

В Arduino IDE встроена возможность создания своих программно-аппаратных платформ. Этой возможностью пользуются сторонние компании, добавляющие в Arduino IDE свои наборы плат и компиляторов-загрузчиков к ним.

AVR

В классической линейке устройств Arduino в основном применяются микроконтроллеры Atmel AVR. Типичные процессорные платы:

  • ATmega2560 (16 МГц, 256к Flash, 8к RAM, 54 порта, из них до 15 с ШИМ и 16 АЦП). Платы «Mega».
  • ATmega32U4 (16 МГц, 32к Flash, 2,5к RAM, 20 портов, из них до 7 с ШИМ и 12 АЦП). Платы «Leonardo», «Micro», «Yun» и др.
  • ATmega328 (16 МГц, 32к Flash, 2к RAM, 14 портов, из них до 6 с ШИМ и 8 АЦП). Платы «Uno», «Mini», «Nano», «Pro» и др.

В некоторых платах состав доступных портов и частота тактирования могут отличаться.

ARM

Постепенно в линейке плат стали появляться процессоры ARM. Первоначально это был AT91SAM3X8E на плате классического конструктива («Due»). Позже появилась линейка плат Arduino «MKR» в конструктиве DIP, оснащенная контроллером SAMD21 (Cortex-M0, 48 MHz, 256к Flash, 32к RAM).

ESP8266

Сторонние разработчики портировали в Arduino поддержку популярного Wi-Fi микроконтроллера ESP8266. Теперь компилировать и загружать прошивку для ESP8266 со своими скетчами и поддержкой Wi-Fi можно прямо из Arduino IDE, получая одноплатную схему с поддержкой сети Wi-Fi. Подробное русскоязычное описание процесса установки и доступного API , пример работы .

Intel x86

В рамках сотрудничества со сторонними производителями в Arduino IDE была включена поддержка некоторых аппаратных средств Intel x86. Intel Galileo (англ.)русск. (процессор Intel Quark X1000 400 МГц), Intel Edison (англ.)русск. и Arduino 101 — Arduino-совместимые платы на Intel x86 архитектуре. Платы механически и электрически совместимы с периферийными платами Ардуино. Платы функционируют под собственной ОС Linux, поверх которой работает приложение, позволяющее загружать и исполнять скетчи Arduino.

Некоторые модели микроконтроллерных плат

См. также Список Arduino-совместимых плат (англ.)русск..

Некоторые модели микроконтроллерных плат:

Список популярных микроконтроллерных плат проекта Ардуино

  1. Serial Arduino, программируется через последовательное соединение (разъём DB-9), используется ATmega8.
  2. Arduino Extreme, с USB-интерфейсом для программирования, используется ATmega8.
  3. Arduino Nano 3.0, миниатюрная версия (1.85 см х 4.3 см), с питанием от USB и поверхностным монтажом ATmega328.
  4. Arduino Mini, ещё миниатюрнее Arduino (1.8 см х 3.3 см), использующая поверхностный монтаж ATmega328. Не содержит конвертера USB-UART.
  5. LilyPad Arduino, минималистичный дизайн для носимых применений с поверхностным монтажом ATmega168 (в новых версиях ATmega328).
  6. Arduino NG, с USB-интерфейсом для программирования, используется ATmega8.
  7. Arduino NG plus, с USB-интерфейсом для программирования, используется ATmega168.
  8. Arduino BT, с Bluetooth-интерфейсом для программирования, используется ATmega168 (в новых версиях ATmega328).
  9. Arduino Diecimila, использует USB-интерфейс и Atmega168 в DIP28 корпусе.
  10. Arduino Duemilanove («2009»), на основе ATmega168 (в новых версиях ATmega328), с автоматическим выбором питания от USB или внешнего источника.
  11. Arduino Mega («2009»), на основе ATmega1280.
  12. Arduino Mega2560 R3 («2011»), на основе ATmega2560. Используется конвертер USB-UART на базе ATmega16U2.
  13. Arduino Uno R3 (2011), на основе ATmega328. Используется конвертер USB-UART на базе ATmega16U2.
  14. Arduino Ethernet (2011), на основе ATmega328. Конвертера USB-UART нет. Ethernet чип — W5100, также содержит модуль MicroSD.
  15. Arduino Mega ADK for Android (2011), на основе ATmega2560. Содержит USB-хост для соединения с телефонами на базе ОС Android (м/с MAX3421e). Конвертер USB-UART на базе ATmega8U2.

Характеристики популярных микроконтроллерных плат проекта Ардуино (таблица)

Периферия

Порты ввода-вывода микроконтроллеров оформлены в виде штыревых линеек. Никакого буферизирования, защиты, конвертации уровней, как правило, нет. Микроконтроллеры питаются от 5В или 3,3В, в зависимости от модели платы. Соответственно порты имеют такой же размах допустимых входных и выходных напряжений. Программисту доступны некоторые специальные возможности портов ввода-вывода микроконтроллеров, например широтно-импульсная модуляция (ШИМ), аналогово-цифровой преобразователь (АЦП), интерфейсы UART, SPI, I2C. Количество и возможности портов ввода-вывода определяются конкретным вариантом микропроцессорной платы.

Помимо портов на платах микроконтроллеров иногда устанавливается периферия в виде интерфейсов USB или Ethernet. Опциональный набор внешней периферии на модулях расширения включает в себя:

  • USB Device (чаще всего как виртуальный COM порт через FTDI FT232, имеются также версии с эмуляцией USB HID Class клавиатур и мышек).
  • Проводной и беспроводной Ethernet как на основной плате так и на платах расширения.
  • Модуль GSM и другие беспроводные интерфейсы.
  • USB Host.
  • SD card.
  • Модуль управления низковольтным мотором на базе L298. Поддерживаются шаговый и коллекторный двигатели с напряжением до 12В и током до 2А на канал. Могут подключаться также реле, электромагниты и т. п. Модуль не имеет гальванической развязки.
  • Графический ЖКИ индикатор.
  • Модуль с макетным полем.

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

Концепция программирования

Программирование ведется целиком через собственную программную оболочку (IDE), бесплатно доступную на сайте Arduino (распространяется по условиям GPLv2). В этой оболочке имеется текстовый редактор, менеджер проектов, препроцессор, компилятор и инструменты для загрузки программы в микроконтроллер. Оболочка написана на Java на основе проекта Processing, работает под Windows, Mac OS X и Linux.

Используется комплект библиотек Arduino (по лицензии LGPL)

Язык программирования

Язык программирования Arduino является стандартным C++ (используются компиляторы семейства GNU Compiler Collection) с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.

  • Программы, написанные программистом Arduino, называются наброски (или иногда скетчи — транслитерация от англ. sketch) и сохраняются в файлах с расширением *.ino. Эти файлы перед компиляцией обрабатываются препроцессором Ардуино. Также существует возможность создавать и подключать к проекту стандартные файлы C++.
  • Обязательную в C++ функцию main() препроцессор Arduino создает сам, вставляя туда необходимые «черновые» действия.
  • Программист должен написать две обязательные для Arduino функции setup() и loop(). Первая вызывается однократно при старте, вторая выполняется в бесконечном цикле.
  • В текст своей программы (скетча) программист не обязан вставлять заголовочные файлы используемых стандартных библиотек. Эти заголовочные файлы добавит препроцессор Arduino в соответствии с конфигурацией проекта. Однако пользовательские библиотеки нужно указывать.
  • Менеджер проекта Arduino IDE имеет нестандартный механизм добавления библиотек. Библиотеки в виде исходных текстов на стандартном C++ добавляются в специальную папку в рабочем каталоге IDE. При этом название библиотеки добавляется в список библиотек в меню IDE. Программист отмечает нужные библиотеки, и они вносятся в список компиляции.
  • Arduino IDE не предлагает никаких настроек компилятора и минимизирует другие настройки, что упрощает начало работы для новичков и уменьшает риск возникновения проблем.

Так выглядит полный текст простейшей программы (скетча) мигания светодиодом, подключенного к 13 выводу («пину») Arduino, с периодом 2 секунды:

void setup () { pinMode (13, OUTPUT); // Назначение порта 13 выходом } void loop () { digitalWrite (13, HIGH); // Установка порта 13 в 1 delay (2000); // Цикл задержки на 2000 миллисекунд digitalWrite (13, LOW); // Установка порта 13 в 0 delay (2000); // Цикл задержки на 2000 миллисекунд }

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

Загрузка программы в микроконтроллер

Закачка программы в микроконтроллер Arduino происходит через предварительно запрограммированный специальный загрузчик (все микроконтроллеры от Ардуино продаются с этим загрузчиком). Загрузчик создан на основе Atmel AVR Application Note AN109. Загрузчик может работать через интерфейсы RS-232, USB или Ethernet в зависимости от состава периферии конкретной процессорной платы. В некоторых вариантах, таких как Arduino Mini или неофициальной Boarduino, для программирования требуется отдельный переходник.

Пользователь может самостоятельно запрограммировать загрузчик в чистый микроконтроллер. Для этого в IDE интегрирована поддержка программатора на основе проекта AVRDude. Поддерживается несколько типов популярных дешёвых программаторов.

Альтернативные IDE

Популярность, открытость и простота платформы Arduino вызвала большой вал сторонних программных решений. В основном это решения вокруг интеграции компилятора и бутлоадера Arduino в имеющиеся оболочки для программистов (IDE). Большой список этих инструментов имеется . Среди них можно выделить как профессиональные инструменты вроде Eclipse, Microsoft Visual Studio, Atmel Studio так и инструменты для детей вроде Scratch for Arduino.

Графические языки программирования

  • Minibloq (англ.)русск..
  • Scratch for Arduino
  • Snap4Arduino
  • Ardublock.
  • Modkit — платный, среди прочих поддерживает аппаратуру Ардуино.
  • FLProg — бесплатный. Позволяет создавать программное обеспечение на языках FBD и LAD. Собственно говоря, как таковыми языками они не являются. Это, скорее, графические среды для рисования принципиальных или логических схем.
  • Scratch for Arduino

Схемотехника

  • Fritzing — простая Ардуино-ориентированная система проектирования и документирования схемотехники.

Компания

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

Лицензирование

Документация, прошивки и чертежи Arduino распространяются под лицензией Creative Commons Attribution ShareAlike 3.0 и доступны на официальном сайте Arduino. Рисунок печатной платы для некоторых версий Arduino также доступен. Исходный код для интегрированной среды разработки опубликован и доступен под лицензией GPLv2. Библиотеки используют лицензию LGPL.

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

Команда разработчиков

Ядро команды разработчиков Arduino составляют: Массимо Банци (Massimo Banzi), Девид Куартиллье (David Cuartielles), Том Иго (Tom Igoe), Джанлука Мартино (Gianluca Martino), Девид Меллис (David Mellis), Николас Замбетти (Nicholas Zambetti) и Валерий Шумятский (Valeriy Shymatskiy).

С 2008 года в компании начался раскол. Джанлука Мартино зарегистрировал другую фирму, на которую сумел оформить авторские права на торговую марку Arduino в некоторых странах. Новая компания создала альтернативную ветвь продаж оригинальных продуктов Ардуино на сайте arduino.org. Первоначальная компания контролирует продажи через сайт arduino.cc. Набор новых изделий на сайтах различался. Также существовали две ветви Arduino IDE, поддерживающие разный набор плат и библиотек. Одинаковые названия и пересекающиеся номера версий IDE вносили путаницу. 1 октября 2016 года на выставке World Maker Faire в Нью-Йорке руководители Arduino LLC и Arduino SRL объявили о слиянии компаний.

Награды

Проект Arduino был удостоен почётного упоминания при вручении призов Prix Ars Electronica 2006 в категории Digital Communities.

Примечания

  1. Arduino Software Release Notes
  2. Петин, 2014, с. 29—33.
  3. Робототехнические конструкторы под управлением Ардуино
  4. Microduino официальный сайт
  5. Microduino на русском
  6. Femtoduino — самый миниатюрный клон Arduino
  7. Intel Arduino 101
  8. Linux-based Arduino
  9. 1 2 Hardware. Дата обращения 26 декабря 2008. Архивировано 12 марта 2012 года.
  10. Официальная линейка изделий под маркой Ардуино
  11. Arduino Ethernet Shield
  12. XBee Shield
  13. USB Host Shield
  14. GNU GENERAL PUBLIC LICENSE Version 2, June 1991, Arduino (processing/arduino).
  15. 1 2 Arduino — FAQ
  16. LGPL — arduino core, libraries.
  17. Мигающий светодиод на Arduino. ledjournal.info. Дата обращения 21 мая 2016.
  18. РадиоЛокН Hi-Tech — Arduino Russian
  19. Справочник по API ARDUINO для Android
  20. Плагин к Eclipse
  21. Плагин к Eclipse по русски
  22. Visualmicro, плагин к Microsoft Visual Studio для работы с Ардуино
  23. DAVID KUSHNER, The Making of Arduino. How five friends engineered a small circuit board that’s taking the DIY world by storm, IEEE Spectrum, 26 Oct 2011
  24. Страница загрузки программного обеспечения Arduino. Software. Arduino. Архивировано 12 марта 2012 года.
  25. Arduino — Policy
  26. Arduino Wars: Group Splits, Competing Products Revealed?. makezine.com. Maker Media, Inc. (6 March 2015). Дата обращения 21 апреля 2015.
  27. Massimo Banzi: Fighting for Arduino. makezine.com. Maker Media, Inc. (19 March 2015). Дата обращения 21 апреля 2015.
  28. Arduino SRL to Distributors: “We’re the REAL Arduino”. Hackaday.com. Hackaday.com (28 March 2015). Дата обращения 21 апреля 2015.
  29. Arduino Blog » Two Arduinos become one. Дата обращения 20 мая 2017.
  30. Arduino на Prix Ars Electronica 2006 Архивировано 6 декабря 2006 года.
  31. Ars Electronica Archiv / ANERKENNUNG (нем.). Дата обращения 18 февраля 2009. Архивировано 12 марта 2012 года.
  32. STM32 MCU Nucleo — STMicroelectronics
  33. pcDuino

> Литература

  • Петин В.А. Проекты с использованием контроллера Arduino. — БХВ-Петербург, 2014. — 400 с. — ISBN 9785977533379.

Arduino для начинающих


Arduino представляет собой плату с микроконтроллером, которую вы можете программировать, чтобы управлять внешними устройствами. Он взаимодействует с внешним миром через датчики, двигатели, светодиоды, динамики… и даже Интернет, что делает его гибкой платформой для разных проектов. Есть довольно много микроконтроллеров, но Arduino популярен благодаря тому, что в интернете очень активно выкладываются и обсуждаются различные проекты. Если вы поищете в google или youtube, вы найдёте миллионы идей и информации чтобы начать осваивать Arduino самостоятельно.
Даже если вы не имеете опыта программирования микроконтроллеров –с Arduino вы быстро научитесь и узнаете что-то об электронике с помощью экспериментов.
Что вам понадобится для начала?
Arduino Uno- 1шт
Usb кабель-1шт
Перемычки 1шт
Макетная плата 1шт
Красный светодиод 4 шт
Резистор 220 Ом 4шт
Резистор 10 ком 1шт
Кнопка без фиксации
Потенциометр
RGB светодиод с общим катодом
Все это можно купить в местном радиомагазине или заказать в интернете.
Для демонстрации и симуляции электрических цепей был использован онлайн симулятор 123D circuits
Этот симулятор лучше всего работает в браузере Chrome
Давайте рассмотрим Arduino по внимательней.
Arduino это не большой компьютер, к которому могут подключаться внешние цепи. В Arduino Uno используется Atmega 328P
Это самый большой чип на плате. Этот чип выполняет программы, которые хранятся в его памяти. Вы можете загрузить программу через usb с помощью Arduino IDE. Usb порт также обеспечивает питание arduino.
Есть отдельный разъём питания. На плате есть два вывода обозначенные 5v и 3.3v, которые нужны для того, чтобы запитывать различные устройства. Так же вы найдете контакты, помеченные как GND, это выводы земли (земля это 0В). Платформа Arduino, так же, имеет 14 цифровых выводов (пинов), помеченных цифрами от 0 до 13, которые подключаются к внешним узлам и имеют два состояния высокое или низкое (включено или выключено). Эти контакты могут работать как выходы или как входы, т.е. они могут либо передавать какие-то данные и управлять внешними устройствами, либо получать данные с устройств. Следующие выводы на плате обозначены А0-А5. Это аналоговые входы, которые могут принимать данные с различных датчиков. Это особенно удобно, когда вам надо измерить некий диапазон, например температуру. У аналоговых входов есть дополнительные функции, которые можно задействовать отдельно.

Как использовать макетную плату.
Макетная плата нужна для того чтобы временно соединить детали, проверить, как работает устройство, до того как вы спаяете все вместе.
Все нижеследующие примеры собраны на макетной плате, чтобы можно было быстро вносить изменения в схему и повторно использовать детали не заморачиваясь с пайкой.
В макетной плате есть ряды отверстий, в которые вы можете вставлять детали и провода. Некоторые из этих отверстий электрически соединены друг с другом.
Два верхних и нижних ряда соединены по — рядно вдоль всей платы. Эти ряды используются, чтобы подавать питание на схему. Это может быть 5в или 3.3в, но в любом случае, первое, что вам надо сделать — это подключить 5в и GND на макетную плату, как показано на рисунке. Иногда эти соединения рядов могут прерываться посередине платы, тогда, если вам понадобится, вы можете их соединить, как показано на рисунке.

Остальные отверстия, расположенные в середине платы, группируются по пять отверстий. Они используется для соединения деталей схемы.
Первое, что мы подключим к нашему микроконтроллеру, это светодиод. Схема электрических соединений показана на картинке.
Для чего нужен резистор в схеме? В данном случае он ограничивает ток, который проходит через светодиод. Каждый светодиод рассчитан на определённый ток, и если этот ток будет больше, то светодиод выйдет из строя. Узнать, какого номинала должен быть резистор можно с помощью закона ома. Для тех кто не знает или забыл, закон ома говорит, что существует линейная зависимость тока от напряжения. Т.е, чем больше мы приложим напряжение к резистору, тем больше потечет через него ток.
V=I*R
Где V-напряжение на резистор
I- ток через резистор
R- сопротивление, которое надо найти.
Во-первых, мы должны узнать напряжение на резистор. Большинство светодиодов 3мм или 5мм, которые вы будете использовать, имеют рабочее напряжение 3в. Значит, на резисторе нам надо погасить 5-3=2в.
Затем мы вычислим ток, проходящий через резистор.
Большинство 3 и 5мм светодиодов светятся полной яркостью при токе 20мА. Ток больше этого может вывести их из строя, а ток меньшей силы снизит их яркость, не причинив никакого вреда.
Итак, мы хотим включить светодиод в цепь 5в,чтобы на нем был ток 20мА. Так как все детали включены в одну цепь на резистор тоже будет ток 20мА.
Мы получаем
2В = 20 мА * R
2В = 0.02A * R
R = 100 Ом
100 Ом это минимальное сопротивление, лучше использовать немного больше, потому, что светодиоды имеют некоторый разброс характеристик.
В данном примере используется резистор 220 Ом. Только потому, что у автора их очень много 😉 .
Вставьте светодиод в отверстия посередине платы таким образом, чтобы его длинный вывод был соединён с одним из выводов резистора. Второй конец резистора соедините с 5V, а второй вывод светодиода соедините с GND. Светодиод должен загореться.
Обратите внимание, что есть разница, как соединять светодиод. Ток течёт от более длинного вывода к более короткому. На схеме это можно представить, что ток течёт в ту сторону, куда направлен треугольник. Попробуйте перевернуть светодиод и вы увидите, что он не будет светиться.
А вот как вы будете соединять резистор, разницы совсем нет. Можете его перевернуть или попробовать подсоединить к другому выводу светодиода, это не повлияет на работу схемы. Он все так же будет ограничивать ток через светодиод.
Анатомия Arduino Sketch.
Программы для Arduino называют sketch. Они состоят из двух основных функций. Функция setup и функция loop
Setup () внутри этой функции вы будете задавать все основные настройки. Какие выводы будут работать на вход или выход, какие библиотеки подключать, инициализировать переменные. Функция Setup() запускается только один раз в течение скетча, когда стартует выполнение программы.
Loop() это основная функция, которая выполняется после setup(). Фактически это сама программа. Это функция будет выполняться бесконечно, пока вы не выключите питание.
Arduino мигает светодиодом
В этом примере мы соединим схему со светодиодом к одному из цифровых выводов Arduino и будем включать и выключать его с помощью программы, а так же вы узнаете несколько полезных функций.
pinMode (pinNumber, mode)- эта функция используется в setup () части программы и служит для инициализации выводов, которые вы будете использовать, как вход (INPUT) или выход (OUTPUT). Вы не сможете считать или записать данные с пина, пока не установите его соответственно в pinMode. Эта функция имеет два аргумента: pinNumber- это номер пина, который вы будете использовать.
Mode-задает, как пин будет работать. На вход (INPUT) или выход (OUTPUT). Чтобы зажечь светодиод мы должны подать сигнал ИЗ Arduino. Для этого мы настраиваем пин на выход.
digitalWrite(pinNumber,state)- эта функция служит для того, чтобы задать состояние (state) пина (pinNumber). Есть два основных состояния (вообще их 3), одно это HIGH, на пине будет 5в, другое это Low и на пине будет 0в. Значит, чтобы зажечь светодиод нам надо на пине , соединенном со светодиодом выставить высокий уровень HIGH.
delay(timeInMs)- задержка. Служит для задержки работы программы на заданный в мсек период.
Ниже приведен код, который заставляет мигать светодиод.
//LED Blink int ledPin = 7;//пин Arduino к которому подключен светодиод void setup() { pinMode(ledPin, OUTPUT);// установка пина как ВЫХОД } void loop() { digitalWrite(ledPin, HIGH);//зажечь светодиод delay(1000);// задержка 1000 мсек (1 сек) digitalWrite(ledPin, LOW);//Выключить светодиод delay(1000);//ждать 1 сек }
Небольшие пояснения по коду.
Строки, которые начинаются с «//» это комментарии Arduino их игнорирует.
Все команды заканчиваются точкой с запятой, если вы их забудете, то получите сообщение об ошибке.
ledPin- это переменная. Переменные используются в программах для хранения значений. В данном примере переменной ledPin присваивается значение 7, это номер пина Arduino. Когда Arduino в программе встретит строку с переменной ledPin , он будет использовать то значение, которое мы указали ранее.
Так запись pinMode(ledPin, OUTPUT) аналогична записи pinMode(7, OUTPUT).
Но в первом случае вам достаточно поменять переменную и она поменяется в каждой строке, где используется, а во втором случае вам, чтобы поменять переменную, придётся ручками в каждой команде вносить изменения.
INT в первой строке указывает на тип переменной. При программировании Arduino важно всегда объявлять тип переменных. Пока вам достаточно знать, что INT объявляет отрицательные и положительные числа.
Ниже представлено моделирование скетча. Нажмите старт, чтобы посмотреть работу схемы.
Как и ожидалось, светодиод гаснет и загорается через одну секунду. Попробуйте поменять задержку, чтобы посмотреть, как она работает.
Управление несколькими светодиодами.
В этом примере вы узнаете, как управлять несколькими светодиодами. Для этого установите ещё 3 светодиода на плату и соедините их с резисторами и выводами Arduino, как показано ниже.
Для того, чтобы включать и выключать светодиоды по очереди надо написать программу подобную этой:
//Multi LED Blink int led1Pin = 4; int led2Pin = 5; int led3Pin = 6; int led4Pin = 7; void setup() { //установка пинов как ВЫХОД pinMode(led1Pin, OUTPUT); pinMode(led2Pin, OUTPUT); pinMode(led3Pin, OUTPUT); pinMode(led4Pin, OUTPUT); } void loop() { digitalWrite(led1Pin, HIGH);//зажечь светодиод delay(1000);//задержка 1 сек digitalWrite(led1Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек //do the same for the other 3 LEDs digitalWrite(led2Pin, HIGH);//зажечь светодиод delay(1000);// задержка 1 сек digitalWrite(led2Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек digitalWrite(led3Pin, HIGH);//зажечь светодиод delay(1000);// задержка 1 сек digitalWrite(led3Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек digitalWrite(led4Pin, HIGH);//зажечь светодиод delay(1000);// задержка 1 сек digitalWrite(led4Pin, LOW);//потушить светодиод delay(1000);//задержка 1 сек }
Эта программа будет отлично работать, но это не самое рациональное решение. Код надо изменить. Для того, чтобы программа работала раз за разом мы применим конструкцию, которая называется цикл For.
Циклы удобны, когда надо повторить одно и тоже действие несколько раз. В коде, проведенном выше мы повторяем строки
digitalWrite (led4Pin, HIGH); delay (1000); digitalWrite (led4Pin, LOW); delay (1000);
полный код скетча во вложении for.zip (скачиваний: 1261)
Регулировка яркости светодиодов
Иногда вам надо будет менять яркость светодиодов в программе. Это можно сделать с помощью команды analogWrite(). Эта команда так быстро включает и выключает светодиод, что глаз не видит это мерцание. Если светодиод половину времени будет включён, а половину выключен, то визуально будет казаться, что он светится в половину своей яркости. Это называется широтно-импульсная модуляция (ШИМ или PWM по-английски). Шим применяется довольно часто, так как с ее помощью можно управлять «аналоговым» компонентом с помощью цифрового кода. Не все выводы Arduino подходят для этих целей. Только те выводы, около которых нарисовано такое обозначение «~». Вы увидите его рядом с выводами 3,5,6,9,10,11.
Соедините один из ваших светодиодов с одним из выводов ШИМ(у автора это вывод 9). Теперь запуститьскетч мигания светодиода, но прежде измените команду digitalWrite() на analogWrite(). analogWrite() имеет два аргумента: первый это номер вывода, а второй- значение ШИМ (0-255), применительно к светодиодам это будет их яркость свечения, а для электродвигателей скорость вращения. Ниже представлен код примера для разной яркости светодиода.
//Меняем яркость светодиода int ledPin = 9;//к этому выводу подсоединен светодиод void setup() { pinMode(ledPin, OUTPUT);// инициализация пина на вывод } void loop() { analogWrite(ledPin, 255);//полная яркость (255/255 = 1) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек analogWrite(ledPin, 191);//яркость на 3/4 (191/255 ~= 0.75) delay(1000);//пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек analogWrite(ledPin, 127);//половина яркости (127/255 ~= 0.5) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек analogWrite(ledPin, 63);//четверть яркости (63/255 ~= 0.25) delay(1000);// пауза 1 сек digitalWrite(ledPin, LOW);//выключить светодиод delay(1000);//пауза 1 сек }
Попробуйте поменять значение ШИМ в команде analogWrite (),чтобы увидеть, как это влияет на яркость.
Далее вы узнаете, как регулировать яркость плавно от полной до нулевой. Можно ,конечно, скопировать кусок кода 255 раз
analogWrite(ledPin, brightness); delay(5);//short delay brightness = brightness + 1;
Но, сами понимаете — это будет не практично. Для этого лучше всего использовать цикл FOR, который использовали ранее.
В следующем примере используются два цикла, один для уменьшения яркости от 255 до 0
for (int brightness=0;brightness=0;brightness—){ analogWrite(ledPin,brightness); delay(5); }
delay(5) используется, чтобы замедлить скорость нарастания и уменьшения яркости 5*256=1280 мсек= 1.28 сек.)
В первой строке используется «brightness-» ,для того чтобы значение яркости уменьшалось на 1, каждый раз, когда цикл повторяется. Обратите внимание, что цикл будет работать до тех пор, пока brightness >=0.Заменив знак > на знак >= мы включили 0 в диапазон яркости. Ниже смоделирован этот скетч.//плавно меняем яркость int ledPin = 9;//к этому пину подключен светодиод void setup() { pinMode(ledPin, OUTPUT);// инициализация пина на выход } void loop() { //плавно увеличиваем яркость (0 to 255) for (int brightness=0;brightness=0;brightness—){ analogWrite(ledPin,brightness); delay(5); } delay(1000);//ждем 1 сек //плавно уменьшаем яркость (255 to 0) for (int brightness=255;brightness>=0;brightness—){ analogWrite(ledPin,brightness); delay(5); } delay(1000);//ждем 1 сек } }
Это видно не очень хорошо, но идея понятна.
RGB-светодиод и Arduino
RGB-светодиод на самом деле это три светодиода разного цвета в одном корпусе.
Включая разные светодиоды с различной яркостью можно комбинировать и получать разные цвета. Для Arduino, где количество градаций яркости равно 256 вы получите 256^3=16581375 возможных цветов. Реально их, конечно, будет меньше.
Светодиод, который мы будем использоваться общим катодом. Т.е. все три светодиода конструктивно соединены катодами к одному выводу. Этот вывод мы подсоединим к выводу GND. Остальные выводы, через ограничительные резисторы, надо подсоединить к выводам ШИМ. Автор использовал выводы 9-11.Таким образом можно будет управлять каждым светодиодом отдельно. В первом скетче показано, как включить каждый светодиод отдельно.
//RGB LED — test //pin connections int red = 9; int green = 10; int blue = 11; void setup(){ pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); } void loop(){ //включение/выключение красного светодиод digitalWrite(red, HIGH); delay(500); digitalWrite(red, LOW); delay(500); //включение/выключение зеленого светодиода digitalWrite(green, HIGH); delay(500); digitalWrite(green, LOW); delay(500); //включение/выключение синего светодиода digitalWrite(blue, HIGH); delay(500); digitalWrite(blue, LOW); delay(500); }
В следующем примере используются команды analogWrite() и random(), чтобы получать различные случайные значения яркости для светодиодов. Вы увидите разные цвета, меняющиеся случайным образом.
//RGB LED — random colors //pin connections int red = 9; int green = 10; int blue = 11; void setup(){ pinMode(red, OUTPUT); pinMode(blue, OUTPUT); pinMode(green, OUTPUT); } void loop(){ //pick a random color analogWrite(red, random(256)); analogWrite(blue, random(256)); analogWrite(green, random(256)); delay(1000);//wait one second }
Random(256)-возвращает случайное число в диапазоне от 0 до 255.
В прикрепленном файле скетч, который продемонстрирует плавные переходы цветов от красного к зеленому, затем к синему, красному, зеленому и т.д. переходы.zip (скачиваний: 348)
Пример скетча работает, но есть много повторяющегося кода. Можно упростить код, написав собственную вспомогательную функцию, которая будет плавно менять один цвет на другой.
Вот как она будет выглядеть: функция.zip (скачиваний: 386)
Давайте рассмотрим определение функции по частям. Функция называется fader и имеет два аргумента. Каждый аргумент отделяется запятой и имеет тип объявленный в первой строке определения функции: void fader (int color1, int color2). Вы видите, что оба аргумента объявлены как int, и им присвоены имена color1 и color2 в качестве условных переменных для определения функции. Void означает, что функция не возвращает никаких значений, она просто выполняет команды. Если надо было бы написать функцию, которая возвращала результат умножения это выглядело бы так :
int multiplier(int number1, int number2){ int product = number1*number2; return product; }
Обратите внимание, как мы объявили Тип int в качестве типа возвращаемого значения вместо
void.
Внутри функции идут команды, которые вы уже использовали в предыдущем скетче, только номера выводов заменили на color1 и color2. Вызывается функция fader, ее аргументы вычисляются как color1 = red и color2 = green. В архиве полный скетч с использованием функций функции.zip (скачиваний: 290)
Кнопка
В следующем скетче будет использоваться кнопка с нормально разомкнутыми контактами, без фиксации.
Это значит, что пока кнопка не нажата, ток через неё не идёт, а после отпускания, кнопка возвращается в исходное положение.
В схеме, помимо кнопки используется резистор. В данном случае он не ограничивает ток, а «подтягивает» кнопку к 0в (GND). Т.е. пока кнопка не нажата на выводе Arduino, к которому она подключена, будет низкий уровень. Резистор, используемый в схеме 10 кОм.
//определяем нажатие кнопки int buttonPin = 7; void setup(){ pinMode(buttonPin, INPUT);//инициализируем пин на вход Serial.begin(9600);//инициализируем последовательный порт } void loop(){ if (digitalRead(buttonPin)==HIGH){//если кнопка нажата Serial.println(«pressed»); // выводим надпись «pressed» } else { Serial.println(«unpressed»);// иначе «unpressed» } }
В этом скетче несколько новых команд.
digitalRead(pinNumber)-эта команда принимает значение High (высокий уровень) и low (низкий уровень), того вывода, который мы проверяем. Предварительно в setup() этот вывод надо настроить на вход.
pinMode (buttonPin, INPUT); //где buttonPin это номер вывода, куда подсоединяется кнопка.
Последовательный порт позволяет отправлять Arduino сообщения на компьютер, в то время, как сам контроллер выполняет программу. Это полезно для отладки программы, отправки сообщений на другие устройства или приложения. Чтобы включить передачу данных через последовательный порт (другое название UART или USART), надо инициализировать его в setup()
Serial.begin()
Serial.begin() имеет всего один аргумент-это скорость передачи данных между Arduino и компьютером.
скетче используется команда Serial.print() для вывода сообщения на экран в Arduino IDE (Tools >> Serial Monitor).
If/else- конструкция позволяют контролировать ход выполнения программы, объеденив несколько проверок в одном месте.
If(если) digitalRead возвращает значение HIGH, то на мониторе выводится слово «нажата». Else(иначе) на мониторе выводится слово » отжата» . Теперь можно попробовать включать и выключать светодиод по нажатию кнопки.
//button press detection with LED output int buttonPin = 7; int ledPin = 8; void setup(){ pinMode(buttonPin, INPUT);//this time we will set button pin as INPUT pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop(){ if (digitalRead(buttonPin)==HIGH){ digitalWrite(ledPin,HIGH); Serial.println(«pressed»); } else { digitalWrite(ledPin,LOW); Serial.println(«unpressed»); } }
Аналоговый вход.
analogRead (pinNumber) analogRead позволяет считать данные с одного из аналоговых выводов Arduino и выводит значение в диапазоне от 0 (0В) до 1023 (5В). Если напряжение на аналоговом входе будет равно 2.5В, то будет напечатано 2.5 / 5 * 1023 = 512
analogRead имеет только один аргумент- Это номер аналогового входа (А0-А5). В следующем скетче приводится код считывания напряжения с потенциометра. Для этого подключите переменный резистор, крайними выводами на пины 5V и GND, а средний вывод на вход А0.
Запустите следующий код и посмотрите в serial monitor, как меняются значения в зависимости от поворота ручки резистора.
//analog input int potPin = A0;//к этому пину подсоединяется центральный вывод потенциометра void setup(){ //аналоговый пин по умолчанию включен на вход, поэтому инициализация не нужна Serial.begin(9600); } void loop(){ int potVal = analogRead(potPin);//potVal is a number between 0 and 1023 Serial.println(potVal); }
Следующий скетч объединяет скетч нажатия кнопки и скетч управления яркостью светодиода. Светодиод будет включаться от кнопки, и управлять яркостью свечения будет потенциометр.
//button press detection with LED output and variable intensity int buttonPin = 7; int ledPin = 9; int potPin = A0; void setup(){ pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop(){ if (digitalRead(buttonPin)==HIGH){//if button pressed int analogVal = analogRead(potPin); int scaledVal = map(analogVal, 0, 1023, 0, 255); analogWrite(ledPin, scaledVal);//turn on led with intensity set by pot Serial.println(«pressed»); } else { digitalWrite(ledPin, LOW);//turn off if button is not pressed Serial.println(«unpressed»); } } Доставка новых самоделок на почту

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

*Заполняя форму вы соглашаетесь на обработку персональных данных

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. .

Описание Arduino IDE

Дистрибутив можно скачать на официальном сайте . Скачиваем архив, он занимает чуть более 100 мб. Установка стандартная, как и все приложения для Windows. Драйвера для всех типов плат должны быть установлены в пакете. И вот каким образом выглядит рабочее окно программы.

Среда разработки Arduino состоит из:

  • редактора программного кода;
  • области сообщений;
  • окна вывода текста;
  • панели инструментов с кнопками часто используемых команд;
  • нескольких меню

Настройки Arduino IDE

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

Дополнительная функциональность может быть добавлена с помощью библиотек, представляющих собой оформленный специальным образом код. В основном он находится в закрытом от разработчика доступе. Среда обычно поставляется со стандартным набором, который можно постепенно пополнять. Они находятся в подкаталоге libraries каталога Arduino.

Многие библиотеки снабжаются примерами, расположенными в папке example. Выбор библиотеки в меню приведет к добавлению в исходный код строчки:

Arduino

1 #include <library.h>

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

После того как мы подключили электронную плату к компьютеру. Мы осуществляем следующие настройки — выбираем плату Arduino и Com-порт по которому будем соединяться.

Далее пишем простенькую программу для мигания 13-ого светодиода на плате. (есть в примерах example) и загружаем в контроллер.

Arduino

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

Есть ещё одна удобная вещь. Называется она Монитор последовательного порта (Serial Monitor). Отображает данные, посылаемые в платформу Arduino. Я обычно смотрю, какие сигналы выдают мне различные датчики, подключённые к плате.

Подключение библиотек

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

  1. С помощью Library Manager
  2. С помощью импорта в виде файла .zip
  3. Установка вручную.

1. С помощью Library Manager. В рабочем окне программы выбираем вкладку Скетч. После этого нажимаем на кнопку Подключить библиотеку . Перед нами откроется менеджер библиотек. В окне будут отображаться уже установленные файлы с подписью installed, и те, которые можно установить.

2.С помощью импорта в виде файла .zip. Часто в просторах интернета можно встретить запакованные в архивы файлы библиотек с расширением zip. В нём содержится заголовочный файл .h и файл кода .cpp. При установке не нужно распаковывать архив. Достаточно в меню Скетч — Подключить библиотеку — Add .ZIP library

3.Установка вручную. Сначала закрываем программу Arduino IDE. Наш архив мы сначала распаковываем. И файлы с расширением .h и .cpp переносим в папку с тем же названием, как и архив. Закидываем папку в корневой каталог.

Мои документы\Arduino\libraries

Описание FLPprog

FLprog — это бесплатный проект независимых разработчиков, позволяющий работать с функциональными блоками, либо с релейными диаграммами. Эта среда удобна для людей — не программистов. Она позволяет визуально и наглядно видеть алгоритм при помощи диаграмм и функциональных блоков. Скачать дистрибутив можно на официальном сайте.

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

Попробуем с вами создать простенький проект. Будем переключать 13 выход на светодиод.

Создаём новый проект. В верхнем окне добавляем нужное количество входов и выходов, задаём имя и присваиваем физический вход или выход платы.

Вытаскиваем нужные нам элементы из дерева объектов нужные нам элементы на холст редактирования. В нашем случае можно использовать простой RS-триггер для включения и выключения.

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

Мы с вами рассмотрели возможности и удобства программ для разработки алгоритмов на контроллере серии Arduino. Есть ещё программы, которые позволяют создавать структурные диаграммы и визуальные картинки. Но я рекомендую использовать текстовый редактор, потому что потом вам будет проще. Скажите, а какая среда вам удобнее всего и почему??

22 сентября я участвовал в Краснодаре на семинаре “Сенсорные панельные контроллеры ОВЕН СПК”. Проводили конференцию в фешенебельном и красивом отеле “Бристоль”. Было очень интересно и круто.

В первой части семинара нам рассказывали о возможностях и преимуществах продукции компании ОВЕН. После был кофе-брейк с пончиками. Я понабрал кучу всего, и пончиков, и печенья, и конфет, так как был очень голодным.=)

Во второй части семинара после обеда нам презентовали среду разработки CoDeSyS 3.5. Много чего рассказали про Web — визуализацию. Эта тенденция начинает набирать обороты. Ну конечно, управлять оборудованием через любой интернет — браузер. Это реально круто. Вот кстати говоря само оборудование в чемоданчике.

Я в ближайшем будущем опубликую серию статей по CoDeSyS 3.5. Так что, если кому интересно подписывайтесь или просто заходите в гости. Буду всегда рад!!!

Кстати чуть не забыл, следующая статья будет о подключении шагового двигателя к электронной плате Arduino. Будет интересно, не пропустите.

До встречи, в следующих статьях.

С уважением, Гридин Семён.

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

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

На рынке присутствует множество контроллеров, но среди всех лидирующую позицию занимает Arduino со своей уникальной линейкой плат.

Введение

Arduino — это аппаратная платформа с открытым исходным кодом. Есть два элемента в названии: платы и программное обеспечение. Только платы от официального производителя arduino.cc можно назвать «Arduino». Название является товарным знаком. Всё начиналось с открытого исходного кода, но по мере того, как популярность программного обеспечения Arduino (IDE — Integrated Development Environment) стала расти, оно было расширено для поддержки многих других плат. Эти устройства более правильно называть «совместимые Arduino».

Arduino IDE — это кросс-платформенное приложение, которое обеспечивает отправную точку для всех проектов, связанных с Arduino.

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

На стороне программного обеспечения есть «ядро» и «IDE». Ядром является библиотека C ++, называемая «ядром Arduino», которая уникальна для каждого типа процессора. Эта (обширная) библиотека позволяет использовать общие функции, такие как digitalRead() или digitalWrite(), для работы со множеством разных архитектур.

На аппаратной стороне трудно охватить все возможные варианты в сжатом виде. Таким образом, здесь основное внимание уделяется таким популярным вариантам, как: Uno, Mega, ESP8266, Zero и MKR. Некоторые из них мы упоминаем ниже.

8 или 32 бита

Основные сражения происходят между 8 и 32 битными платами.

8-бит: Uno, Nano, and Mega

32-бит: Zero, MKR, ESP8266 и ESP32

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

Более простые архитектуры означают, что регистры прямого программирования, как правило, относительно легки. 32-разрядные процессоры предлагают более высокие тактовые частоты вместе с большим количеством ОЗУ, ПЗУ и последовательной периферии. Их архитектура может усложнить программирование. К счастью, такие структуры, как библиотека Arduino и CircuitPython, зарывают большую часть этой сложности.

Выбор микропроцессора только потому, что он является 8-битным или 32-битным, может быть, скажем так, довольно «близоруким». Поэтому важно подумать о том, как вы планируете использовать его.

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

Arduino Due

Arduino Due – одна из самых популярных плат.

Работает на 32-битном процессоре с частотой 84мГц.

На борту установлен AT91SAM3X8E контроллер, во многом превосходящий все вышеперечисленные платы. 512 кб постоянной памяти, 96 кб оперативной. Имеются 54 цифровых пина, 12 из которых могут использовать ШИМ. Также есть пара 12-битных цифро-аналоговых преобразователей: они позволяют микропроцессору выдавать звук без дополнительных расширений.

Распиновка

Кстати, распиновку всех плат Ардуино вы можете найти на нашем сайте в этом разделе.

Arduino Due и Arduino Mega 2560 очень похожи друг на друга, поэтому может показаться, что и шилды для этих плат взаимозаменяемые, но на самом деле это не так. Логические уровни на Mega 5-вольтовые, тогда как на Due – 3,3 вольта. Будьте осторожны с расширениями плат, в противном случае Due безвозвратно сгорит.

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

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

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