Программирование ардуино

Плюсы Ардуино

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

На платах Ардуино сделаны удобные контакты, которые можно соединять удобными перемычками с любыми сторонними модулями, дисплеями, сенсорами и многим другим.

Пример сборки устройства с помощью перемычек

Кроме того, чтобы плата заработала всего лишь достаточно подключить её к компьютеру через USB.

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

  1. Плата обладает встроенным программатором (не нужен компилятор);
  2. Использование языка программирования близкого к C/C++, что делает её простой в использовании и изучении;
  3. Наличие множества библиотек для модулей, сенсоров, дисплеев и т.п., доступных для свободного использования;
  4. Для сбора устройства не требуется пайка, компоненты соединяются при помощи специальной макетной платы, перемычек и проводов;
  5. Возможность автономной работы, т.е. использование батареек или аккумуляторов;
  6. Наличие версии для работы с популярной мобильной операционной системой Android;
  7. Огромное количество различных модулей, сенсоров, дисплеев, датчиков и т.п..
  8. Наличие большого количества плат расширения — shields или «шилды».

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

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

Наличие портативных аккумуляторов и беспроводных источников передачи данных способствуют созданию ряда интересных проектов.

Подключение вашей платы Arduino к компьютеру

После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.

Синий кабель для программирования может выполнять следующие три функции:

  1. Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
  2. Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
  3. Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.

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

Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте «Диспетчер устройств (Device manager)» на вашем компьютере.

В диспетчере устройств откройте опцию «Порты» “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.

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

Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.

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

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

Начало работы с Ардуино

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

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

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

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

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

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

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

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

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

Визуальную среду рекомендуется использовать школьникам младших классов, более старшим инженерам лучше сразу изучать “настоящий” Ардуино – это довольно просто, к тому же знания C++ никому не повредят.

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

Моделирование событий

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

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

Еще одно большое преимущество симуляторов Ардуино заключается в том, что он поддерживает построчную отладку, поэтому пользователь точно знает, где и в какой строке он или она сделал что-то не так. Симуляторы существуют в различных формах и разработаны для совместимости с основными операционными системами — Windows, Linux и Mac OS. Поэтому, чтобы упростить поиск отличного симулятора Arduino, созданного для экосистемы вашего компьютера мы составили список самых популярных программ.

Программирование 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
2
3
4
5
6
7

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
2

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
2
3
4
5
6
7
8
9

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 таким же образом как ранее мы загружали код программы мигания светодиодом.

Разное

Использование сдвигового регистра 74HC595

Использование одного сдвигового регистра 74HC595

  • ShftOut11 — Простая передача битов
  • ShftOut12 — Один за одним
  • ShftOut13 — Использование массива
  • Управление светодиодами с помощью сдвигового регистра 74HC595
  • Создание эффекта «бегущий всадник» с помощью сдвигового регистра 74HC595
  • Гистограмма расстояния с помощью сдвигового регистра 74HC595 и ИК-датчика расстояния

Использование двух сдвиговых регистров 74HC595

  • ShftOut21 — Два светодиодных счетчика от «0» до «255» (в двоичном формате)
  • ShftOut22 — Поочередное зажигание 16 светодиодов
  • ShftOut23 — Использование двух массивов

Использование сдвигового регистра CD4021B

Использование одного сдвигового регистра CD4021B

  • ShftIn11 — Простой ввод данных
  • ShftIn12 — Какая кнопка нажата?
  • ShftIn13 — Проверка разных комбинаций
  • ShftIn14 — Нажата ли кнопка?

Использование двух сдвиговых регистров CD4021B

  • ShftIn21 — Простой ввод данных от двух сдвиговых регистров
  • ShftIn22 — Проверка разных комбинаций на двух комплектах переключателей
  • ShftIn23 — Печать включенных настроек

RFID

  • Гайд по использованию RFID-ридера MFRC522 вместе с Arduino
  • Защищенный доступ с помощью RFID-ридера MFRC522 и Arduino

LCD-дисплеи

  • Гайд по использованию LCD-дисплея Nokia 5110 вместе с Arduino
  • Вывод на LCD-дисплей произвольного текста и значения счетчика
  • Прогресс-бар на LCD-дисплее
  • Термостат с отображением информации на LCD-дисплее

Управление DC-моторами

  • Управление DC-мотором при помощи Arduino
  • Управление DC-мотором при помощи Arduino и потенциометра
  • Управление двумя DC-моторами при помощи Arduino и Bluetooth
  • Управление DC-мотором при помощи Arduino и драйвера моторов

Управление серводвигателями

  • Управление серводвигателем с помощью потенциометра
  • Радиальный ИК-датчик расстояния
  • Радиальный ультразвуковой датчик расстояния

Управление RGB-светодиодом

  • Управление RGB-светодиодом при помощи Arduino
  • Управление RGB-светодиодом при помощи Arduino и Android-приложения

Последовательный порт

  • Вывод значений потенциометра в последовательный порт
  • Применение управляющих символов при выводе значений потенциометра в последовательный порт
  • Эхо данных последовательного порта
  • Различие между char и int
  • Управление светодиодом отправкой одиночных символов
  • Управление RGB-светодиодом отправкой последовательности цифр
  • Управление цветом окна программы на Processing с помощью Arduino и потенциометра
  • Управление RGB-светодиодом с помощью палитры цветов из программы на Processing

Использование библиотеки Keyboard

  • Запись данных с датчиков в текстовый файл на ПК
  • Блокировка ПК на основе показаний фоторезистора
  • Управление курсором мыши

Использование библиотеки Wire

  • Чтение данных с I2C-датчика температуры TC74A0-5.0VAT
  • Чтение данных с I2C-датчика температуры TC74A0-5.0VAT с отображением данных на гистограмме и программе на Processing

