Электроника. Твой первый квадрокоптер. Теория и практика. Яценков В.С.
Электроника. Твой первый квадрокоптер. Теория и практика
Аннотация
Книга Яценкова В.С. подходит для людей, имеющих опыт работы с платформой Ардуино. Здесь в понятной форме изложены практические аспекты создания и управления квадрокоптером. Пошагово расписаны все этапы сборки – выбор нужных частей и их стоимость, настройка программного обеспечения, программирование в Arduino IDE, ремонт в случае аварии
Огромное внимание автор уделяет типичным ошибкам, которые совершают начинающие конструкторы. Подробно изложен процесс отладки системы ODS, беспроводного канала Bluetooth и различных навигационных систем
Имеются рекомендации по выбору оборудования FPV, обзор программ для ПК и телефонов, которые используются при работе коптера.
Что такое Arduino
К сожалению некоторые начинающие радиолюбители считают Arduino микроконтроллером, но это не совсем так. Давайте попробуем разобраться что же это.
Arduino представляет собой платформу разработки с открытым исходным кодом, которая состоит из простого в использовании оборудования и среды программирования. Наиболее распространенным типом оборудования является Arduino UNO, а среда программирования называется Arduino IDE. Кроме Arduino UNO существует еще достаточно много аналогичных плат — Arduino Mega, nano, mini, но в данной статье в целях обучения мы будем использовать именно Arduino UNO. А Arduino IDE – это как раз та программная среда, с помощью которой мы будем программировать плату Arduino UNO.
Программное обеспечение (IDE)
Программное обеспечение, используемое для программирования Arduino, представляет собой интегрированную среду разработки Arduino IDE. IDE представляет собой Java приложение, которое работает на множестве различных платформ, включая системы PC, Mac и Linux. Она разработана для начинающих, которые не знакомы с программированием. Она включает в себя редактор, компилятор и загрузчик. Также в IDE включены библиотеки кода для использования периферии, например, последовательных портов и различных типов дисплеев. Программы для Arduino называются «скетчами», и они написаны на языке, очень похожем на C или C++.
Язык программирования Ардуино
Когда у вас есть на руках плата микроконтроллера и на компьютере установлена среда разработки, вы можете приступать к написанию своих первых скетчей (прошивок). Для этого необходимо ознакомиться с языком программирования.
Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:
- После каждой инструкции необходимо ставить знак точки с запятой (;)
- Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
- Так же необходимо указывать тип данных перед объявлением переменной.
- Комментарии обозначаются: // Строчный и /* блочный */
Подробнее о типах данных, функциях, переменных, операторах и языковых конструкциях вы можете узнать на странице по программированию Arduino. Вам не нужно заучивать и запоминать всю эту информацию. Вы всегда можете зайти в справочник и посмотреть синтаксис той или иной функции.
Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().
Функция setup
Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():
Функция loop
Функция loop() выполняется после функции setup(). Loop в переводе с английского значит «петля». Это говорит о том что функция зациклена, то есть будет выполняться снова и снова. Например микроконтроллер ATmega328, который установлен в большинстве плат Arduino, будет выполнять функцию loop около 10 000 раз в секунду (если не используются задержки и сложные вычисления). Благодаря этому у нас есть большие возможности.
Простые проекты Ардуино
Давайте начнем наш обзор с традиционно самых простых, но очень важных проектов, включающих в себя минимальное количество элементов: светодиоды, резисторы и, конечно же, плату ардуино. Все примеры рассчитаны на использование Arduino Uno, но с минимальными изменениями будут работать на любой плате: от Nano и Mega до Pro, Leonardo и даже LilyPad.
Проект с мигающим светодиодом – маячок
Все без исключения учебники и пособия для начинающих по ардуино стартуют с примера мигания светодиодом. Этому есть две причины: такие проекты требуют минимального программирования и их можно запустить даже без сборки электронной схемы – уж что-что, а светодиод есть на любой плате ардуино. Поэтому и мы не станем исключением – давайте начнем с маячка.
Нам понадобится:
- Плата Ардуино Uno, Nano или Mega со встроенным светодиодом, подключенным к 13 пину.
- И все.
Что должно получиться в итоге:
Светодиод мигает – включается и выключается через равные промежутки времени (по умолчанию – 1 сек). Скорость включения и выключения можно настраивать.
Схема проекта
Схема проекта довольно проста: нам нужен только контроллер ардуино со встроенным светодиодом, подсоединенным к пину 13. Именно этим светодиодом мы и будем мигать. Подойдут любые популярные платы: Uno, Nano, Mega и другие.
Подсоединяем Arduino к компьютеру, убеждаемся, что плата ожила и замигала загрузочными огоньками. Во многих платах «мигающий» скетч уже записан в микроконтроллер, поэтому светодиод может начать мигать сразу после включения.
С помощью такого простого проекта маячка вы можете быстро проверить работоспособность платы: подключите ее к компьютеру, залейте скетч и по миганию светодиода сразу станет понятно – работает плата или нет.
Программирование в проекте Ардуино
Если в вашей плате нет загруженного скетча маячка – не беда. Можно легко загрузить уже готовый пример, доступный в среде программирования Ардуино.
Открываем программу Arduino IDE, убеждаемся, что выбран нужный порт.
Проверка порта Ардуино – выбираем порт с максимальным номером
Затем открываем уже готовый скетч Blink – он находится в списке встроенных примеров. Откройте меню Файл, найдите подпункт с примерами, затем Basics и выберите файл Blink.
Открываем пример Blink в Ардуино IDE
В открытом окне отобразится исходный код программы (скетча), который вам нужно будет загрузить в контроллер. Для этого просто нажимаем на кнопку со стрелочкой.
Кнопки компиляции и загрузки скетча
Информация в Arduino IDE – Загрузка завершена
Ждем немного (внизу можно отследить процесс загрузки) – и все. Плата опять подмигнет несколькими светодиодами, а затем один из светодиодов начнет свой размеренный цикл включений и выключений. Можно вас поздравить с первым загруженным проектом!
Проект маячка со светодиодом и макетной платой
В этом проекте мы создадим мигающий светодиод – подключим его с помощью проводов, резистора и макетной платы к ардуино. Сам скетч и логика работы останутся таким же – светодиод включается и выключается.
Графическое изображение схемы подключения доступно на следующем рисунке:
Другие идеи проектов со светодиодами:
- Мигалка (мигаем двумя свтодиодами разных цветов)
- Светофор
- Светомузыка
- Сонный маячок
- Маячок – сигнализация
- Азбука Морзе
Подробное описание схемы подключения и логики работы программы можно найти в отдельной статье, посвященной проектам со светодиодами.
С чего начать изучать Ардуино с нуля
Что такое Ардуино, как им пользоваться
Книга или учебник по Arduino на русском — это лишь теория и без практики здесь не обойтись. До того, как вы приступите к программированию микроконтроллера необходимо получить базовые знания по схемотехнике. Следует изучить основные радиоэлементы, их назначение, принцип работы, условные обозначения, как собирать электрические схемы. Для этого поможет следующая информация на нашем сайте:
- Основные законы электричества
- Радиоэлементы с фото и названиями
- Как собирать схемы на макетной плате
- Характеристики контроллеров Arduino
Для того чтобы программировать микроконтроллер Arduino следует установить на компьютере необходимое программное обеспечение, а также иметь всегда под рукой справочники по языку Arduino и описание ошибок в программе (скетче) для микроконтроллеров (они всегда будут появляться первое время)
Для этого обратите внимание на следующую очень полезную информацию на нашем сайте:
- Установка Arduino на Windows
- Установка библиотек в Arduino
- Язык программирования Arduino
- Ошибки при компиляции Arduino
Защита от помех DC
Раздельное питание
Один из лучших способов защититься от помех по питанию – питать силовую и логическую части от отдельных источников питания: хороший малошумящий источник питания на микроконтроллер и модули/сенсоры, и отдельный на силовую часть. В автономных устройствах иногда ставят отдельный аккумулятор на питание логики, и отдельный мощный – на силовую часть, потому что стабильность и надёжность работы очень важна.
Искрогасящие цепи DC
При размыкании контактов в цепи питания индуктивной нагрузки происходит так называемый индуктивный выброс, который резко подбрасывает напряжение в цепи вплоть до того, что между контактами реле или выключателя может проскочить электрическая дуга (искра). В дуге нет ничего хорошего – она выжигает частички металла контактов, из за чего они изнашиваются и со временем приходят в негодность. Также такой скачок в цепи провоцирует электромагнитный выброс, который может навести в электронном устройстве сильные помехи и привести к сбоям или даже поломке! Самое опасное, что индуктивной нагрузкой может являться сам провод: вы наверняка видели, как искрит обычный выключатель света в комнате. Лампочка – не индуктивная нагрузка, но идущий к ней провод имеет индуктивность. Для защиты от выбросов ЭДС самоиндукции в цепи постоянного тока используют обыкновенный диод, установленный встречно-параллельно нагрузке и максимально близко к ней. Диод просто закоротит на себя выброс, и все дела:
Где VD – защитный диод, U1 – выключатель (транзистор, реле), а R и L схематично олицетворяют индуктивную нагрузку. Диод нужно ОБЯЗАТЕЛЬНО ставить при управлении индуктивной нагрузкой (электромотор, соленоид, клапан, электромагнит, катушка реле) при помощи транзистора, то есть вот так:
При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx) или диоды Шоттки (например серии 1N58xx), максимальный ток диода должен быть больше или равен максимальному току нагрузки.
Фильтры
Если силовая часть питается от одного источника с микроконтроллером, то помехи по питанию неизбежны. Простейший способ защитить МК от таких помех – конденсаторы по питанию как можно ближе к МК: электролит 6.3V 470 uF (мкФ) и керамический на 0.1-1 мкФ, они сгладят короткие просадки напряжения. Кстати, электролит с низким ESR справится с такой задачей максимально качественно.
Ещё лучше с фильтрацией помех справится LC фильтр, состоящий из индуктивности и конденсатора. Индуктивность нужно брать с номиналом в районе 100-300 мкГн и с током насыщения больше, чем ток нагрузки после фильтра. Конденсатор – электролит с ёмкостью 100-1000 uF в зависимости опять же от тока потребления нагрузки после фильтра. Подключается вот так, чем ближе к нагрузке – тем лучше:
Подробнее о расчёте фильтров можно почитать здесь.
Использование библиотеки Narcoleptic
Эта библиотека позволяет вводить микроконтроллер в режим сна на определенное время с помощью одной функции – Narcoleptic.delay();. Аргументом данной функции является время в миллисекундах – используется точно так же как и стандартная функция delay();.
Рассмотрим ту же программу что и ранее, но с использованием данной библиотеки:
#include <Narcoleptic.h> void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, LOW); Narcoleptic.delay(1000); digitalWrite(LED_BUILTIN, HIGH); Narcoleptic.delay(120); }
Как видно, код стал значительно проще, и в случае, когда нужны простые паузы между полезными действиями – эта библиотека является самым простым и удобным решением.
С чего начать работу с Ардуино
Если вы делаете первые шаги в мире Ардуино, то советуем вам заранее приготовиться к двойному потоку знаний. Во-первых, вам придется разобраться с тем, что такое контроллер Arduino, какие устройства можно к нему подключить и как это сделать. Потребуется разобраться с основами электроники. Во-вторых, придется научиться навыкам программирования в Arduino. Для профессиональной работы нужны знания C++, для начинающих доступны многочисленные графические среды с блочным программированием. Например, mBlock или ArduBlock. При отсутствии реальной платы можно воспользоваться одним из эмуляторов ардуино.
Все это потребует и времени, и знаний, но результатом станет удивительное ощущение восторга от сделанных своими руками умных устройств
Счастья от того, что вы стали почти волшебником, приближаясь шаг за шагом к вершинам технического мастерства. Крайне важно, чтобы теория сочеталась с практикой и вы как можно быстрее переходили от чтения статей к созданию реальных устройств
Мобильные роботы на базе Arduino. Момот М.В.
Мобильные роботы на базе Arduino
Аннотация
Пособие для начинающих изобретателей создано в виде практических опытов по созданию роботов своими руками. Модель реализуется на базе платформы Ардуино. Проекты расположены по уровню сложности от простых к интеллектуальным. В книге описано, как управлять различными моторами, как правильно собирать робота, как его программировать. Расписаны основные функции и способы управления роботом. Собранное изделие способно обходить препятствия, проходить лабиринты, определять цвета, ориентироваться по компасу. Дополнительно с книгой идет архив с деталями робота, которые распечатываются на 3D принтере, рисунки, коды и нужные библиотеки.
Прототипирование/макетирование
Для сборки макета нам необходимы следующие элементы: светодиод, резистор, проводки (перемычки), макетная плата(Breadboard). Для того, чтоб ничего не спалить, и для того, чтоб всё успешно работало, надо разобраться со светодиодом. У него есть две «лапки». Короткая – минус, длинная – плюс. На короткую мы будем подключать «землю» (GND) и резистор (для того, чтоб уменьшить силу тока, которая поступает на светодиод, чтоб не спалить его), а на длинную мы будем подавать питание (подключим к 13 пину). После подключения, загрузите на плату скетч, если вы ранее этого не сделали. Код остаётся тот же самый.
Начало работы с Ардуино
Для того, что бы начать использовать Arduino необходимо приобрести плату Arduino или стартовый набор Arduino. Я советую выбрать стартовый комплект ардуино, так как он включает в себя не только микроконтроллер ардуино, но и беспаечную макетную плату, соединительные провода, кнопки, светодиоды и дополнительные детали. С таким набором вы сможет выполнить примеры из уроков по Arduino для начинающих. Это позволит вам быстро разобраться с принципами работы с Arduino.
После прохождения уроков вы будите знать как программировать Arduino, как обмениваться сигналами с другими модулями и устройствами. Вы сможете проектировать, а так же создавать ваши собственные устройства.
Arduino IDE
Для начала работы с Ардуино вам понадобится специальное программное обеспечение. Это среда для разработки прошивок Arduino IDE. В этой программе легко и удобно писать скетчи и загружать их на ваш микроконтроллер Ардуино. В среде разработки уже предустановленно большое количество примеров и дополнительных библиотек.
Ссылки на скачивание, инструкции по установке и настройке среды разработки есть на странице Arduino IDE.
Codim
Arduino позволяет детям и взрослым выйти за рамки виртуального компьютерного мира в физический и взаимодействовать с ним. Устройства на базе Arduino могут получать информацию об окружающей среде посредством различных датчиков, а также могут управлять различными устройствами.
На курсе учащийся научится:
- Основам электроники
- Самостоятельно собирать электрические схемы
- Программировать на языке Си++
- Самостоятельно собирать и программировать роботов
- Создавать устройства интернета вещей
- Управлять роботом и устройствами интернета вещей с помощью смартфона
- Воплощать свои самые фантастические идеи в жизнь
- Технической грамотности
- Разовьет образное мышление
- Раскроет свой творческий потенциал.
Центр при МГТУ им. Баумана
Платформа Arduino имеет открытую архитектуру и простой язык программирования. Она легко программируется через USB. Подключая к платформе разные датчики, вы можете получать информацию об окружающем мире (к примеру, температуру воздуха в разных частях города), отправлять данные на компьютер, а также управлять другими подключенными элементами.
Зная механизм работы устройств на Arduino, можно конструировать робототехнику и разную электронику. Изучение платформы помогает понять, по какому принципу работает «умный» дом.
Во время занятий вы получите базовые представления о программировании микроконтроллеров, робототехнике и электронике. Вы увидите, что представляют собой простейшие программы для микроконтроллеров и соберете рабочие схемы ЖК-дисплеев, температурных датчиков, систем светодиодов и многого другого. Лабораторные работы занимают 70% занятий – у вас будет много времени на увлекательные эксперименты и открытия.
Курс будет полезен:
- всем, кто хочет преподавать робототехнику в школе или вузе;
- всем, кто интересуется робототехникой и электроникой;
- всем, кто занимается автоматизацией в работе или быту;
- всем, кому интересна идея «интернета вещей».
Этапы настройки Arduino
- Во-первых, установите IDE. Вы можете скачать IDE с сайта Arduino.
- Установите программное обеспечение на свой компьютер.
- Теперь запустите .exe файл Arduino IDE. IDE выглядит так:
- Напишите в редакторе кода свою программу и загрузите её в Arduino. Чтобы сделать это, необходимо подключить Arduino к компьютеру, используя USB кабель.
- В IDE выберите тип Arduino, который вы используете, через меню Tools (Инструменты) → Boards (Платы).
- Теперь проверьте свой код, нажав на значок «галки» вверху окна IDE, затем нажмите на соседний значок «стрелка вправо», чтобы скомпилировать и загрузить код в Arduino.
Внимание: возможно, вам понадобится установить драйвера, если ваша система не обнаружит Arduino
Функции
Разбиение на сегменты кода функциями позволяет создавать части кода, которые выполняют определенные задания. После выполнения происходит возврат в место, откуда была вызвана функция. Причиной создания функции является необходимость выполнять одинаковое действие несколько раз.
Для программистов, работающих с BASIC, функции в Arduino позволяют использовать подпрограммы (GOSUB в BASIC).
Разделения кода на функции имеет ряд преимуществ:
- Функции позволяют организовать программу. Очень часто помогают заранее составить концепцию программы.
- Функции кодируют одно действие в одном месте программы. Далее необходимо только отладить код функции.
- Функции сокращают шансы на появление ошибки при необходимости изменения кода.
- Функции сокращают текст скетчей и делают его компактным, т.к. некоторые секции используются много раз.
- Функции облегчают использование кода в других программах делая его модульным. В этом случае функции обладают еще одним небольшим преимуществом, делая код программы легким для чтения.
Существуют две обязательные функции в скетчах Arduino setup() и loop(). Другие функции должны создаваться за скобками этих функций. В следующем примере будет создана простая функция умножения двух чисел.
Пример
Для вызова функции умножения ей передаются параметры данных:
void loop(){ int i = 2; int j = 3; int k; k = myMultiplyFunction(i, j); // k содержит 6 }
Созданную функцию необходимо задекларировать вне скобок любой другой функции, таким образом «myMultiplyFunction()» может стоять выше или ниже функции «loop()».
Весь скетч будет выглядеть следующим образом:
void setup(){ Serial.begin(9600); } void loop(){ int i = 2; int j = 3; int k; k = myMultiplyFunction(i, j); // k содержит 6 Serial.println(k); delay(500); } int myMultiplyFunction(int x, int y){ int result; result = x * y; return result; }
Еще один пример
Следующая функция будет считывать данные с датчика функцией analogRead() и затем рассчитывать среднее арифметическое. Затем созданная функция будет масштабировать данные по 8 битам (0-255) и инвертировать их. // датчик подключен к выводу 0
int ReadSens_and_Condition(){ int i; int sval; for (i = 0; i < 5; i++){ sval = sval + analogRead(0); // сенсор на аналоговом входе 0 } sval = sval / 5; // среднее sval = sval / 4; // масштабирование по 8 битам (0 - 255) sval = 255 - sval; // инвертирование выходного значения return sval; }
Вызов функции осуществляется присвоением ее переменной.
int sens; sens = ReadSens_and_Condition();
AlexGyver
Сайт для любителей техники предоставляет бесплатные текстовые уроки — максимально подробные уроки по программированию Arduino с разбором всех тонкостей и особенностей языка.
Есть также бесплатные видеоуроки. Цикл охватывает все стандартные операторы и функции Ардуино и построен таким образом, что от выпуска к выпуску у зрителя идёт плавное формирование “базы”, каждый последующий урок (видео урок) содержит в себе информацию из предыдущих, то есть уроки усложняются и становятся комплексными.
Что узнает ребенок:
- Что такое Ардуино и зачем она нужна?
- Что умеет Ардуино и что можно сделать на её основе?
- Подключение датчиков к Ардуино
- Питание Arduino от различных источников электричества
- Математические операторы для работы с переменными
- Особенности переменных и констант
- Общение между компьютером и Arduino Через COM порт
- Какие существуют типы реле? В чём достоинства и недостатки?
- Как подключить реле и как им управлять?
И это еще не все. 16 видеоуроков расскажут все нюансы о программировании на Arduino.
Проекты Arduino для начинающих
Если посмотреть на все проекты ардуино, информация о которых доступна в интернете, то можно их разделить на несколько основных групп:
Начальные учебные проекты, не претендующие на какое-то важное практическое использование, но помогающие разобраться в разных аспектах платформы.
Мигающие светодиоды – маячок, мигалка, светофор и другие.
Проекты с датчиками: от простейших аналоговых до цифровых, использующих разнообразные протоколы для обмена данными.
Устройства регистрации и отображения информации.
Машины и устройства с сервоприводами и шаговыми двигателями.
Устройства с использованием различных беспроводных видов связи и GPS.
Проекты для автоматизации жилья – умные дома на Arduino, а также отдельные элементы управления домашней инфраструктурой.
Разнообразные автономные машины и роботы.
Проекты для исследования природы и автоматизации сельского хозяйства
Необычные и креативные – как правило, развлекательные проекты.
По каждой из этих групп можно найти множество самых разнообразных материалов в книгах и на сайтах. В этой статье мы начнем знакомство с описанием наиболее простых проектов, с которых рекомендуется стартовать начинающим.
Как создавать проект на ардуино
Проект Ардуино – это всегда сочетание электронной схемы, некоторых связанных друг с другом аппаратных и механических устройств, системы питания и программного обеспечения, управляющего всем этим хаосом. Поэтому приступая к работе, вы должны твердо понимать, что создавая устройство в одиночестве, вы должны будете стать и программистом, и электронщиком, и конструктором.
Если речь идет не об учебном проекте, то вы обязательно столкнетесь со следующими этапами реализации с такими вот задачами:
- Придумать что-то, что будет полезно и (или) интересно для окружающих. Даже самый простой проект несет какую-то пользу – как минимум, он помогает изучать новые технологии.
- Собрать схему, подключить модули друг к другу и к контроллеру.
- Написать скетч (программу) в специальной среде и загрузить ее в контроллер.
- Проверить, как все работает вместе, и исправить ошибки.
- После тестирования – готовиться к созданию готового устройства. Это означает, нужно собрать устройство в каком-то пригодном для эксплуатации корпусе, предусмотреть систему питания, связи с окружающей средой.
- Если вы собираетесь распространять созданные вами устройства, то придется также заняться дизайном, системой транспортировки, задуматься о безопасности использования необученными пользователями и обучением этих самых пользователей.
- Если ваше устройство работает, оно протестировано и обладает какими-то преимуществами перед другими решениями, то можно попытаться сделать из вашего инженерного уже бизнес-проект, попробовать привлечь инвестиции.
Каждый из этих этапов создания проекта достоин отдельной статьи
Но мы уделим главное внимание этапам сборки электронных схем (основы электроники) и программирования контроллера
Электронные схемы
Электронные схемы обычно собираются с применением макетных плат, скрепляющих элементы друг с другом без пайки и скрутки. О том, как работают модули и схемы подключения можно узнать на нашем сайте. Обычно в описании проекта указаны способы монтажа деталей. Но для большинства популярных модулей есть уже десятки готовых схем и примеров в интернете.
Программирование
Создание и прошивка скетчей производится в специальной программе – среде программирования. Наиболее популярной версией такой среды является Arduino IDE. На нашем сайте вы сможете найти информацию о том, как скачать, установить и настроить эту программу.
Что купить для изучения Ардуино с нуля
Совсем маленьким детям до 10 лет рекомендуем для начала купить наборы по сборке простых электрических схем без программирования, например, Знаток (есть различные комплектации конструктора) или Микроник. Если у ребенка появится интерес к электронике, то уже можно приобретать бесплатные учебники и заказывать стартовые наборы (эти комплекты в интернет магазинах называют Starter KIT).
Наши советы: с чего начать изучать Arduino
Для детей можно заказать стартовые наборы на Алиэкспресс, где есть все необходимое для начала. Также можно посмотреть в интернете русские наборы на Arduino от Амперки и других производителей. Они будут стоить значительно дороже, но во многих есть инструкции на русском языке и уроки. С другой стороны, ничего не мешает выполнять уроки по Arduino на русском, используя недорогой набор из Китая.
Программирование Ардуино
Язык программирования устройств Ардуино основан на C/C++. Он прост в освоении, и на данный момент Arduino — это, пожалуй, самый удобный способ программирования устройств на микроконтроллерах.
Базовые и полезные знания, необходимые для успешного программирования под платформу Arduino:
|
|
Справочник языка Ардуино
Язык Arduino можно разделить на три раздела:
Операторы
Управляющие операторы
Синтаксис
Арифметические операторы
Операторы сравнения
Логические операторы
Унарные операторы
|
ДанныеКонстанты
Типы данных
Преобразование типов данных
Область видимости переменных и квалификаторы
|
ФункцииЦифровой ввод/вывод
Аналоговый ввод/вывод
Дополнительные фунции ввода/вывода
Работа со временем
Математические функции
Тригонометрические функции
Генераторы случайных значений
Внешние прерывания
Функции передачи данныхSerial |
Библиотеки Arduino
Servo — библиотека управления сервоприводами.EEPROM — чтение и запись энергонезависимой памяти микроконтроллера.SPI — библиотека, реализующая передачу данных через интерфейс SPI.Stepper — библиотека управления шаговыми двигателями.
Программирование Arduino
Теперь, когда необходимая нам схема собрана, мы можем начать программирование платы Arduino UNO. Полный текст программы будет приведен в конце статьи, в этом разделе будет дано объяснение некоторых участков кода этой программы.
В каждой программе для Arduino должны обязательно присутствовать две функции – это функции void setup () и void loop (), иногда их называют «абсолютным минимумом», необходимым для написания программы. Все операции, которые мы запишем внутри void setup (), исполнятся только один раз, а операции, которые мы запишем внутри void loop () – будут исполняться снова и снова. Пример этих функций показан в коде ниже – именно в таком виде они создаются когда вы выбираете пункт меню File -> New.
Arduino
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
1 |
voidsetup(){ // put your setup code here, to run once: } voidloop(){ // put your main code here, to run repeatedly: } |
Начнем писать программу в функции setup (). Обычно в этой функции объявляются названия пинов (контактов). В нашей программе нам необходимо объявить всего два контакта: контакт 2 в качестве входного контакта и контакт 3 в качестве выходного контакта. Это можно сделать с помощью следующих строчек кода:
Arduino
pinMode(2,INPUT);
pinMode (3,OUTPUT);
1 |
pinMode(2,INPUT); pinMode(3,OUTPUT); |
Но здесь необходимо внести небольшое изменение в программу – нам желательно чтобы контакт 2, который мы объявили в качестве входного контакта, никогда не был бы в «плавающем» состоянии. Это означает что входной контакт должен быть всегда подсоединен либо к +5 В, либо к земле. А в нашем случае при нажатии кнопки он будет подсоединен к земле, а при отжатой кнопке он будет находиться в плавающем состоянии. Чтобы исключить это нам необходимо задействовать внутренний подтягивающий резистор, который находится внутри микроконтроллера ATmega 328 (то есть снаружи мы этот резистор не видим). Для его задействования необходимо написать соответствующую строчку кода в программе.
С помощью этой строчки кода контакт 2 будет подключаться через подтягивающий резистор к напряжению +5 В всегда когда он не подсоединен к земле. То есть мы должны в одной из написанных нами строчек кода изменить слово INPUT на слово INPUT_PULLUP как показано ниже.
Arduino
pinMode(2,INPUT_PULLUP);
1 | pinMode(2,INPUT_PULLUP); |
Теперь, когда мы закончили с функцией setup (), перейдем к функции loop (). В этой функции мы должны проверять не подсоединен ли контакт 2 к земле (то есть на его входе низкий уровень – LOW) и если он подсоединен в земле, то мы должны зажечь светодиод при помощи подачи на контакт 3 высокого уровня (HIGH). А если контакт 2 не подсоединен к земле (то есть кнопка не нажата), то мы должны держать светодиод в выключенном состоянии при помощи подачи на контакт 3 низкого уровня (LOW). В программе это будет выглядеть следующим образом:
Arduino
if (digitalRead(2) == LOW)
{
digitalWrite(3,HIGH);
}
else
{
digitalWrite(3,LOW);
}
1 |
if(digitalRead(2)==LOW) { digitalWrite(3,HIGH); } else { digitalWrite(3,LOW); } |
В этих строчках кода оператор digitalRead() используется для проверки статуса (состояния) входного контакта. Если контакт подсоединен к земле, то оператор digitalRead() возвратит значение LOW, а если оператор подсоединен к +5 В, то оператор возвратит значение HIGH.
Аналогично, оператор digitalWrite() используется для установки состояния выходного контакта. Если мы установим контакт в состояние HIGH, то на его выходе будет напряжение +5 В, а если мы установим контакт в LOW, то на его выходе будет 0 В.
Таким образом в нашей программе когда мы нажимаем кнопку на контакт 2 будет подана земля и, соответственно, на контакт 3 мы подаем высокий уровень +5 В (HIGH) чтобы зажечь светодиод. Если условие не выполняется – то есть на контакт 2 не подана земля, то мы на контакт 3 подаем низкий уровень 0 В (LOW) чтобы выключить светодиод.
На этом наша программа закончена, теперь загрузим код программы на нашу плату Arduino таким же образом как ранее мы загружали код программы мигания светодиодом.