Команды программирования ардуино. Программирование Arduino

Подробно Arduino язык программирования для начинающих представлен в таблице далее. Микроконтроллер Arduino программируется на специальном языке программирования, основанном на C/C ++. Язык программирования Arduino является разновидностью C++, другими словами, не существует отдельного языка программирования для Arduino. Скачать книгу PDF можно в конце страницы.

В Arduino IDE все написанные скетчи компилируются в программу на языке C/C++ с минимальными изменениями. Компилятор Arduino IDE значительно упрощает написание программ для этой платформы и создание устройств на Ардуино становится намного доступней людям, не имеющих больших познаний в языке C/C++. Дадим далее небольшую справку с описанием основных функций языка Arduino с примерами.

Подробный справочник языка Ардуино

Язык можно разделить на четыре раздела: операторы, данные, функции и библиотеки.

Язык Arduino Пример Описание

Операторы

setup() void setup ()
{
pinMode (3, INPUT );
}
Функция используется для инициализации переменных, определения режимов работы выводов на плате и т.д. Функция запускается только один раз, после каждой подачи питания на микроконтроллер.
loop() void loop ()
{
digitalWrite (3, HIGH );
delay(1000);
digitalWrite (3, LOW );
delay(1000);
}
Функция loop крутится в цикле, позволяя программе совершать вычисления и реагировать на них. Функции setup() и loop() должны присутствовать в каждом скетче, даже если эти операторы в программе не используются.

Управляющие операторы