Использование библиотеки SPI

  • Регулировка яркости светодиодов с помощью двух SPI цифровых потенциометров MCP4231
  • Регулировка яркости светодиодов и громкости динамика с помощью двух SPI цифровых потенциометров MCP4231

Использование библиотеки SD

  • Запись произвольных данных на SD карту
  • Чтение и запись произвольных данных на SD карту
  • Чтение и запись произвольных данных на SD карту с использованием часов реального времени
  • Регистратор прохода через дверь

Использование прерываний

Прерывания по таймеру

  • Мигаем светодиодом с помощью прерывания по таймеру
  • Музыкальный инструмент с помощью прерывания по таймеру и аппаратного прерывания

Из чего состоит программа

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

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

В данном случае у нас 2 функции с именами и . Их присутствие обязательно
в любой программе на C++ для Arduino. Они могут ничего и не делать, как в нашем случае,
но должны быть написаны. Иначе на стадии компиляции вы получите ошибку.

Элементы платы

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

Сердцем платформы Arduino Uno является 8-битный микроконтроллер фирмы Microchip — ATmega328P на архитектуре AVR с тактовой частотой 16 МГц.
Контроллер обладает тремя видами памяти:

  • 32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
  • 2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.
  • 1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению это аналог жёсткого диска для Uno.

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

Микроконтроллер не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.

общается с ПК через по интерфейсу UART используя сигналы и , которые параллельно выведены на контакты и платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.

Светодиодная индикация

Имя светодиода Назначение
ON Индикатор питания платформы.
L Пользовательский светодиод на пине микроконтроллера. Используйте определение для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.
RX и TX Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов и .

Порт USB Type-B

Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).

Понижающий регулятор 5V

Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.

Понижающий регулятор 3V3

Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.

ICSP-разъём ATmega328P

ICSP-разъём выполняет две полезные функции:

  1. Используется для передачи сигнальных пинов интерфейса SPI при подключении Arduino Shield’ов или других плат расширения. Линии ICSP-разъёма также продублированы на цифровых пинах , , и .
  2. Предназначен для загрузки прошивки в микроконтроллер через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет .

А подробности распиновки .

3Установка драйверадля Arduino

Установите драйвер для Arduino. Рассмотрим вариант установки на операционную систему Windows. Для этого дождитесь, когда операционная система предложит установить драйвер. Откажитесь. Нажмите клавиши Win + Pause, запустите Диспетчер устройств. Найдите раздел «Порты (COM и LPT)». Увидите там порт с названием Arduino UNO (COMxx). Кликните правой кнопкой мыши на нём и выберите Обновить драйвер. Укажите операционной системе расположение драйвера. Он находится в поддиректории drivers в той папке, которую мы только что скачали.

Запомните порт, к которому подключена плата Arduino. Чтобы узнать номер порта, запустите диспетчер устройств и найдите раздел «Порты (COM и LPT)». В скобках после названия платы будет указан номер порта. Если платы нет в списке, попробуйте отключить её от компьютера и, выждав несколько секунд, подключить снова.

Arduino в диспетчере устройств Windows

Платные программы

Платные программы имеют более широкий набор функций и возможностей.

Splan

В приложении есть каталоги с элементами, которые добавляются при необходимости. Есть возможность работы одновременно с несколькими начерченными проектами. Splan предлагает использовать готовые фотографии изделия или детали в качестве фона для построения нового чертежа. Стоимость лицензии — 5 724 руб.

OrCAD

Схемы можно начертить по ГОСТ. Есть встроенные учебные материалы по работе с программой. Предлагается пробная бесплатная версия с ограничениями по количеству элементов в схеме. Годовая лицензия стоит около 20 000 руб.

Altera

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

TINA-TI

TINA-TI поставляется современной программой SPICE-схем промышленного стандарта. Отличительной чертой продукта является анализ, который позволяет вывести не только кривые, но и формулы. Построенные модели просматриваются и тестируются в фотореалистичном режиме 3D-визуализации. Стоимость платного пакета — 13 130 руб.

TurboCAD

Система автоматизированного формирования 2- и 3-мерного дизайна и черчения, работающая под операционными системами Microsoft Windows и Macintosh.

Инструменты:

  • масштабирование;
  • измерение;
  • управление слоями;
  • редактирование на основе дескрипторов;
  • настраиваемый пользовательский интерфейс.

Подписка на 1 год — 30 702 руб.

Proteus Design Suite

Основные характеристики:

  1. Виртуальный дизайн позволяет проводить тестирование до заказа первой физической платы.
  2. Автоматическая маршрутизация на основе формы в стандартной комплектации экономит время.
  3. Прямой доступ к 15 млн деталей.

Micro-Cap

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

DipTrace

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

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

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

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

По мере создания схемы, программа автоматически проверяет правильность и допустимость соединений, совпадение размеров, соблюдение зазоров и расстояний. То есть, все правки и корректировки вносятся сразу, на стадии создания. Созданную схему можно прогнать на встроенном симуляторе, но он не самый сложный, потому есть возможность протестировать продукт на любых внешних симуляторах. Есть возможность импортировать схему для работы в других приложениях или принять (экспортировать) уже созданную для дальнейшей ее проработки. Так что программа для рисования схем DipTrase — действительно неплохой выбор.

Если нужна печатная плата — находим в меню соответствующую функцию, если нет — схему можно сохранить (можно будет корректировать) и/или вывести на печать. Программа для рисования схем DipTrace платная (имеются разные тарифы), но есть бесплатная 30-дневная версия.

https://youtube.com/watch?v=j_SMuDpVT0A