Установка ардуино на windows 7. Подключение и программирование ардуино для начинающих

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

Общий вид платы

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

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

Как МК и компьютер видят друг друга

Для корректного функционирования Arduino UNO R3 драйвер для него должен быть установлен на компьютере, что работает с платой. Выбор драйвера зависит от операционной системы. Существует отдельное ПО для Arduino UNO R3: драйвер Windows 7, Windows Vista и XP. То есть с помощью любой аппаратуры, на которую установлены эти операционные системы, можно работать с печатной платой. Arduino UNO R3 совместим со всеми компьютерамы, выпущенными с нулевых.

Почти все видимые выводы соединены напрямую с микроконтроллером. Часть из них может быть как доступной для подключения, так и задействована во внутренней схеме. Вывод USB может использоваться для подачи питания напряжением 5 В, а также для обмена информацией с компьютером, который в таком случае распознаёт устройство как неодновременный последовательный порт.

Напряжение для работы платы

Рабочее напряжение составляет 5 В. Но вход для внешнего питания рассчитан на 7-12 В. Экспериментально было установлено, что для работы хватает минимального напряжения 6 В, а максимум, который плата может выдержать, - 20 В. Но лучше не отклоняться от рекомендованных параметров, чтобы не было нежелательных ситуаций, как-то выход из строя и ему подобные варианты, зависимые от подачи напряжения.

Система энергоснабжения устроена таким образом, что происходит автоматическое переключение с USB-порта на другой источник энергии, если последний подаёт больше 6,7 В. Такие требования к предоставляемому напряжению для Arduino UNO R3, схема подключения и питания были разработаны для оптимальной работы платы.

Преимущества работы с различными напряжениями этим не ограничиваются. Плата Arduino UNO R3 может заставить работать МК и на более низком (3,3 В) напряжении, но только из-за того, что он сам функционирует на частоте 8 Гц. Плата же требует 16 Гц и, соответственно, большего напряжения.

Краткая информация о выводах

Они на плате двух типов: аналоговые и цифровые. Цифровые обозначаются буквой D (0-13), и их насчитывают 14 штук. Тогда как аналоговых шесть, и обозначаются они буквой А (0-5). Общая нумерация начинается с D, и 15-й вывод нумеруется А0, 16-й пронумерован как А1. Цифровой вывод можно использовать в качестве как входа, так и выхода, тогда как аналоговый допустимо примениять только в качестве входа.

Для чего предназначены выводы?

IOREF выдаёт необходимое для работы напряжение - 5 В.

D0 и D2 используются для обмена данными с помощью асинхронного последовательного порта. Они подключены к USB-контролеру. Но при этом следует быть осторожным, ведь их нельзя напрямую подключить к порту RS. Для подключения необходимо произвести преобразование, которое силами этих выводов не осуществляется. Информация по подключению Arduino UNO R3 (инструкция) находится в конце статьи.

Также вывод D2 или D3 можно использовать, чтобы вызвать внешнее прерывание.

D3, D5, D6, D9, D10 и D11 благодаря тому, что они связаны со счетчиками на самом микроконтроллере, используются для сигнала широтно-импульсной модуляции, а также как счетчики для внешних импульсов.

D10-D13 необходимы, чтобы МК мог работать с посторонними устройствами посредством протокола SPI. Если микроконтроллер является ведомым в конструкции, то используется D10.

Возможности ввода-вывода

Благодаря аналоговым входам можно измерить напряжение подаваемого сигнала. С их помощью реально смастерить даже осциллограф, который, правда, будет ограничен возможностями процессора. Цифровые выводы способны как генерировать сигнал, так и принимать его. Могут они работать и с ШИМ-сигналами, поэтому их используют для управления двигателем или устройством генерирования звука. Также их используют для «общения» с другими устройствами вроде однопроводной шины, асинхронного последовательного порта, SPI, I2C. Благодаря конструктивным особенностям подключение I2C и SPI возможно даже на одну шину.

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

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

С помощью SPI цифровые устройства могут работать в тех случаях, когда необходима высокая скорость передачи всех данных. Такой обмен используется при работе с сетями Ethernet, Wi-Fi.