if
if (x >
if (x < 100) digitalWrite (3, LOW );
Оператор if используется в сочетании с операторами сравнения (==, !=, <, >) и проверяет, достигнута ли истинность условия. Например, если значение переменной x больше 100, то включается светодиод на выходе 13, если меньше — светодиодвыключается.
if..else
if (x > 100) digitalWrite (3, HIGH );
else digitalWrite (3, LOW );
Оператор else позволяет cделать проверку отличную от указанной в if, чтобы осуществлять несколько взаимо исключающих проверок. Если ни одна из проверок не получила результат ИСТИНА, то выполняется блок операторов в else.
switch…case
switch (x)
{


case 3: break ;

}
Подобно if, оператор switch управляет программой, позволяя задавать действия, которые будут выполняться при разных условиях. Break является командой выхода из оператора, default выполняется, если не выбрана ни одна альтернатива.
for void setup ()
{
pinMode (3, OUTPUT );
}
void loop ()
{
for (int i=0; i <= 255; i++){
analogWrite (3, i);
delay(10);
}
}
Конструкция for используется для повторения операторов, заключенных в фигурные скобки. Например, плавное затемнение светодиода. Заголовок цикла for состоит из трех частей: for (initialization; condition; increment) — initialization выполняется один раз, далее проверяется условие condition, если условие верно, то выполняется приращение increment. Цикл повторяется пока не станет ложным условие condition.
while void loop ()
{
while (x < 10)
{
x = x + 1;
Serial.println (x);
delay (200);
}
}
Оператор while используется, как цикл, который будет выполняться, пока условие в круглых скобках является истиной. В примере оператор цикла while будет повторять код в скобках бесконечно до тех пор, пока x будет меньше 10.
do…while void loop ()
{
do
{
x = x + 1;
delay (100);
Serial.println (x);
}
while (x < 10);
delay (900);
}
Оператор цикла do…while работает так же, как и цикл while. Однако, при истинности выражения в круглых скобках происходит продолжение работы цикла, а не выход из цикла. В приведенном примере, при x больше 10 операция сложения будет продолжаться, но с паузой 1000 мс.
break
continue
switch (x)
{
case 1: digitalWrite (3, HIGH );
case 2: digitalWrite (3, LOW );
case 3: break ;
case 4: continue ;
default : digitalWrite (4, HIGH );
}
Break используется для принудительного выхода из циклов switch, do, for и while, не дожидаясь завершения цикла.
Оператор continue пропускает оставшиеся операторы в текущем шаге цикла.

Синтаксис

;
(точка с запятой)

digitalWrite (3, HIGH );
Точка с запятой используется для обозначения конца оператора. Забытая в конце строки точка с запятой приводит к ошибке при компиляции.
{}
(фигурные скобки)
void setup ()
{
pinMode (3, INPUT );
}
Открывающая скобка “{” должна сопровождаться закрывающей скобкой “}”. Непарные скобки могут приводить к скрытым и непонятным ошибкам при компиляции скетча.
//
(комментарий)
x = 5; // комментарий

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

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

  • датчики,
  • светодиоды,
  • двигатели,
  • сеть Интернет
  • и т.п.

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

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

Как его сделать мы разберем на одном из следующих уроков.

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

Скетчи Arduino

Собственно, программа для микроконтроллера данного типа называется sketch . Состоит любая такая программа непосредственно из двух главных функций.

Setup

Setup() – предусмотрено, что внутри данной функции, пользователь сможет задавать все ключевые настройки.

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

Запуск осуществляется строго один раз в течение всего скетча, когда отмечается сам старт выполнения данной программы.

Loop

Loop() – представляет собой основную функцию, которая осуществляется непосредственно после запуска (как раз в этом случае используется setup() ).

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

Примеры скетчей

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

Пример 1

Одним из интересных скетчей можно отображать само время работы контроллера, в дальнейшем принятие команды «blink», она предусмотрена для инициализации процедуры мигания светодиодных элементов.

Фактически, ничего особенно полезного в скетче нет, но в нем организована и возможность случайного вывода некоторой фразы «Data Received», она может использоваться в дальнейшем непосредственно для тестирования и анализа установленных правил работы модульного элемента.

Пример 2

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

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

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

Пример 3

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

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

Примеры использования Arduino

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

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

Оценить проекты смогут даже домашние питомцы, к примеру, кошки. Поводом послужит автоматическая кормушка для котов , которая может быть разработана на основе обычного CD-плеера, например, и не только.

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

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

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

Это наиболее простой и недорогой вариант для начинающих, любителей и профессионалов. Процесс программирования проходит на языке Processing/Wiring, который осваивается быстро и легко и в основе которого лежит язык C++, а благодаря это сделать очень легко. Давайте рассмотрим, что такое Arduino, чем полезна для начинающих, её возможности и особенности.

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

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

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

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

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

Как купить Arduino?

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

Купить аналог можно на отечественном рынке или, к примеру, заказать из Китая. Многие знают про сайт АлиЭкспресс, например. Но начинающим свое знакомство с Ардуино лучше свою первую плату заказать в российском интернет-магазине. Со временем можно перейти на покупку плат и деталей в Китае. Срок доставки из этой страны составит от двух недель до месяца, а, например, стоимость большого кит-набора будет не более 60-70 долларов .

Стандартные наборы включают в себя как правило следующие детали:

  • макетная плата;
  • светодиоды;
  • резисторы;
  • батареи 9В;
  • регуляторы напряжения;
  • кнопки;
  • перемычки;
  • матричная клавиатура;
  • платы расширения;
  • конденсаторы.

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

Первые шаги по работе с платой 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 выглядит так:

  • установка IDE, которую можно загрузить ниже или или с сайта производителя ;
  • установка программного обеспечения на используемый ПК;
  • запуск файла Arduino;
  • вписывание в окно кода разработанную программу и перенос ее на плату (используется USB кабель);
  • в разделе IDE необходимо выбрать тип конструктора, который будет использоваться. Сделать это можно в окне «инструменты» - «платы»;
  • проверяете код и жмете «Дальше», после чего начнется загрузка в Arduino.
Версия Windows MacOS Linux
1.6.5 Zip
Installer
Installer 32 bits
64 bits
1.8.2 Zip
Installer
Installer 32 bits
64 bits
ARM
1.8.5 Zip
Installer
App
Installer 32 bits
64 bits
ARM

Набиваем руку

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

Самый простой проект, который вы можете сделать - заставить светодиод, который расположен на плате Ардуино напротив порта, мигал каждую секунду.

Для этого необходимо:

  • подключить конструктор к ПК,
  • открыть программу, в разделе «сервис» ищем блок «последовательный порт»
  • выбираем необходимый интервал
  • после чего необходимо добавить код, который есть в Arduino IDE в разделе "Примеры".

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

  • мигающий светодиод;
  • подключение и управление датчиком температуры;
  • подключение и управление датчиком движения;
  • подключение фоторезистора;
  • управление сервоприводом.

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

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

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

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

// пины подключенных устройств 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-машинку, управляемый вертолет, создать свой телефон, создать систему и т.д.

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

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

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

Сборка сложнейших схем и соединение плат может осуществляться без паяльника, а с помощью перемычек с разъёмными соединениями «папа» и «мама». Так могут подключаться как навесные элементы, так и платы расширения, которые на лексиконе ардуинщиков зовут просто «Шилды» (shield).

Какую первую плату Arduino купить новичку?

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

В отечественных магазинах на 2017 год её цена порядка 4-5 долларов. На современных моделях её сердцем является Atmega328.

Изображение платы ардуино и расшифровка функций каждого вывода, Arduino UNO pinout

Микроконтроллер на данной плате это длинна микросхема в корпусе DIP28, что говорит о том, что у него 28 ножек.

Следующая по популярности плата, стоит почти в двое дешевле предыдущей - 2-3 доллара. Это плата . Актуальные платы построены том же Atmega328, функционально они аналогичны с UNO, различия в размерах и решении согласования с USB, об этом позже подробнее. Еще одним отличием является то, что для подключения к плате устройств предусмотрены штекера, в виде иголок.

Количество пинов (ножек) этой платы совпадает, но вы можете наблюдать что микроконтроллер выполнен в более компактном корпусе TQFP32, в корпусе добавлены ADC6 и ADC7, другие две «лишних» ножки дублируют шину питания. Её размеры довольно компактные - примерно, как большой палец вашей руки.

Третья по популярности плата - это , на ней нет USB порта для подключения к компьютеру, как осуществляется связь я расскажу немного позже.

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

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

Если UNO удобна для макетирования, то Nano и Pro Mini удобны для финальных версий вашего проекта, потому что занимают мало места.

Как подключить Arduino к компьютеру?

Arduino Uno и Nano подключаются к компьютеру по USB. При этом нет аппаратной поддержки USB порта, здесь применено схемное решение преобразования уровней, обычно называемое USB-to-Serial или USB-UART (rs-232). При этом в микроконтроллер прошит специальный Arduino загрузчик, который позволяет прошиваться по этим шинам.

В Arduino Uno реализована эта вязь на микроконтроллере с поддержкой USB - ATmega16U2 (AT16U2). Получается такая ситуация, что дополнительный микроконтроллер на плате нужен для прошивки основного микроконтроллера.

В Arduino Nano это реализовано микросхемой FT232R, или её аналогом CH340. Это не микроконтроллер — это преобразователь уровней, этот факт облегчает сборку Arduino Nano с нуля своими руками.

Обычно драйвера устанавливаются автоматически при подключении платы Arduino. Однако, когда я купил китайскую копию Arduino Nano, устройство было опознано, но оно не работало, на преобразователе была наклеена круглая наклейка с данными о дате выпуска, не знаю нарочно ли это было сделано, но отклеив её я увидел маркировку CH340.

До этого я не сталкивался с таким и думал, что все USB-UART преобразователи собраны на FT232, пришлось скачать драйвера, их очень легко найти по запросу «Arduino ch340 драйвера». После простой установки - всё заработало!

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

Что делать если на моей плате нет USB?

Плата Arduino Pro Mini имеет меньшие габариты. Это достигли тем что убрали USB разъём для прошивки и тот самый USB-UART преобразователь. Поэтому его нужно докупить отдельно. Простейший преобразователь на CH340 (самый дешевый), CPL2102 и FT232R, продаётся стоит от 1 доллара.

При покупке обратите внимание на какое напряжение рассчитан этот переходник. Pro mini бывает в версиях 3.3 и 5 В, на преобразователях часто расположен джампер для переключения напряжения питания.

При прошивке Pro Mini, непосредственно перед её началом необходимо нажимать на RESET, однако в преобразователях с DTR это делать не нужно, схема подключения на рисунке ниже.

Стыкуются они специальными клеммами «Мама-Мама» (female-female).

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

Как писать программы для Arduino?

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

Так выглядит интерфейс программы. Писать программы можно на специально разработанном для ардуино упрощенном языке C AVR, по сути это набор библиотек, который называют Wiring, а также на чистом C AVR. Использование которого облегчает код и ускоряет его работу.

В верхней части окна присутствует привычное меню, где можно открыть файл, настройки, выбрать плату, с которой вы работаете (Uno, Nano и много-много других) а также открыть проекты с готовыми примерами кода. Ниже расположен набор кнопок для работы с прошивкой, назначение клавиш вы увидите на рисунке ниже.

В нижней части окна - область для вывода информации о проекте, о состоянии кода, прошивки и наличии ошибок.

Основы программирования в Arduino IDE

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

#include biblioteka.h; // подключаем библиотеку с названием “Biblioteka.h”

#define peremennaya 1234; // Объявляем переменную со значением 1234

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

int led = 13; // создали переменную “led” и присвоили ей значение «13»

Программа может определять состояние пина, как 1 или 0. 1 -это логическая единица, если пин 13 равен 1, то напряжение на его физической ножке будет равняться напряжению питания микроконтроллера (для ардуино UNO и Nano - 5 В)

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

digitalWrite(led, high); //запись единицы в пин 13(мы его объявили выше) лог. Единицы.

Как вы могли понять обращение к портам идёт по нумерации на плате, соответствующей цифрой. Вот пример аналогичного предыдущему коду:

digitalWrite (13, high); // устанавливаем вывод 13 в едиицу

Часто востребованная функция задержки времени вызывается командой delay(), значение которой задаётся в миллисекундах, микросекунды достигаются с помощью

delayMicroseconds() Delay (1000); //микроконтроллер будет ждать 1000 мс (1 секунду)

Настройки портов на вход и выход задаются в функции void setup{}, командой:

pinMode(NOMERPORTA, OUTPUT/INPUT); // аргументы - название переменной или номер порта, вход или выход на выбор

Понимаем первую программу «Blink»

В качестве своеобразного «Hello, world» для микроконтроллеров является программа мигания светодиодом, давайте разберем её код:

В начале командой pinMode мы сказали микроконтроллеру назначить порт со светодиодом на выход. Вы уже заметили, что в коде нет объявления переменной “LED_BUILTIN”, дело в том, что в платах Uno, Nano и других с завода к 13 выводу подключен встроенный светодиод и он распаян на плате. Он может быть использован вами для индикации в ваших проектах или для простейшей проверки ваших программ-мигалок.

Далее мы установили вывод к которому подпаян светодиод в единицу (5 В), следующая строка заставляет МК подождать 1 секунду, а затем устанавливает пин LED_BUILTIN в значение нуля, ждет секунду и программа повторяется по кругу, таким образом, когда LED_BUILTIN равен 1 - светодиод(да и любая другая нагрузка подключенная к порту) включен, когда в 0 - выключен.

Читаем значение с аналогового порта и используем прочитанные данные

Микроконтроллер AVR Atmega328 имеет встроенный 10 битный аналогово цифровой преобразователь. 10 битный АЦП позволяет считывать значение напряжение от 0 до 5 вольт, с шагом в 1/1024 от всего размаха амплитуды сигнала (5 В).

Чтобы было понятнее рассмотрим ситуацию, допустим значение напряжения на аналоговом входе 2.5 В, значит микроконтроллер прочитает значение с пина «512», если напряжение равно 0 - «0», а если 5 В - (1023). 1023 - потому что счёт идёт с 0, т.е. 0, 1, 2, 3 и т.д. до 1023 - всего 1024 значения.

Вот как это выглядит в коде, на примере стандартного скетча «analogInput»

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

pinMode(ledPin, OUTPUT);

sensorValue = analogRead(sensorPin);

digitalWrite(ledPin, HIGH);

delay(sensorValue);

digitalWrite(ledPin, LOW);

delay(sensorValue);

Объявляем переменные:

    Ledpin - самостоятельно назначаем пин со встроенным светодиодом на выход и даём индивидуальное имя;

    sensorPin - аналоговый вход, задаётся соответственно маркировке на плате: A0, A1, A2 и т.д.;

    sensorValue - переменная для хранения целочисленного прочитанного значения и дальнейшей работы с ним.

Код работает так: sensorValue сохраняем прочитанное с sensorPin аналоговое значение (команда analogRead). - здесь работа с аналоговым сигналом заканчивается, дальше всё как в предыдущем примере.

Записываем единицу в ledPin, светодиод включается и ждем время равное значению sensorValue, т.е. от 0 до 1023 миллисекунд. Выключаем светодиод и снова ждем этот период времени, после чего код повторяется.

Таким образом положением потенциометра мы задаем частоту миганий светодиода.

Функция map для Арудино

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

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

В коде это выглядит так:

(map(analogRead(pot), 0, 1023, 0, 180));

Мы считываем значение с потенциометра (analogRead(pot))от 0 до 1023, а на выходе получаем числа от 0 до 180

Значения карты величин:

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

И схема подключения.

Выводы Ардуино - очень удобное средство для обучения работы с микроконтроллерами. А если использовать чистый C AVR, или как его иногда называют «Pure C» - вы значительно уменьшите вес кода, и его больше поместиться в память микроконтроллера, в результате вы получите отличную отладочную плату заводского исполнения с возможностью прошивки по USB.

Мне нравится ардуино. Жаль, что её многие опытные программисты микроконтроллеров безосновательно ругают, что она слишком упрощена. Упрощен, в принципе, только язык, но никто не заставляет пользоваться именно им, плюс вы можете прошить микроконтроллер через ICSP разъём, и залить туда тот код, который вам хочется, без всяких ненужных Вам бутлоадеров.

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

Еще больше информации про Ардуино и особенности его использования в различных схемах смотрите в электронной книге - .

Здравствуйте! Я Аликин Александр Сергеевич, педагог дополнительного образования, веду кружки «Робототехника» и «Радиотехника» в ЦДЮТТ г. Лабинска. Хотел бы немного рассказать об упрощенном способе программирования Arduino с помощью программы «ArduBloсk».

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

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

Даже всеми известные роботы LEGO, такие как NXT или EV3 нашим ученикам уже не так интересны с появлением в программировании Arduino программы ArduBloсk. Еще Arduino намного дешевле любых конструкторов LEGO и многие компоненты можно просто взять от старой бытовой электронной техники. Программа ArduBloсk поможет в работе не только начинающим, но и активным пользователям платформы Arduino.

Итак, что же такое ArduBloсk? Как я уже говорил, это графическая среда программирования. Практически полностью переведена на русский язык. Но в ArduBloсk изюминка не только это, но и то, что написанную нами программу ArduBloсk конвертирует в код Arduino IDE. Эта программа встраивается в среду программирования Arduino IDE, т. е. это плагин.

Ниже приведен пример мигающего светодиода и конвертированной программы в Arduino IDE. Вся работа с программой очень проста и разобраться в ней сможет любой школьник.

В результате работы на программе можно не только программировать Arduino, но и изучать непонятные нам команды в текстовом формате Arduino IDE, ну а если же «лень» писать стандартные команды - стоит быстрыми манипуляциями мышкой набросать простенькую программку в ArduBlok, а в Arduino IDE её отладить.

Чтобы установить ArduBlok, необходимо для начала загрузить и установить Arduino IDE с официального сайта Arduino и разобраться с настройками при работе с платой Arduino UNO. Как это сделать описано на том же сайте или же на Амперке , либо посмотреть на просторах YouTube. Ну, а когда со всем этим разобрались, необходимо скачать ArduBlok с официального сайта, вот . Последние версии скачивать не рекомендую, для начинающих они очень сложны, а вот версия от 2013-07-12 - самое то, этот файл там самый популярный.

Затем, скачанный файл переименовываем в ardublock-all и в папке «документы». Создаем следующие папки: Arduino > tools > ArduBlockTool > tool и в последнею кидаем скачанный и переименованный файл. ArduBlok работает на всех операционных системах, даже на Linux, проверял сам лично на XP, Win7, Win8, все примеры для Win7. Установка программы для всех систем одинакова.

Ну, а если проще, я приготовил на Mail-диске 7z архив , распаковав который найдете 2 папки. В одной уже рабочая программа Arduino IDE, а в другой папке содержимое необходимо отправить в папку документы.

Для того, чтобы работать в ArduBlok, необходимо запустить Arduino IDE. После чего заходим во вкладку Инструменты и там находим пункт ArduBlok, нажимаем на него - и вот она, цель наша.

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

В разделе «Управление» мы найдем разнообразные циклы.

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

В разделе «Числа/Константы» мы можем с вами выбрать цифровые значения или создать переменную, а вот то что ниже вряд ли будите использовать.

В разделе «Операторы» мы с вами найдем все необходимые операторы сравнения и вычисления.

В разделе «Утилиты» в основном используются значки со временем.

«TinkerKit Bloks»- это раздел для приобретенных датчиков комплекта TinkerKit. Такого комплекта у нас, конечно же, нет, но это не значит, что для других наборов значки не подойдут, даже наоборот - ребятам очень удобно использовать такие значки, как включения светодиода или кнопка. Эти знаки используются практически во всех программах. Но у них есть особенность - при их выборе стоят неверные значки обозначающие порты, поэтому их необходимо удалить и подставить значок из раздела «числа/константы» самый верхний в списке.

«DF Robot» - этот раздел используется при наличии указанных в нем датчиков, они иногда встречаются. И наш сегодняшний пример - не исключение, мы имеем «Регулируемый ИК выключатель» и «Датчик линии». «Датчик линии» отличается от того, что на картинке, так как он от фирмы Амперка. Действия их идентичны, но датчик от Амперки намного лучше, так как в нем имеется регулятор чувствительности.

«Seeedstudio Grove» - датчики этого раздела мной ни разу не использовались, хотя тут только джойстики. В новых версиях этот раздел расширен.

И последний раздел это «Linker Kit». Датчики, представленные в нем, мне не попадались.

Хочется показать пример программы на роботе, двигающемся по полосе. Робот очень прост, как в сборке, так и в приобретении, но обо всем по порядку. Начнем с его приобретения и сборки.

Вот сам набор деталей все было приобретено на сайте Амперка .

  1. AMP-B001 Motor Shield (2 канала, 2 А) 1 890 руб
  2. AMP-B017 Troyka Shield 1 690 руб
  3. AMP-X053 Батарейный отсек 3×2 AA 1 60 руб
  4. AMP-B018 Датчик линии цифровой 2 580 руб
  5. ROB0049 Двухколёсная платформа miniQ 1 1890 руб
  6. SEN0019 Инфракрасный датчик препятствий 1 390 руб
  7. FIT0032 Крепление для инфракрасного датчика препятствий 1 90 руб
  8. A000066 Arduino Uno 1 1150 руб

Для начала соберем колесную платформу и припаяем к двигателям провода.

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

Затем крепим на эти стойки плату Arduino UNO, но один болтик прикрутить не получиться - разъемы мешают. Можно, конечно, их выпаять, но это уже на ваше усмотрение.

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

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

Следующим устанавливаем Motor Shield или по другому можно назвать драйвер двигателей. В нашем случае обратите внимание на джампер. Мы не будем использовать отдельное питание для двигателей, поэтому он установлен в этом положение. Нижняя часть заклеивается изолентой, это чтобы не было случайных замыканий от USB разъема Arduino UNO, это на всякий случай.

Сверху Motor Shield устанавливаем Troyka Shield. Он необходим для удобства соединения датчиков. Все используемые нами сенсоры цифровые, поэтому датчики линии подключены к 8 и 9 порту, как их еще называют пины, а инфракрасный датчик препятствий подключен к 12 порту. Обязательно обратите внимание, что нельзя использовать порты 4, 5, 6, 7 так как оны используются Motor Shield для управлением двигателями. Я эти порты даже специально закрасил красным маркером, чтобы ученики разобрались.

Если вы уже обратили внимание, мной была добавлена черная втулка, это на всякий случай, чтобы установленный нами батарейный отсек не вылетел. И наконец, всю конструкцию мы фиксируем обычной резинкой.

Подключения батарейного отсека может быть 2-х видов. Первый подключение проводов к Troyka Shield. Также возможно подпаять штекер питания и подключать уже к самой плате Arduino UNO.

Вот наш робот готов. Перед тем как начать программировать, надо будет изучить, как все работает, а именно:
- Моторы:
Порт 4 и 5 используются для управления одним мотором, а 6 и 7 другим;
Скоростью вращения двигателей мы регулируя ШИМом на портах 5 и 6;
Вперед или назад, подавая сигналы на порты 4 и 7.
- Датчики:
У нас все цифровые, поэтому дают логические сигналы в виде 1 либо 0;
А что бы их отрегулировать, в них предусмотрены специальные регуляторы а при помощи подходящей отвертки их можно откалибровать.

Подробности можно узнать на Амперке . Почему тут? Потому что там очень много информации по работе с Arduino.

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

И программа конвертированная в Arduino IDE:

Void setup() { pinMode(8 , INPUT); pinMode(12 , INPUT); pinMode(9 , INPUT); pinMode(4 , OUTPUT); pinMode(7 , OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); } void loop() { if (digitalRead(12)) { if (digitalRead(8)) { if (digitalRead(9)) { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); } else { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 50); digitalWrite(7 , LOW); } } else { if (digitalRead(9)) { digitalWrite(4 , LOW); analogWrite(5, 50); analogWrite(6, 255); digitalWrite(7 , HIGH); } else { digitalWrite(4 , HIGH); analogWrite(5, 255); analogWrite(6, 255); digitalWrite(7 , HIGH); } } } else { digitalWrite(4 , HIGH); analogWrite(5, 0); analogWrite(6, 0); digitalWrite(7 , HIGH); } }

В заключении хочу сказать, эта программа просто находка для образования, даже для самообучения она поможет изучить команды Arduino IDE. Самая главная изюминка - это то, что более 50 значков установки, она начинает «глючить». Да, действительно, это изюминка, так как постоянное программирование только на ArduBlok не обучит вас программированию в Arduino IDE. Так называемый «глюк» дает возможность задумываться и стараться запоминать команды для точной отладки программ.

Желаю успехов.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: