Arduino обучение. Arduino для начинающих - стартовый набор или как начать ардуинить? Много фото и видео

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

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

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


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

Arduino с чего начать новичку

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


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

Итак, переходим к первому уроку Arduino схемы начинающих электронщиков.

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


Загрузив код, Ардуино позволяет нашей программе поучаствовать в инициализации системы. Для этого мы указываем микроконтроллеру команды, которые он выполнит в момент первоначальной загрузки и далее напрочь забудет об них (т.е. эти команды выполнятся Ардуинкой только один раз при старте). И именно с этой целью в нашем коде мы выделяем блок, в котором храняться эти команды. void setup() , а точнее в том пространстве внутри фигурных скобок этой функции, смотри программный скейтч.

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

Код скачать:
Скейтч с комментариями и пояснениями в файле 001-1_mig-led.ino

Функция void loop() это то место, куда мы помещаем команды, которые будут выполняться все то время, пока включена плата Arduino. Начав выполнение с первой команды, Ардуинка дойдет до самого конца и сразу же перейдет в начало, чтобы повторить ту же самую последовательность. И так бесконечное число раз, до тех пор, пока на плату поступает питание. По своей сути, void loop – это главная функция, точка входа в Arduino.


Функция delay (1000) задерживает обработку программы на 1000 милисекунд. Все это идет в вечном цикле loop() .

Главный вывод после восприятия нашей первой програмки на Ардуино: С помощью функций void loop и void setup мы передаем микроконтроллеру наши инструкции. Все то, что находится внутри блока setup выполнится всего один раз. Содержимое модуля loop будет повторятся в цикле до тех пор, пока останется включенным Arduino.

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

Вместо установки значения в HIGH, а затем в LOW, мы получим значение ledPin и проинвертируем его. Допустим если оно было HIGH, то станет LOW и т.п.

Второй вариант кода Ардуино для управления светодиодом здесь:

Затем можно заменить функцию delay() . Вместо нее, лучше использовать функцию millis() . Она возвращает количество миллисекунд, прошедшее с момента старта программы. Функция переполнится приблизительно через 50 суток работы программного кода.

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

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

Следует четко понимать, что простейшая функция delay приостанавливает выполнение всей программы Ардуино, делая ее неспособной выполнять какие-либо задачи в этот период времени. Вместо того, чтобы приостанавливать всю нашу программ, можно подсчитывать, сколько времени прошло до завершения действия. Это, прекрасно, реализуется с помощью функции millis(). Чтобы все было легко в понимании, мы рассмотрим следующий вариант мигания светодиодом без временной задержки.

Начало этой программы такое же как и у любого другого стандартного скетча Arduino.


В данном примере используется два цифровых ввода-вывода Arduino. Светодиод подсоединяется к 8 пину, который сконфигурирован как OUTPUT. К 9 через подключена кнопка, которая настроена как INPUT. Когда нажимаем на кнопку пин 9 устанавливается в HIGH, и программа переключает вывод 8 в HIGH, тем самым включая светодиод. Отпускание кнопки сбрасывает девятый вывод в состояние LOW. Затем код переключает вывод 8 в LOW, отключая световой индикатор.

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

Arduino UNO обладает тремя портами: B (цифровые входа/выхода с 8 по 13); C (аналоговые входа); D (цифровые входа/выхода с 0 по 7)

Каждый порт осуществляет управление тремя регистрами. Первый DDR задает чем будет являться pin входом или выходом. При помощи второго регистра PORT можно задать pin в состояние HIGH или LOW. При помощи третьего можно считать информацию о состояние ножек Arduino, в случае если они работает на вход.

Для работы схемы задействуем порт B. Для этого установим все ножки порта как цифровые выхода. У порта B всего 6 ножек. Биты регистра DDRB должны быть заданы в "1" , если пин будет использоваться как выход (OUTPUT), и в "0" , если пин планируем применять как вход (INPUT). Биты портов нумеруются с 0 по 7, но не всегда имеют все 8 пинов

Допустим: DDRB = B00111110; // установить ножки порта В с 1 по 5 как выхода, а 0 как вход.

В нашем схеме бегущих огней мы задействуем пять выходов: DDRB = B00011111 ; // установить пины порта В с 0 по 4 как выходы.

Для записи данных в порт В нужно задействовать регистр PORTB. Зажечь первый светодиод можно с помощью управляющей команды: PORTB = B00000001; , первый и четвертый LED: PORTB = B00001001 и т.п

Существует два оператора двоичного сдвига: влево и вправо. Оператор сдвига влево заставляет все биты данных переместиться влево, соответственно оператор сдвига вправо, перемещает их вправо.

Пример:

varA = 1; // 00000001
varA = 1 varA = 1 varA = 1

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

Конструктивно такой светодиод имеет один общий вывод и три вывода для каждого цвета. Ниже показана схема подключения RGB-светодиода к плате Arduino с общим катодом. Все резисторы используемые в схеме для подключения должны быть одного номинала от 220-270 Ом.


Для подключения с общим катодом схема подключения трехцветного led будет почти аналогична, за исключением того, что общий вывод будет подключен не к земле (gnd на устройстве), а к выводу +5 вольт. Выводы Красный, зеленый и синий в обоих случаях подключаются к цифровым выходам контроллера 9, 10 и 11.

К девятому пину Arduino UNO подключим внешний светодиод через сопротивление 220 Ом. Для плавного управления яркостью последнего применим функцию analogWrite() . Она обеспечивает вывод ШИМ-сигнала на ножку контроллера. Причем команду pinMode() вызывать не требуется. Т.к analogWrite(pin,value) включает два параметра: pin - номер ножки для вывода, value - значение от 0 до 255.

Код:
/*
Учебный пример начинающего ардуинщика, раскрывает возможности команды analogWrite() для реализации Fade-эффекта светодиода
*/
int brightness = 0; // яркость LED
int fadeAmount = 5; // шаг изменения яркости
unsigned long currentTime;
unsigned long loopTime;

Void setup() {
pinMode(9, OUTPUT); // устанавливаем 9 пин как выход
currentTime = millis();
loopTime = currentTime;
}

Void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 20)){
analogWrite(9, brightness); // устанавливаем значение на 9 выводе

Brightness = brightness + fadeAmount; // прибавляем шаг изменения яркости, которая установится в следующем цикле

// если достигли мин. или макс. значения, то идем в обратную сторону (реверс):
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
loopTime = currentTime;
}
}

Работа Arduino с энкодером

Энкодером предназначен для преобразования угла поворота в электрический сигнал. С него мы получаем два сигнала (А и В), которые противоположны по фазе. В этом учебном примере мы будем применять энкодер SparkFun COM-09117, имеющий двенадцать положений на один оборот (каждое положение ровно 30°). На приведенном ниже рисунке хорошо видно, как зависят выход А и В друг от друга при движении энкодера по часовой или против часовой стрелки.

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

При необходимости можно при помощи расчета частоты, определить насколько быстро происходит вращение энкодера.

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

Учитывая тот факт, что в самом быстром случае, мы можем повернуть ручку энкодера на 180° за 1/10 секунды, то это будет 6 импульсов за 1/10 секунды или 60 импульсов в одну секунду.

В реальности быстрее вращать не возможно. Так как нам необходимо отслеживать все полупериоды, то частота должна быть около 120 Герц. Для полной уверенности, возьмем 200 Гц.

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


По сигналам программного таймера необходимо постоянно осуществлять сравнение текущего значения выхода А энкодера с предыдущим значением. Если состояние меняется от положительного к нулю, то мы опрашиваем состояние выхода В. В зависимости от результата опроса состояния мы увеличиваем или снижаем счетчик значения яркости LED светодиода. Код программы с временным интервалом около 5 мс (200 Гц), представлен ниже:

Код начинающего ардуинщика:
/*
** Энкодер
** Для управлением яркостью светодиода применяется энкодер фирмы Sparkfun
*/

Int brightness = 120; // яркость светодиода, начинаем с половины
int fadeAmount = 10; // шаг изменения яркости
unsigned long currentTime;
unsigned long loopTime;
const int pin_A = 12; // pin 12
const int pin_B = 11; // pin 11
unsigned char encoder_A;
unsigned char encoder_B;
unsigned char encoder_A_prev=0;
void setup() {
// declare pin 9 to be an output:
pinMode(9, OUTPUT); // устанавливаем 9 вывод как выход
pinMode(pin_A, INPUT);
pinMode(pin_B, INPUT);
currentTime = millis();
loopTime = currentTime;
}
void loop() {
currentTime = millis();
if(currentTime >= (loopTime + 5)){ // проверяем состояния каждые 5мс (частота 200 Гц)
encoder_A = digitalRead(pin_A); // считываем состояние выхода А энкодера
encoder_B = digitalRead(pin_B); // выхода В энкодера
if((!encoder_A) && (encoder_A_prev)){ // если состояние меняется с положительного к нулевому
if(encoder_B) {
// выход В в положительном состояние, значит вращение осуществляется по часовой стрелке
// увеличиваем яркость свечения, не более чем до 255
if(brightness + fadeAmount }
else {
// выход В в нулевом состояние, значит вращение идет против часовой стрелки
// снижаем яркость, но не ниже нуля
if(brightness - fadeAmount >= 0) brightness -= fadeAmount;
}

}
encoder_A_prev = encoder_A; // сохраняем значение А для последующего цикла

AnalogWrite(9, brightness); // устанавливаем яркость на девятый пин

LoopTime = currentTime;
}
}

В этом примере для начинающих мы рассмотрим работу с пьезоизлучателем для генерирования звуков. Для этого возьмем пьезодатчик позволяющий генерировать звуковые волны в диапазоне частот 20 Гц - 20 кГц.

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

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


Программа для управления проста и наглядна. Начинается она с подключения файла, содержащего все необходимые команды для управления сервоприводом. Далее, мы создаем объект servo, например servoMain. Следующая функция setup(), в которой мы прописываем, что сервопривод подсоединен к девятому выводу контроллера.

Код:
/*
Arduino Servo
*/
#include
Servo servoMain; // Обьект Servo

Void setup()
{
servoMain.attach(9); // Servo подключен к девятому выводу
}

Void loop()
{
servoMain.write(45); // Повернуть сервопривод влево на 45 °
delay(2000); // Ожидание 2000 милисекунд (2 секунды)
servoMain.write(0); // Повернуть серво влево на 0 °
delay(1000); // Пауза 1 с.

delay(1500); // Ожидание 1.5 с.
servoMain.write(135); // Повернуть серво вправо на 135 °
delay(3000); // Пауза 3 с.
servoMain.write(180); // Повернуть серво вправо на 180 °
delay(1000); // Ожидание 1 с.
servoMain.write(90); // Повернуть серво на 90 °. Центральная позиция
delay(5000); // Пауза 5 с.
}

В главной функции loop() , мы задаем команды для серводвигателя, выдерживая паузы между ними.

Схема Arduino счетчика на 7-сегментном индикаторе

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

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


Справа показана таблица соответствия выводов Arduino и выводов светодиодного индикатора.

Код этого проекта:

byte numbers = {
B11111100, B01100000, B11011010, B11110010, B01100110,
B10110110, B10111110, B11100000, B11111110, B11100110
};
void setup() {
for(int i = 2; i pinMode(i, OUTPUT);
}
pinMode(9, INPUT);
}
int counter = 0;
bool go_by_switch = true;
int last_input_value = LOW;
void loop() {
if(go_by_switch) {
int switch_input_value = digitalRead(9);
if(last_input_value == LOW && switch_input_value == HIGH) {

}
last_input_value = switch_input_value;
} else {
delay(500);
counter = (counter + 1) % 10;
}
writeNumber(counter);
}

Void writeNumber(int number) {
if(number 9) {
return;
}
byte mask = numbers;
byte currentPinMask = B10000000;
for(int i = 2; i if(mask & currentPinMask) digitalWrite(i,HIGH);
else digitalWrite(i,LOW);
currentPinMask = currentPinMask >> 1;
}
}

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

Доброго времени суток, Хабр. Запускаю цикл статей, которые помогут Вам в знакомстве с Arduino. Но это не значит, что, если Вы не новичок в этом деле – Вы не найдёте ничего для себя интересного.

Введение

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

Начало

Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки. На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте . Скетч (набросок) – программа, написанная на Arduino. Давайте посмотрим на структуру кода:


main(){ void setup(){ } void loop(){ } }

Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:


void setup(){ } void loop(){ }

Давайте разберёмся с двумя обязательными функциями. Функция setup() вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция loop() - циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.

Первая программа

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


int Led = 13; // объявляем переменную Led на 13 пин (выход) void setup(){ pinMode(Led, OUTPUT); // определяем переменную } void loop(){ digitalWrite(Led, HIGH); // подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду digitalWrite(Led, LOW); // не подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду }

Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.

Прошивка Arduino

Для того, чтоб залить скетч на Arduino нам необходимо сначала просто сохранить его. Далее, во избежание проблем при загрузке, необходимо проверить настройки программатора. Для этого на верхней панели выбираем вкладку «Инструменты». В разделе «Плата», выберете Вашу плату. Это может быть Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo или другие. Также в разделе «Порт» необходимо выбрать Ваш порт подключения (тот порт, к которому вы подключили Вашу платформу). После этих действий, можете загружать скетч. Для этого нажмите на стрелочку или во вкладке «Скетч» выберете «Загрузка» (также можно воспользоваться сочетанием клавиш “Ctrl + U”). Прошивка платы завершена успешно.

Прототипирование/макетирование

Для сборки макета нам необходимы следующие элементы: светодиод, резистор, проводки (перемычки), макетная плата(Breadboard). Для того, чтоб ничего не спалить, и для того, чтоб всё успешно работало, надо разобраться со светодиодом. У него есть две «лапки». Короткая – минус, длинная – плюс. На короткую мы будем подключать «землю» (GND) и резистор (для того, чтоб уменьшить силу тока, которая поступает на светодиод, чтоб не спалить его), а на длинную мы будем подавать питание (подключим к 13 пину). После подключения, загрузите на плату скетч, если вы ранее этого не сделали. Код остаётся тот же самый.


На этом у нас конец первой части. Спасибо за внимание.

Первое, с чего следует начать работу по освоению Arduino – это приобрести отладочную плату (хорошо бы сразу приобрести монтажную плату и т.п.). Уже описывал, какие виды плат Arduino представлены на рынке. Кто еще не читал статью советую ознакомиться. Для изучения основ выбираем стандартную плату Arduino Uno (оригинал или хорошую китайскую копию — решать вам). При первом подключении оригинальной платы проблем возникнуть не должно, а вот с «китайцем» нужно будет немного поковыряться (не переживайте – всё покажу и расскажу).

Подключаем Arduino к компьютеру USB кабелем. На плате должен засветиться светодиод «ON «. В диспетчере устройств появится новое устройство «Неизвестное устройство «. Необходимо установить драйвер. Тут внесу небольшую неясность (кот отвлек – я не запомнил, какой из драйверов решил «проблему неизвестного устройства ».

Предварительно скачал и распаковал программную средy Arduino (arduino-1.6.6-windows ). Затем скачал этот . Он самораспаковывающейся. Запустил файл CH341SER.EXE . Выбрал установку (INSTALL) . После установки появилось сообщение, нажал «Ок » (прочитать не успел).

После перешёл в свойства все еще «неизвестного устройства» и выбрал кнопку «Update Driver». Выбрал вариант «Установка из указанного места» – указал папку с разархивированной программной средой Arduino. И о чудо – всё удачно заработало…

Запускаем программу Arduino (в моём случае 1.6.6) и разрешаем доступ.

Все проекты (программы) для Arduino состоят из двух частей: void setup и void loop . void setup выполняется всего один раз, а void loop выполняется снова и снова.

Прежде чем продолжим, необходимо выполнить две обязательные операции:

— указать в программной среде Arduino, какую плату вы используете. Tool->board-> Arduino Uno. Если отметка уже стоит на нужной вам плате – это хорошо, если нет – ставим отметку.

— указать в программной среде какой последовательный порт вы используете для связи с платой. Tool->port-> COM3. Если отметка уже стоит на порте – это хорошо, если нет – ставим отметку. Если у вас в разделе порты представлен больше, чем один порт, как же узнать, какой именно используется для соединения с платой? Берём плату и отсоединяем от неё провод. Снова заходим в порты и смотрим, какой из них исчез. В моём случае вкладка «порты» вообще стала не активной.

Снова подключаем провод USB.

Для первой программы никаких дополнительных модулей не нужно. Будем включать светодиод, который уже смонтирован на плате (на 13 выводе микроконтроллера).

Для начала сконфигурим 13 вывод (на вход или на выход).

Для этого вводим в блок «void setup » команду pinMode , в скобках указываем параметры (13, OUTPUT ) (Какой вывод задействован, Режим работы ). Программная среда выделяет слова/команды соответствующим цветом шрифта.

Переходим в блок «void loop » и вводим команду digitalWrite с параметрами (13, HIGH) .


Первая программа готова, теперь осталось загрузить её в микроконтроллер. Нажимаем кнопку UPLOAD.

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

Светодиод мы включили, он немного посветил, пора его выключать. Для этого видоизменим написанную нами программу. Вместо «HIGH » напишем «LOW ».


Нажимаем кнопку UPLOAD. Светодиод погас.

Мы уже познакомились с понятием « », пора им воспользоваться. Дальнейшие программы будут становится все объёмнее и сложнее, а работы по их изменению будут занимать все больше и больше времени, если мы оставим подобный стиль написания кода.

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

Создаём глобальную переменную int LED_pin = 13; (тип переменной, имя переменной, присваиваемое ей значение ).


Нажимаем кнопку UPLOAD. Светодиод светится. Все работает отлично.

В этом уроке, кроме включения/выключения светодиода, мы еще научимся мигать им.

Для этого вводим вторую команду «digitalWrite » с параметрами (LED_pin, LOW ).


Нажимаем кнопку UPLOAD. И что мы видим? Светодиод светится «в пол наказа». Причина кроется в том, что время переключения двух состояний (HIGH и LOW ) ничтожно мало и человеческий глаз не может уловить эти переключения. Необходимо увеличить время нахождения светодиода в одном из состояний. Для этого пишем команду delay с параметром (1000 ) . Задержка в миллисекундах: 1000 миллисекунд – 1 секунда. Алгоритм программы следующий: включили светодиод – ждём 1 секунду, выключили светодиод – ждём 1 секунду и т.д.


Нажимаем кнопку UPLOAD. Светодиод начал мерцать. Все работает.

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


Нажимаем кнопку UPLOAD. Светодиод мерцает, как и мерцал.

Доработаем написанную нами программу. Задачи следующие:

  • Светодиод включен 0,2 секунды и выключен 0,8 секунды;
  • Светодиод включен 0,7 секунды и выключен 0,3 секунды.

В программе созданы 2 переменные, что отвечают за временные задержки. Одна определяет время работы включенного светодиода, а вторая – время работы выключенного светодиода.

Спасибо за внимание. До скорой встречи!

Эта вводная статья для тех, кто уже успел распаковать со своим ребенком десяток-другой цветных коробок от конструкторов, построил сотни разнообразных конструкций и заполнил деталями от Лего все доступные емкости в чулане. Если вы готовы перейти на следующий уровень: с электроникой, микроконтроллерами, датчиками и умными устройствами – значит, пришло время для экспериментов с Ардуино!

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

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

Чаще всего плата выглядит вот так:

На рисунке показана одна из плат Ардуино – Arduino Uno. Мы изучим ее подробнее на следующих уроках.

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




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

  1. Придумываем идею и проектируем.
  2. Собираем электрическую схему. Тут нам пригодится макетная плата, упрощающая монтаж элементов. Безусловно, понадобятся навыки работы с электронными приборами и умение .
  3. Подключаем к компьютеру через USB.
  4. и записываем ее в плату буквально нажатием одной кнопки на экране в .
  5. Отсоединяем от компьютера. Теперь устройство будет работать автономно – при включении питания оно будет управляться той программой, которую мы в него записали.

Программа и среда программирования выглядят вот так:

На экране показана программа (на сленге ардуинщиков текст программы называется “скетч”), которая будет мигать лампочкой, подсоединенной к 13 входу на плате Ардуино UNO. Как видим, программа вполне проста и состоит из понятных для знающих английский язык инструкций. В языке программирования Arduino используется свой диалект языка C++, но все возможности C++ поддерживаются.

Есть и другой вариант написания кода – визуальный редактор. Тут не нужно ничего писать – можно просто перемещать блоки и складывать из них нужный алгоритм. Программа загрузится в подключенную плату одним нажатием кнопки мыши!

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

Быстрый старт с Arduino

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

Ардуино – это…

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

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

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

Почему Ардуино?

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

  1. Простота. Да, да – именно простота (хотя Лего и другие игрушки, без сомнения, привычнее, но мы сравниваем не с ними). Для юных разработчиков электроники Ардуино «прячет» огромное количество разнообразных технических вопросов. Многие достаточно сложные проекты можно создавать очень быстро, без длительного погружения в детали. А это ведь очень важно для ребенка – не утратить интерес до первого полученного своими руками результата.
  2. Популярность. Ардуино крайне популярна, вы сможете без труда найти ответы на любые вопросы на многочисленных форумах или сайтах. Сообщество Ардуино обширно и дружелюбно – там относительно мало прожженных жизнью снобов-инженеров и полно любителей и начинающих, с удовольствием делящихся своей радостью от найденного и узнанного. Это, конечно, откладывает отпечаток на качество советов, но как правило, даже самые сложные вопросы могут быть быстро решены с помощью форумов и сайтов.
  3. Доступность. И сама технология, и практически весь софт выпускаются под открытыми лицензиями и вы можете свободно использовать чужие наработки, схемы, причем во многих случаях даже для коммерческого использования. Это экономит много времени и позволяет двигаться большими шагами, опираясь на опыт предыдущих исследователей.
  4. Дешевизна. Комплект для первых занятий электроникой и программированием можно купить менее чем за 500 рублей. Полноценные курсы робототехники возможны при . Никакая другая технология не позволит вам так быстро и так эффективно войти в мир реальной учебной робототехники.

С чего начать?

Если вы хотите заниматься робототехникой с использованием Ардуино, то вам понадобится такой вот джентельменский набор:

  1. с USB кабелем для подключения к компьютеру.
  2. и провода.
  3. Комплект базовых электронных компонентов и переходник для батарейки типа крона.
  4. Установленная на компьютер среда

Все оборудование продается в наборах, называемых стартовыми –

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

  1. Экраны и индикаторы.
  2. Двигатели и , реле и .
  3. Модули связи.
  4. Разнообразные дополнительные модули и (шилды)

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

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

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

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

Как отличить «оригинал» от «совместимой платы»:

  1. «Китайские» платы не имеют права ставить логотип Ардуино.
  2. «Китайские» платы стоят гораздо дешевле.
  3. «Китайские» часто используют другой чип для обслуживания соединения с компьютером, на который нужны специальные драйвера. Драйвера устанавливаются за секунду и практически никогда не вызывают каких-либо проблем.

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

Нет возможности купить?

Если вы живете в Антарктиде или у вас действительно не хватает средств даже на самые простые наборы, то не отчаивайтесь – можно начать изучение Ардуино на виртуальных тренажерах. Самый мощный, простой и популярный сегодня вариант – это онлайн сервис Tinkercad от известной компании Autodesk. Вы сможете создавать электронные схемы, подключая множество разнообразных компонентов, а затем «включать» питание и измерять все электрические показатели. В библиотеке устройств есть и плата Ардуино, и даже встроенный редактор для программирования (включая визуальный!). Вы можете найти на нашем сайте отдельную статью

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то