Техника безопасности при подаче тока

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

  1. На одном выводе микроконтроллера ток должен иметь напряжение не больше 40 мА.
  2. На одной группе выводов текущий ток не должен превысить отметку 100 мА. Самих групп выводов три.
  3. Одновременный ток на микроконтроллере не должен превысить отметку 200 мА.

Инструкция по настройке

Прежде чем работать с самой платой, её необходимо подготовить. Условно можно выделить такие этапы подготовки: покупка кабеля для связи между МК и компьютером, подготовка необходимого софта для работы, установка драйверов и запуск ПО с последующей его настройкой. Общая последовательность действий будет выглядеть таким образом:


Я приобрел свой первый Ардуин и хотел бы рассказать с чего начать чтобы он заработал. Откуда скачать программу схему подключения и тп. И что с ардуином вообще можно сделать.

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

Что можно сделать с Arduino?

  • Машинка на ардуино
  • радиоуправляемый самолет и квадрокоптер
  • Умный дом
  • Автозапуск для авто
  • Управление авто некоторыми частями
  • Сигнализацию
  • 3D принтер
  • и многое другое что можно сделать с микроконтроллерами

Заказал через интернет - Arduino с DX
Нужна была плата именно с надписями arduino и никак иначе, поэтому пришлось заплатить 28$, хотя XDruino (XDruino) или Zdruino (Zdruino) стоят дешевле.

Вот плата Arduino, сейчас будем подключать к компьютеру. Подключаем её в USB порт. Windows пытается обнаружить драйвер, но она этого сделать не сможет, поэтому переходим в диспетчер устройств (Мой компьютер -> Свойства -> Оборудование -> Диспетчер устройств). Видим, что у нас есть новое неизвестное устройство.

Для того чтобы windows обноружил устройство как устройство Arduino MEGA 2560 нам необходимо скачать драйвера. Драйвера можно скачать с официального сайта, http://www.arduino.cc/. Заходим на вкладочку «скачать» (обозначено «1») и выбираем Arduino 1.0.5» (обозначено «2»), здесь есть и версия Arduino 1.5 » (обозначено «3») но она BETA версия, поэтому мы не будем её качать, мы скачаем версию 1.0.5. Это текущий релиз. Скачаем ZIP файл. Он весит 92.9 MByte.

Скачиваем и распаковываем файл, в которой есть папка с драйверами. Открываем её, и находим в ней файл Arduino.inf который нужно скопировать поближе к корню диска, я его положу прямо на диск С. Теперь мне нужно указать в диспетчере устройств, вот этот *.inf файл. Я нажимаю что я хочу обновить драйвер, выбираю что я покажу где этот драйвер находится на моём компьютере. Выбираю папочку, я положил *.inf файл на диск С, и выбираю диск С. Именно поэтому я его положил ближе к корню, чтобы не лазить по всему компьютеру и убираю галочку «Включить подпапки». Нажимаю «Next».

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

Вот и всё. У нас установилось это неизвестное устройство, на него уже стали дрова и оно видится как Arduino MEGA2560. Она сейчас висит на 3-ем COM порту.

Теперь с локального диска С мы удаляем этот *.inf файл потому что он нам уже не нужен, и закрываем окно.
В распакованной папке есть ярлык Arduino, который запускает среду программирования Arduino. Данную программу не нужно устанавливать, её просто нужно куда-то скопировать и можно запускать Arduino IDE из любого места. Запускаем её, и вот как она выглядит. Очень простая и удобная программа.


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


Выбираем плату, у нас Mega 2560, если у вас другая, вы выбираете другую.


И теперь можно залить сюда какой-то проект Arduino. Выберем проект Arduino, примеры, и выберем что-то с коммуникацией по последовательному порту, чтобы мы видели что мигают светодиоды. Ну допустим, MultiSerialMega.


