- Общая информация об Arduino
- История Ардуино
- Зачем вам Arduino?
- Возможности
- Из чего состоит плата Arduino?
- Разъем питания (USB / разъем для адаптера)
- Разъемы (пины) (5V, 3.3V, GND, Analog, Digital, PWM, AREF)
- Кнопка сброса (Reset Button)
- Индикатор питания (Power LED)
- Светодиоды TX и RX
- Главная интегральная микросхема (IC)
- Регулятор напряжения
- Номенклатура плат Arduino
- Arduino Uno (R3)
- LilyPad Arduino
- RedBoard
- Arduino Mega (R3)
- Arduino Leonardo
- Arduino Pro Mini
- Дополнительные устройства для Arduino
- Датчики (сенсоры)
- Шилды (Shields) для Arduino
- Как купить Arduino?
- Нужно ли знать программирование?
- Программное обеспечение (IDE)
- Установка Arduino IDE
- Настройка Arduino IDE
- Использование Arduino IDE
- USB кабель
- Комплектующие и принадлежности
- Платы расширения Arduino
- Как настроить Ардуино?
- Набиваем руку
- Функции программ
- Библиотеки Arduino
- Этапы настройки Arduino
- Язык программирования Ардуино
- Функция setup
- Функция loop
- Первый проект на Arduino
- ШИМ Arduino
- Аналоговые входы Arduino
- Хейтеры платформы
Общая информация об Arduino
Arduinos стали особенно популярны среди людей, которые только начинают заниматься электроникой. Существует много причин для этого. В отличие от большинства своих предшественников, Arduino не требует дополнительного оборудования (программатора) для загрузки кода на плату; используется простой кабель USB. Оболочка программирования: Arduino IDE использует упрощенную версию C++, что упрощает ее изучение новичками. Кроме того, Arduino использует стандартизированный форм-фактор для большинства своих плат, что приводит к большому количеству дополнительных экранов».
Arduino Uno показан на рисунке ниже:
Arduino Uno — одна из самых популярных плат в линейке и отличный выбор для начинающих. Технические характеристики этой модели будут рассмотрены ниже.
IDE-оболочка Arduino:
Хотите верьте, хотите нет, но 10 строк кода, показанных на рисунке выше, достаточно, чтобы светодиод на плате замигал. Возможно, сам код вам сейчас не очень понятен, но поверьте, он предельно логичен и лаконичен. После этой статьи и некоторых туториалов вам не составит труда реализовать это самостоятельно.
Arduino не только для узкоспециализированных профессионалов. В то же время процесс их освоения будет намного проще и приятнее, если вы обладаете базовыми знаниями в области схемотехники и электротехники.
История Ардуино
Основателями компании, начавшей создавать платы Arduino, являются итальянцы Массимо Банци, Давид Куартилье, Том Иго, Джанлука Мартино и Дэвид Меллис. Это была оригинальная команда создателей.
И позаимствовали название итальянского бара, который, в свою очередь, был назван в честь короля Италии.
Ардуино был итальянским дворянином, который был королем Италии с 1002 по 1014 год. В 990 году Ардуино стал маркграфом Иврея, а в 991 году графом Священного Латеранского дворца в Риме.
Также стоит упомянуть, что для Соединенных Штатов Америки используется другое название: Genuine.
Зачем вам Arduino?
Arduino предназначен для.. всех. Так во всяком случае указано на официальном сайте компании. Список выглядит примерно так: художники, дизайнеры, хакеры, программисты, инженеры — для всех, кто интересуется разработкой и реализацией интерактивных проектов. Arduino может взаимодействовать с кнопками, светодиодами, двигателями, динамиками, модулями GPS, датчиками температуры, камерами, Интернетом и даже вашим смартфоном или телевизором. Эта гибкость в сочетании с тем фактом, что программное обеспечение Arduino является полностью бесплатным, а сами платы довольно дешевы и просты в освоении, привели к появлению большого сообщества поклонников Arduino, публикующих свои собственные фрагменты кода, библиотеки и инструкции для большое количество проектов с использованием Arduino.
Ардуино используются в качестве «мозгов» для роботов, 3D-принтеров, автоматизированных систем орошения, светодиодных кубов, грелок, систем «умный дом» и т д. Список постоянно растет. Вы не можете перечислить все проекты. Скажем так: Arduino используются практически в любом проекте, где нужна автоматизация.
И это только вершина айсберга. Если вам интересно увидеть проекты Arduino в действии, вот несколько ссылок на хорошие ресурсы):
- Инструкции
- Изображение
- Ардуино игровая площадка
- Вики ITP Physical Computing
- ЛедиАда
- Делайте проекты
Возможности
Зачем учиться работать с Arduino и электроникой в целом?
- Это невероятно интересное, техническое, мозгостроительное, относительно дешевое DIY-хобби с бесконечными идеями и их воплощениями
- Возможность создания узкоспециализированных электронных устройств и станков, не имеющих аналогов в продаже или слишком дорогих. Даже для личных нужд или для работы (семейный ювелир сделал себе контроллер для муфельной печи, что очень дорого).
- Возможность создавать новые уникальные устройства для входа в краудфандинг и запуска продаж и своего бизнеса.
- Отличная практика в программировании и электронике, особенно перед обучением на соответствующей специальности.
- Возможности в целом: автоматизация процессов и «машин», автоматическое регулирование процессов, дистанционное управление, контроль различных величин, портативные и стационарные электронные устройства различного назначения.
Из чего состоит плата Arduino?
Доступны различные модели Arduino. Каждый из них «заточен» под разные задачи. Некоторые платы принципиально отличаются от представленной на рисунке ниже. Но большинство из них имеют следующие идентичные узлы:
Разъем питания (USB / разъем для адаптера)
Каждая плата Arduino должна быть подключена к источнику питания. Arduino Uno может получать питание через USB-кабель от вашего персонального компьютера или от отдельного адаптера, который подключается к соответствующему разъему на плате. На рисунке разъем USB отмечен (1), а разъем внешнего источника питания отмечен (2).
USB также используется для загрузки вашей программы (эскиза) на плату.
Примечание! Не используйте блок питания с выходным напряжением более 20 вольт. Это может привести к тому, что ваша плата сгорит. Рекомендуемое напряжение питания для Arduino составляет от 6 до 12 вольт.
Разъемы (пины) (5V, 3.3V, GND, Analog, Digital, PWM, AREF)
Штыри на вашей плате Arduino — это предусмотренные разъемы, к которым вы будете подключать периферийные кабели (очень часто для прототипов используют печатные платы (макет, макет) и кабели с разъемами на концах). На Arduino есть различные типы выводов, каждый из которых подписан в соответствии с выполняемой функцией.
- GND (3): сокращение от «земля» — «земля». На платах есть несколько контактов GND, каждый из которых можно использовать для заземления вашей электрической цепи.
- 5V (4) и 3,3V (5): Как вы уже догадались, это колодцы, дающие на выходе 5 вольт и 3,3 вольта соответственно. Большинство компонентов, которые подключаются к Arduino, безопасно работают от 5 или 3,3 вольт.
- Аналоговый (6): Раздел «Аналоговый вход» (от A0 до A5 на Arduino Uno) содержит аналоговые входы. Эти выводы позволяют считывать сигналы с аналоговых датчиков (например, датчика температуры) и преобразовывать их в цифровые значения, с которыми мы потом будем оперировать.
- Цифровой (7): Напротив аналоговых контактов расположены цифровые контакты (от 0 до 13 на Arduino Uno). Эти контакты используются для цифровых входных сигналов (например, нажатие кнопки) и для генерации цифровых выходных сигналов (например, включение светодиода).
- PWM (8): Вы могли заметить знак (~) рядом с некоторыми цифровыми контактами (3, 5, 6, 9, 10 и 11 на UNO). Эти контакты работают как в обычном цифровом режиме, так и в режиме ШИМ-модуляции (ШИМ). В двух словах, эти контакты могут имитировать аналоговый выходной сигнал (например, для затемнения светодиода).
- AREF (9): Этот контакт редко используется. В некоторых случаях его подключают к схеме для установления максимального значения напряжения на аналоговых входах (от 0 до 5 вольт).
Кнопка сброса (Reset Button)
Как и в оригинальной Nintendo, в Arduino есть кнопка сброса (10). При ее нажатии контакт сброса замыкается на землю и код, загруженный в Arduino, снова начинает работать. Полезная опция, если ваш код работает без итераций, но вы хотите его протестировать.
Индикатор питания (Power LED)
Чуть правее и ниже надписи «ОДИН» находится светодиод с пометкой «вкл» (11). Этот светодиод должен загореться, когда вы подключили Arduino к источнику питания. Если светодиод не загорается, это плохой знак ;).
Светодиоды TX и RX
TX — это сокращение от «transmit» (передача), «RX» — «receive» (прием). Эти условные обозначения часто встречаются в электронике для обозначения контактов, отвечающих за последовательную связь. На Arduino Uno эти контакты дважды отображаются как цифровые контакты 0 и 1, а также как светодиоды TX и RX (12). Эти светодиоды позволяют визуально отслеживать, передает или принимает данные Arduino (например, при загрузке программы на плату).
Главная интегральная микросхема (IC)
Черная часть с металлическими разъемами с обеих сторон — это интегральная схема, микропроцессор (IC или Integrated Circuit) (13). Можно смело предположить, что это «мозги» нашей Ардуино. Этот чип отличается в разных моделях Arduino, но обычно он относится к линейке микропроцессоров ATmega от ATMEL. Это может быть важной информацией для загрузки скетча на доску. Модель интегральной схемы обычно указывается заглавными буквами. Для получения дополнительной информации о вашем чипе вы должны обратиться к его техническому описанию.
Регулятор напряжения
Регулятор напряжения (14) выполняет указанную в названии функцию: регулирует напряжение, которое подается на плату Ардуино. Вы можете думать об этом как о защите, которая не позволяет слишком большому напряжению проходить к плате, чтобы не повредить ее. Конечно, у регулятора есть предел. Таким образом, вы не можете питать Arduino более 20 вольт.
Номенклатура плат Arduino
Arduino производит множество плат, каждая из которых имеет свои особенности. Кроме того, Arduino придерживается модели с открытым исходным кодом, что позволяет другим модифицировать и производить клоны Arduino, расширять и изменять его функциональность и форм-фактор. Ниже приведены краткие сведения о различных моделях Arduino.
Arduino Uno (R3)
Arduino Uno — отличный выбор для начинающих. Очень сбалансированная доска, в которой есть все, что может понадобиться, и минимум лишнего. На плате 14 цифровых пинов, работающих на вход и выход (6 из них поддерживают ШИМ-модуляцию), 6 аналоговых входов. Плата подключается через USB. Есть разъем для отдельного питания, кнопка сброса и т.д. Чтобы начать работу с микроконтроллером, просто подключите плату к компьютеру с помощью USB-кабеля.
LilyPad Arduino
Основная плата линейки LilyPad Arduino! LilyPad предназначен в первую очередь для использования на одежде. Штыри соединены с периферийными устройствами проводящей нитью. Для LilyPad существует множество дополнительных плат. Большинство из них сконструированы таким образом, что не боятся влаги.
RedBoard
Разработка SparkFun, который программируется через кабель USB Mini-B в оболочке Arduino IDE. Основными преимуществами производитель называет — стабильность работы в Windows 8 за счет драйверов с необходимой цифровой подписью. На плате используется микросхема USB/FTDI, которая меньше по размеру по сравнению с микросхемой Arduino UNO. Для загрузки скетча на плату в IDE выберите модель Arduino UNO. Регулятор напряжения рассчитан на питание в диапазоне от 7 до 15 вольт.
Arduino Mega (R3)
Arduino Mega похожа на старшего брата Uno, на плате много (54!) цифровых входов/выходов (14 из них поддерживают ШИМ-модуляцию). Из-за большого количества контактов плата используется для сложных проектов, где подключается большое количество периферийных устройств (например, светодиодов или кнопок). Подключение к компьютеру осуществляется тем же кабелем, что и на Arduino Uno, естественно, предусмотрен разъем для переходника.
Arduino Leonardo
Leonardo — первая разработка Arduino, в которой используется один микроконтроллер со встроенным USB. Это означает, что плата становится проще и дешевле. Поскольку плата подключается напрямую к USB без преобразователя, существуют библиотеки, позволяющие эмулировать компьютерную мышь, клавиатуру и многое другое!
Arduino Pro Mini
Arduino Pro Mini — лучший выбор для ваших проектов, требующих высокой мобильности или необходимости установки контроллера непосредственно на движущиеся части вашей машины. В этой статье вы можете найти полное руководство по использованию плат Arduino Pro Mini.
Дополнительные устройства для Arduino
Конечно, сама Arduino уже прекрасна. Но как отдельный узел он мало что может. Что-то должно быть связано с этим. В Интернете есть множество учебных пособий и проектов, из которых вы можете черпать идеи для своих проектов. В этой части мы сделаем небольшой обзор датчиков и шилдов (плат расширения) для Arduino.
Датчики (сенсоры)
С помощью короткого кода и Arduino вы можете управлять широчайшим спектром датчиков: датчиками, измеряющими уровень освещенности, температуру, давление, расстояние, силу, влажность, радиоактивность, ускорение и многое другое. На следующем рисунке показаны некоторые из широкого спектра датчиков, поддерживаемых Arduino:
Шилды (Shields) для Arduino
Между прочим, есть такие замечательные вещи, как щиты; на самом деле это отдельная электрическая схема, которая имеет разъемы и размещается на вашей плате Arduino и обеспечивает упрощенное управление двигателем (моторный шилд), подключение к интернету (Ethernet шилд), радиосвязь, жидкокристаллическое управление и сенсорные дисплеи и т д
Некоторые из щитов показаны на следующем рисунке:
Как купить Arduino?
Плата Arduino и многие детали производятся в Италии, поэтому оригинальные комплектующие стоят довольно дорого. Но есть и отдельные дизайнерские компоненты или наборы, так называемые кит-наборы, которые производятся по итальянскому аналогу, но по более доступным ценам.
Можно купить аналог на внутреннем рынке или, например, заказать из Китая. Например, многие знают о сайте Aliexpress. А вот тем, кто только начинает знакомиться с Ардуино, свою первую плату лучше заказать в российском интернет-магазине. Со временем можно будет перейти на покупку плат и деталей в Китае. Срок доставки из этой страны составит от двух недель до месяца, а, например, стоимость большого комплекта составит не более 60-70 долларов.
Стандартные комплекты обычно включают следующие детали:
- хлебная доска;
- вел;
- резисторы;
- батареи 9В;
- регуляторы напряжения;
- кнопки;
- мосты;
- матричная клавиатура;
- платы расширения;
- конденсаторы
Нужно ли знать программирование?
Первые шаги в работе с платой Arduino начинаются с программирования платы. Программа, которая уже готова для работы с платой, называется скетч. Вам не нужно беспокоиться о том, что вы не умеете программировать. Процесс создания программ довольно прост, и в Интернете есть много примеров скетчей, так как сообщество Arduino очень велико.
После компиляции программа загружается (прошивается) на плату. В этом случае у Arduino есть неоспоримое преимущество — в большинстве случаев для программирования используется USB-кабель. Сразу после загрузки программа готова к выполнению различных команд.
Новичкам с Arduino необходимо знать две ключевые особенности:
- setup() — используется один раз при включении платы, используется для инициализации настроек;
- loop(): используется постоянно, это последний шаг в настройке.
Пример ввода функции setup():
недействительными настройками () { Serial.begin (9600); // Открытие последовательного соединения pinMode(9, INPUT); // Назначаем контакт 9 в качестве входа pinMode(13, OUTPUT); // Назначаем вывод 13 в качестве выхода }
Функция setup() выполняется с самого начала и только 1 раз сразу после включения или перезагрузки устройства.
Функция loop() выполняется после функции setup(). Loop переводится как петля или цикл. Функция будет выполняться снова и снова. Таким образом, микроконтроллер ATmega328 (он есть в большинстве плат Arduino) будет выполнять функцию цикла около 10 000 раз в секунду.
Вы также найдете дополнительные функции:
- pinMode — режим ввода и вывода информации;
- analogRead — позволяет прочитать результирующее аналоговое напряжение на выходе;
- analogWrite — записать аналоговое напряжение на выходной контакт;
- digitalRead: позволяет прочитать значение цифрового выхода;
- digitalWrite: позволяет установить значение цифрового выхода на низкий или высокий уровень;
- Serial.print — переводит данные проекта в удобочитаемый текст.
Вдобавок к этому новичкам в Arduino понравится тот факт, что существует множество библиотек для плат, представляющих собой наборы функций, позволяющих управлять платой или дополнительными модулями. К наиболее популярным относятся:
- чтение и запись в хранилище,
- интернет-соединение,
- читать сд карты,
- управление шаговым двигателем
- рендеринг текста
- так далее
Программное обеспечение (IDE)
Программное обеспечение, используемое для программирования Arduino, называется Arduino IDE. IDE — это приложение Java, которое работает на многих различных платформах, включая системы ПК, Mac и Linux. Он предназначен для новичков, не знакомых с программированием. Он включает в себя редактор, компилятор и загрузчик. IDE также включает библиотеки кода для использования периферийных устройств, таких как последовательные порты и различные типы дисплеев. Программы Arduino называются «скетчами» и написаны на языке, очень похожем на C или C++.
Установка Arduino IDE
Если вы загрузили файл, просто разархивируйте его и запустите Arduino.exe.
Если вы загрузили установочный файл, необходимо выполнить стандартную установку. Процесс установки очень прост и не займет много времени, но для полноты картины я опишу его подробно.
Запускаем установочный файл. Соглашаемся с условиями лицензионного соглашения (естественно после прочтения).
Мы согласны с условиями
Выберите необходимые программные модули. Первые два должны быть проверены. Остальное зависит от тебя.
Выбор компонентов Arduino ide
Далее указываем папку, в которую хотим установить программу. Желательно, чтобы путь к этой папке не содержал символов кириллицы.
Выбор пути установки программы
Во время установки может появиться окно с просьбой установить драйвер USB to Serial. Соглашаемся и ждем завершения установки. На этом весь процесс завершен. Осталось настроить среду разработки и ее можно создавать.
Настройка Arduino IDE
После установки необходимо настроить программу. Сделать это очень легко:
1. Сначала подключите Arduino к компьютеру с помощью USB-кабеля.
2. Затем перейдите в «Пуск >> Панель управления >> Диспетчер устройств». Там вы должны найти «Порты COM и LPT». Этот список покажет ваш Arduino и порт, к которому он подключен (COM2). Запомните это значение.
Если вашего микроконтроллера нет в списке, или он отображается как неопознанное устройство, то либо драйвер установлен некорректно, либо у вас китайская плата с чипом CH340. Это не проблема. Просто нужен другой контроллер.
Arduino Uno в диспетчере устройств
3. Теперь запустите Arduino IDE и сразу же перейдите в меню «Инструменты >> Порт». Там вам нужно выбрать COM-порт, который вы помните.
Выбор COM-порта
4. Далее нужно выбрать доску. Для этого в меню «Инструменты >> Пластины» выберите модель своей пластины.
Выбираем плату ардуино
На этом настройка завершена. Обратите внимание, что вам потребуется изменить этот параметр, если вы подключаете плату к другому порту USB или используете другую плату.
Использование Arduino IDE
Программа очень проста в использовании. Чтобы убедиться, что все работает правильно, мы загрузим наш первый скетч в микроконтроллер. Для этого воспользуемся стандартным примером с мигающим светодиодом. Существует множество примеров, готовых к использованию в среде разработки. Это то, что мы будем использовать.
Примеры в Arduino IDE
Затем нажимаем кнопку «Скачать» и ждем окончания загрузки скетча. После зарядки встроенный светодиод должен сразу начать мигать. Это означает, что все работает как надо. Теперь вы можете написать свою прошивку или использовать уже готовую. Описание возможностей языка программирования Arduino есть на странице моего сайта Программирование
USB кабель
Большинство плат Arduino подключаются к компьютеру с помощью USB-кабеля. Это соединение позволяет загружать скетчи на плату Arduino, а также обеспечивает питание платы.
USB-кабель для Ардуино
Комплектующие и принадлежности
Ниже приведен список всех деталей и аксессуаров, обычно используемых с Arduino для разработки проекта:
- Хлебная доска
- USB-кабель
- Батарея 9В
- светодиоды
- кнопки
- конденсаторы
- регуляторы напряжения
- датчики (ИК, температуры и т.д.)
- Свитера
- Резисторы
- Потенциометр
- Двигатели (двигатели постоянного тока, сервоприводы, BLDC)
- ЖК
- Матричная клавиатура 4×4
- Платы расширения ардуино
Платы расширения Arduino
Arduino Shields (Arduino Shields) — это платы, которые подключаются к Arduino, чтобы вы могли подключать к Arduino периферийные устройства, датчики и приводы. Ниже приведен список некоторых популярных плат расширения:
- GSM щит;
- Ethernet-щит;
- Wi-Fi щит;
- Моторный щит;
- Протощит;
- Щит джойстика;
- Щит Bluetooth;
- Щит Xbe.
Как настроить Ардуино?
Одним из основных преимуществ конструктора является его безопасность в отношении пользовательских настроек. Ключевые настройки, потенциально опасные для Arduino, защищены и недоступны.
Поэтому даже неопытный программист может смело экспериментировать и менять различные варианты, добиваясь нужного результата. Но на всякий случай рекомендуем прочитать три важных материала о том, как не испортить плату:
- Как защитить Arduino и другие платы от кривых рук
- 10 способов «убить» микроконтроллер Arduino
- Как безопасно подключать внешние устройства к микроконтроллеру?
Алгоритм классической настройки программы Arduino выглядит так:
- установка IDE, которую можно скачать ниже или здесь или с сайта производителя;
- установка программного обеспечения на используемый ПК;
- запуск файла Arduino;
- ввести в окно кода разработанную программу и перенести ее на плату (с помощью USB-кабеля);
- в разделе IDE необходимо выбрать тип используемого конструктора. Сделать это можно в окне «Инструменты» — «Доски»;
- проверьте код и нажмите «Далее», после чего начнется загрузка в Arduino.
Набиваем руку
Чтобы уверенно реализовывать сложные идеи, использовать программную среду и Arduino, новичкам необходимо «держать в руках». Для этого рекомендуется начинать с более простых задач и проектов.
Самый простой проект, который вы можете сделать, это заставить светодиод, расположенный на плате Arduino перед портом, мигать каждую секунду.
Для этого вам нужно:
- подключить конструктор к ПК,
- открываем программу, в разделе «сервис» находим блок «последовательный порт»
- выбрать необходимый интервал
- после чего нужно добавить код, найденный в Arduino IDE, в раздел «Примеры».
Первыми проектами в Arduino для начинающих могут быть:
- мигающий светодиод;
- подключение и управление датчиком температуры;
- подключение и управление датчиком движения;
- подключение фоторезистора;
- сервоуправление
Функции программ
Ниже приведен список наиболее часто используемых функций при программировании Arduino:
- pinMode: устанавливает вывод в режим ввода или вывода;
- analogRead — считывает аналоговое напряжение на аналоговом входе
- analogWrite — Запись аналогового напряжения на аналоговый выходной контакт;
- digitalRead — считывает значение вывода цифрового входа;
- digitalWrite — устанавливает значение вывода цифрового выхода в высокое или низкое значение;
- Serial.print — записывает данные в последовательный порт в виде удобочитаемого текста ASCII.
Библиотеки Arduino
Библиотеки Arduino — это наборы функций, которые позволяют вам управлять устройствами. Вот некоторые из наиболее часто используемых библиотек:
- EEPROM: чтение и запись в «постоянную» память;
- Ethernet: для подключения к Интернету через плату Arduino Ethernet Shield;
- Firmata: для связи с приложениями на компьютере с использованием стандартного последовательного протокола;
- GSM: для подключения к сети GSM/GRPS через плату GSM;
- LiquidCrystal: для управления жидкокристаллическими дисплеями (LCD);
- SD — для чтения и записи SD-карт;
- Servo — для управления сервоприводами;
- SPI: для связи с устройствами, использующими шину SPI;
- SoftwareSerial: для последовательной связи через любой цифровой контакт;
- Stepper: для управления шаговыми двигателями;
- TFT: для рисования текста, изображений и форм на TFT-экранах Arduino;
- WiFi: для подключения к Интернету с помощью Arduino WiFi Shield;
- Wire — это двухпроводной интерфейс (TWI/I2C) для передачи и получения данных через сеть устройств или датчиков.
Этапы настройки Arduino
- Сначала установите IDE. Вы можете загрузить IDE с веб-сайта Arduino.
- Установите программное обеспечение на свой компьютер.
- Теперь запустите файл Arduino IDE .exe. ИДЕ выглядит так:
- Напишите свою программу в редакторе кода и загрузите ее в Arduino. Для этого вам нужно подключить Arduino к компьютеру с помощью USB-кабеля.
- В среде IDE выберите тип используемой платы Arduino в меню «Инструменты» → «Платы).
- Теперь проверьте свой код, щелкнув значок галочки в верхней части окна IDE, затем щелкните соседний значок со стрелкой вправо, чтобы скомпилировать и загрузить код в Arduino.
Предупреждение: вам может потребоваться установить драйверы, если ваша система не обнаруживает Arduino.
Язык программирования Ардуино
Когда у вас под рукой будет плата микроконтроллера и на компьютере установлена среда разработки, можно приступать к написанию своих первых скетчей (прошивок). Для этого нужно знать язык программирования.
Программирование Arduino использует упрощенную версию языка C++ с предопределенными функциями. Как и в других языках программирования, подобных C, существует ряд правил написания кода. Вот самые основные:
- За каждым оператором должна следовать точка с запятой (;)
- Перед объявлением функции необходимо указать тип данных, возвращаемый функцией, или переопределить, если функция не возвращает значение.
- Также необходимо указать тип данных перед объявлением переменной.
- Комментарии обозначаются: // Inline и /* block */
Вы можете узнать больше о типах данных, функциях, переменных, операторах и языковых конструкциях на странице программирования Arduino. Вам не нужно запоминать и запоминать всю эту информацию. Вы всегда можете перейти к справочнику и посмотреть синтаксис той или иной функции.
Все прошивки для Arduino должны содержать как минимум 2 функции. Это setup() и loop().
Функция setup
Функция setup() выполняется с самого начала и только 1 раз сразу после включения или перезагрузки устройства. Обычно эта функция объявляет режимы выводов, открывает необходимые протоколы связи, устанавливает соединения с дополнительными модулями и настраивает подключенные библиотеки. Если в вашей прошивке ничего подобного делать не нужно, то функцию все равно нужно объявить. Вот стандартный пример функции setup():
недействительными настройками () { Serial.begin (9600); // Открытие последовательного соединения pinMode(9, INPUT); // Назначаем контакт 9 в качестве входа pinMode(13, OUTPUT); // Назначаем вывод 13 в качестве выхода }
В этом примере последовательный порт просто открыт для связи с компьютером, а контакты 9 и 13 назначены как вход и выход. Ничего сложного. Но если вам что-то непонятно, вы всегда можете задать вопрос в комментариях ниже.
Функция loop
Функция loop() выполняется после функции setup(). Loop в переводе с английского означает «петля». Это указывает на то, что функция находится в цикле, то есть она будет выполняться снова и снова. Например, микроконтроллер ATmega328, установленный на большинстве плат Arduino, выполняет итерацию примерно 10 000 раз в секунду (если не используются задержки и сложные вычисления). Благодаря этому у нас есть большие возможности.
Первый проект на Arduino
Давайте соберем первое устройство на базе Arduino. Мы просто подключим сенсорную кнопку и светодиод к Arduino. Схема проекта выглядит так:
Регулировка яркости светодиода
Обратите внимание на дополнительные резисторы в схеме. Один из них ограничивает ток светодиода, а второй замыкает контакт кнопки на землю. Как это работает и зачем это нужно, я объяснил в этом уроке.
Чтобы все заработало, нам нужно написать скетч. Сделаем так, чтобы светодиод включался после нажатия на кнопку, а после следующего нажатия выключался. Вот наш первый набросок:
// переменные с подключенными выводами устройства int switchPin = 8; внутренний светодиодный контакт = 11; // переменные для хранения состояния кнопки и светодиода boolean lastButton = LOW; логическая текущая кнопка = НИЗКИЙ; логическое значение ledOn = ложь; void setup () { pinMode (switchPin, INPUT); pinMode(ledPin, ВЫХОД); } // функция устранения дребезга boolean debounse(boolean last) { boolean current = digitalRead(switchPin); если (последний! = текущий) { задержка (5); текущий = цифровое чтение (переключатель); } текущий доход; } void loop() { currentButton = debounce(lastButton); if(lastButton == LOW && currentButton == HIGH) { ledOn = !ledOn; } последняя кнопка = текущая кнопка; цифровое письмо (светодиодный штырь, светодиодный индикатор питания); }
В этом скетче я создал дополнительную функцию отскока для подавления отскока контакта.
ШИМ Arduino
Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением путем взятия рабочего цикла сигнала. То есть с помощью ШИМ мы можем без проблем управлять нагрузкой. Например, можно плавно изменять яркость светодиода, но это изменение яркости достигается не уменьшением напряжения, а увеличением интервалов низких сигналов. Принцип работы ШИМ показан на этой схеме:
ШИМ ардуино
Когда мы применяем ШИМ к светодиоду, он начинает быстро включаться и выключаться. Человеческий глаз не может этого увидеть, потому что частота слишком высока. Но при записи видео вы, скорее всего, увидите моменты, когда светодиод не горит. Это будет происходить до тех пор, пока частота кадров камеры не будет кратна частоте ШИМ.
Arduino имеет встроенный широтно-импульсный модулятор. Вы можете использовать ШИМ только на тех выводах, которые поддерживаются микроконтроллером. Например, Arduino Uno и Nano имеют 6 выходов ШИМ: это пины D3, D5, D6, D9, D10 и D11. Пины могут отличаться на других досках. В этом разделе вы можете найти описание интересующей вас платы.
Для использования ШИМ в Arduino есть функция AnalogWrite(). Он принимает в качестве аргументов номер вывода и значение ШИМ от 0 до 255. 0 соответствует 0% заполнению, а 255 соответствует 100%. В качестве примера напишем простой скетч. Сделаем так, чтобы светодиод загорался плавно, подождал секунду и так же плавно погас, и так до бесконечности. Вот пример использования этой функции:
// светодиод подключен к контакту 11 int ledPin = 11; void setup () { pinMode (ledPin, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { AnalogWrite (ledPin, i); задержка (5); } задержка(1000); for (int i = 255; i > 0; i--) { AnalogWrite (ledPin, i); задержка (5); } }
Аналоговые входы Arduino
Как мы уже знаем, цифровые пины могут быть как входными, так и выходными и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые выводы могут принимать только один сигнал. И в отличие от цифровых входов, аналоговые входы измеряют напряжение входящего сигнала. Большинство плат Arduino имеют 10-битный аналого-цифровой преобразователь. Это означает, что 0 читается как 0, а 5В — как 1023. То есть аналоговые входы измеряют приложенное к ним напряжение с точностью до 0,005 вольт. Благодаря этому мы можем подключать различные датчики и резисторы (термисторы, фоторезисторы) и считывать с них аналоговый сигнал.
Для этого в Arduino есть функция AnalogRead(). Для примера подключим фоторезистор к ардуино и напишем простенький скетч, где будем считывать показания и отправлять их на монитор порта. Вот так выглядит наше устройство:
Подключение фоторезистора к Ардуино
В схеме есть подтягивающий резистор на 10 кОм. Необходимо избегать помех и помех. Теперь смотрим скетч:
инт смысл = 0; // Вывод, к которому подключен фоторезистор void setup() { AnalogReferense(DEFAULT); // Установите опорное значение напряжения. Эта строка не является обязательной. Серийный.начать(9600); // Открываем порт на скорости 9600 бод. } void loop() { Serial.println(analogRead(sensePin)); // Читаем значение и отправляем на порт delay(500); // задержка, чтобы не было слишком много значений }
Итак, мы сделали датчик освещенности из двух простых элементов и четырех строчек кода. На базе этого устройства мы можем сделать умную лампу или ночник. Очень простое и полезное устройство.
Хейтеры платформы
В мире серьезных программистов и разработчиков Arduino не пользуется большой популярностью. Почему? Рассмотрим несколько популярных негативных отзывов о платформе.
- В Arduino IDE работа с микроконтроллером настолько проста, что ардуинисту не нужно ничего знать о его архитектуре и о том, как он вообще программируется и настраивается: все сделано в виде готовых и понятных функций.
- С каких это пор удобство и простота стали плохими? Для новичка это единственный способ познакомиться с миром робототехники без изучения кучи документации и получения должного образования. Ардуино создан в первую очередь для обучения, а во вторых для быстрого и удобного прототипирования электронных устройств, в этом его особенность.
- Это все хорошо, конечно, но скрытый код за дружелюбным экраном «Arduino Wiring» внушает ужас: за вроде бы безобидными функциями скрываются полотна кода, которые будут что-то проверять, перепроверять, перенастраивать уже настроенное, а они сделают многое другие, казалось бы, ненужные вещи. Работает эта напасть очень медленно и занимает много места!
- Да, в стандартных функциях много защиты от тупого новичка, они тяжелые и медленные. Но новичок не сможет написать такой код, где скорость и память будут так критичны! А если надо, то к тому времени вы уже сможете оптимально писать код и найдёте быстрые аналоги функций Arduino на моём сайте или ещё где-нибудь в интернете или напишете сами. И еще: ядро Arduino разработано таким образом, чтобы обеспечить совместимость кода и библиотек для всех плат Arduino. Начали делать проект на Arduino NANO и закончились память/ноги? Перенесли проект на Arduino MEGA и продолжаем работу. Был ли NANO слишком большим для проекта? Мы портировали его на ATTiny85, даже не открывая документацию.
- Стандартные функции Arduino.h описывают малую часть всех возможностей и настроек микроконтроллера.
- И никто не обещал вам HAL! Возможности МК раскрываются при использовании библиотек (см список библиотек), так как сообщество платформы действительно огромно. Вы также всегда можете научиться работать с электронными таблицами и журналами и настраивать все и вся вручную.
- Arduino IDE «скрывает» важные низкоуровневые настройки от пользователя.
- И у него это хорошо получается! Одна ошибка, и можно остаться с заблокированным МК. При желании вы можете включить фьюзы через Arduino IDE и настроить их на другие частоты, читайте об этом в этом уроке.
- Ардуино для детей! Серьезные ребята работают с «голым камнем”.
- Правильно, для детей и домохозяек. Плата Arduino задумана для создания конструкций, прототипов, ее можно рассматривать как часть электронного «конструктора» для обучения. На плате есть все необходимые разводки, так почему бы не использовать ее как сердце готового проекта?
- Arduino IDE для детей! Серьезные ребята работают во взрослых средах разработки.
- Верно, но есть небольшой нюанс: Arduino IDE официально бесплатна, после простой установки (Next, Next, Next, Done) она сразу готова к работе: достаточно выбрать плату из списка и начать писать код. Среды разработки для взрослых требуют взрослого подхода, и порог входа для работы с ними непропорционально высок. Помимо сложной установки и настройки вас ждут расширенные настройки самого микроконтроллера в ручном режиме, чтение документации и даташитов, «взрослый» интерфейс и множество нюансов в программировании и настройке компилятора. Изучение всего этого займет много времени, и, скорее всего, нормальных уроков вы не найдете.
- Рабочие Arduino попадают в порочный круг, они никогда не будут развиваться дальше мигания светодиода.
- Платформа никак не ограничивает разработчика, но если ты не хочешь, ты не развиваешься.
- На Arduino невозможно создать что-то действительно сложное и интересное.
- Скажите это станкам с ЧПУ (прошивка GRBL), 3D-принтерам (прошивка Marlin), квадрокоптерам и самолетам (прошивка Arduino) и многим другим замечательным проектам.
- И STM32 лучше! И намного мощнее! И у вас есть больше возможностей! И дешевле!!!
- Да Да Да. Но не забывайте о пороге входа и размере сообщества с «начинающим» контентом, библиотеками и примерами, а также о сложности работы с STM в целом. Посмотрите видео на этом канале и сравните, что происходит с Arduino. С точки зрения возможностей и скорости, для большинства хобби-проектов Arduino (ATmega328/2560) будет более чем достаточно, особенно если вы умеете писать оптимальный код.
- Качество «Интернет» кода просто ужасное.
- Да, за счет простых, но понятных стандартных примеров аудитория ардуино-разработчиков очень быстро росла и буквально заполонила Интернет своими проектами, тем самым привлекая к этому хобби других новичков. 99% обучающих примеров, примеры работы с библиотеками и модулями написаны просто и ужасно неоптимально: переменные int на все подряд, вездесущая задержка, блокирующие циклы и т.д., плюс безбожные функции ардуино. Люди берут эти примеры за основу и продолжают писать в том же духе. Но эти люди стоят на пороге очень большой двери под названием робототехника. Перешагнув этот порог, отбросив все кривые примеры, и научившись грамотно строить структуру своего кода, они попадают в мир бесконечных возможностей для творчества и исследований, в мир бесконечно интересных и разнообразных проектов на Arduino. Вот почему я пишу эти уроки.
Что бы вы еще хотели сказать о негативе «профессионалов»? В большинстве случаев просто завидуют — в «их время» для создания даже простого проекта на базе микроконтроллера нужно было потратить огромное количество времени на изучение англоязычной документации на конкретную модель МК, все остальное железо и микросхемы проекта, обучение работе в агрессивной среде разработки, разводка и пайка платы, покупка дорогого программатора и т.д. А сегодня можно купить плату за 150 рублей, воткнуть в USB, запустить программу типа «ноутбук с кнопкой Download» и начать кодить, используя огромное количество готовых библиотек и примеров практически для любой железяки на рынок.