Открывается исходный код примера, мы его можем проверить на ошибки (откомпилировать), нажав кнопку помеченной цифрой «1», либо можно сразу загрузить на микроконтроллер программу, нажав кнопку помеченной цифрой «2» . При этом компилятор сначала откомпилирует исходный текст, и только потом зальёт полученный файл на микроконтроллер. Обратите внимание, сейчас должны загореться какие-то светодиоды.


Давайте выберем другой пример. Мне хочется попробовать пример который бы постоянно что-то отправлял. Вот, например AnalogOutSerial. Перед каждым примером есть описание, что да как. Сразу зальём его на микроконтроллер (запрограммируем Arduino), для этого сразу жмём «загрузить», компилятор сразу выполнит компиляцию и потом всё загрузит. Вот всё загружено, и сейчас что-то передаётся, так как постоянно горит светодиод на передачу. Узнать что именно передаётся можно с помощью любого монитора COM порта. Мне очень нравится программа Terminal, но можно воспользоваться и средствами встроенными Arduino IDE. Arduino IDE имеет на своём борту «недомонитор COM порта», которым можно пользоваться когда нет ничего другого. Откроем мониторинг COM порта, и видит, что именно постоянно сюда передаётся.


Для чего вообще эти примеры? Я показал как программировать Arduino, можно убедиться что устройство работает, и нормально программируется.
Теперь нужно найти документацию на плату Arduino. Документацию на плату мы также находим на этом сайте. Переходим в раздел «Produkt» (http://arduino.cc/en/Main/Products), выбираем наш продукт, у меня Arduino Mega2560. Спускаемся немного ниже и видим интересные ссылки.


Первое это EAGLE файлы («1»), то есть разводка печатных плат сделана в орле. Также можно найти схему Arduino в формате *.pdf («2») и карту пинов («3»). То есть вся документация на Arduino есть, и лежит в открытом виде. Есть схема и разобраться что куда идёт и что за что отвечает, не оставит ни каких сложностей.

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

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

Что такое Arduino и для чего оно нужно?

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

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

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

Среда разработки Arduino IDE

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

Версия Windows Mac OS X Linux
1.8.2

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

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

// переменные с пинами подключенных устройств 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); }

// переменные с пинами подключенных устройств

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 для подавления дребезга контактов. О дребезге контактов есть на моем сайте. Обязательно ознакомьтесь с этим материалом.

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой. Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в

Для использования ШИМ в Arduino есть функция Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

// Светодиод подключен к 11 пину int ledPin = 11; void setup() { pinMode(ledPin, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { analogWrite(ledPin, i); delay(5); } delay(1000); for (int i = 255; i > 0; i--) { analogWrite(ledPin, i); delay(5); } }

// Светодиод подключен к 11 пину

int ledPin = 11 ;

void setup () {

pinMode (ledPin , OUTPUT ) ;

void loop () {

for (int i = 0 ; i < 255 ; i ++ ) {

analogWrite (ledPin , i ) ;

delay (5 ) ;

delay (1000 ) ;

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

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

Сборка сложнейших схем и соединение плат может осуществляться без паяльника, а с помощью перемычек с разъёмными соединениями «папа» и «мама». Так могут подключаться как навесные элементы, так и платы расширения, которые на лексиконе ардуинщиков зовут просто «Шилды» (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 — это полноценная система, позволяющая управлять различными системами и считывать данные из разных источников. Основным преимуществом Arduino — это стандартизированное распределение выводов, позволяющее применять готовые к использованию решения, расширяющие возможности системы.

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

На рисунке ниже приведены платы Arduino UNO и Arduino MEGA:

Arduino MEGA совместима с версией UNO в области основных выводов. Дополнительные выводы MEGA расположены отдельно, что позволяет сохранить совместимость с Arduino UNO.

Рядом с USB разъемом есть кнопка «RESET». Он позволяет вернуться к исходному состоянию программы, которое бывает при включении питания. После нажатия кнопки «RESET» данные в ОЗУ микроконтроллера сбрасываются и Arduino начинает выполнять программу с самого начала.

Интерфейс USB позволяет программировать Arduino и взаимодействовать и поддерживать связь с Serial монитором. Кроме того, непосредственно через USB вы можете запитать плату.

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

Для этого в Arduino имеет разъем для подключения внешнего источника питания. Напряжение питания может составлять от 5 до 20 В. Фактически, оптимальное напряжение должно находиться в диапазоне 7-12 В.

Если напряжение питания будет меньше 7В, то напряжение на выходе встроенного стабилизатора будет меньше 5 В. Если же входное напряжение питания будет больше 12 В, то это приведет к значительному нагреву стабилизатора напряжения.

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

Arduino оснащена одним или двумя шестиконтактными разъемами, которые используются для программирования микроконтроллера. Разъемы обозначаются как ICSP1 и ICSP2. Разъем ближе к основному микроконтроллеру позволяет загружать BOOTLOADER, а разъем ближе к USB-порту позволяет загружать программу USB-UART преобразователя. Второй разъем используется только в платах Arduino, где в качестве USB-UART преобразователя используется микроконтроллер Atmega. Если установлен FT232, то второй разъем на плате отсутствует.

Плата Arduino оснащена группой, по крайней мере, из 4 светодиодов. Два из них помечены как «RX» и «TX» расположены рядом с микросхемой FT232 или Atmega. Они сигнализируют о последовательной передаче данных между компьютером и контроллером. Эти светодиоды полезны при программировании и тестировании программы, которая взаимодействует с компьютером. По их свечению вы можете визуально определить, происходит ли передача данных (программирование) или нет.

Еще один светодиод, обозначенный как «ON», является индикатором питания платы. Последний светодиод, как правило, — это светодиод, анод которого подключен к выводу 13, а катод к минусу питания. Поэтому высокий логический уровень на выводе 13 приведет к включению светодиода, в то время как низкий уровень приведет к его выключению.

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

Левая часть (POWER) обеспечивает доступ к питанию и управлению:

  • IOREF — указывает каким напряжением питается процессор Arduino (это важно для некоторых шилдов)
  • RESET — сброс Arduino
  • 3V3 – система питание модулей, требующих 3,3 В
  • 5V — система питания TTL
  • GND – масса
  • GND — масса
  • VIN — напряжение питания от внешнего источника

Правая часть (ANALOG IN) обеспечивает считывание аналоговые сигналов. Аналого-цифровой преобразователь (АЦП) позволяет считывать значения напряжения от 0 до AREF или 0…5 В.

Считанное значение может быть 8-битным или 10-битным. Аналоговые входы подписаны как A0, A1, A2, A3, A4, A5. Несмотря на их основное предназначение, выводы A0 — A5 так же могут быть использованы как цифровые входы или выходы.

Верхний ряд контактов также разделен на две части. Правая часть пронумерована от 0 до 7, левая от 8 до 13. Этот ряд содержит контакты цифрового входа/выхода.

Контакты 0 и 1 являются специальными выводами, на которые дополнительно выведены линии последовательного порта (RX и TX). Их можно использовать для последовательной связи с другой платой.

Контакты 3, 5, 6, 9, 10, 11 обозначаются как «~» или PWM. Они могут работать в режиме ШИМ, иногда называемым аналоговым выходом. Конечно же, это не реальные аналоговые выходы. Они только позволяют контролировать ширину импульса, которая часто используется в цифровой электронике для изменения «аналогового» сигнала.

И последние два вывода — это GND и AREF, которые используется для подключения внешнего опорного напряжения для аналого-цифрового преобразователя.

В итоге Arduino UNO имеет 14 цифровых линий входа/выхода и 6 аналоговых входов (которые могут служить в качестве цифровых входов/выходов).

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

Допустимое входное напряжение не должно превышать 5В или 3,3В (у плат с питанием от 3,3В). В случае если необходимо обработать сигнал напряжением больше 5В (3,3В для Arduino Pro Mini), то следует воспользоваться .

Нагрузочная способность выходов при питании от 5 В составляет 40мА, при питании от 3,3 В — 50 мА. Это означает, что к одному выходному контакту можно подключить, например, до двух светодиодов, предполагая, что рабочий ток каждого из них составляет 20 мА.

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