Как запитать arduino nano
Arduino Nano — это полнофункциональное миниатюрное устройство на базе микроконтроллера ATmega328 (Arduino Nano 3.0) или ATmega168 (Arduino Nano 2.x), адаптированное для использования с макетными платами. По функциональности устройство похоже на Arduino Duemilanove, и отличается от него размерами, отсутствием разъема питания, а также другим типом (Mini-B) USB-кабеля. Arduino Nano разработано и выпускается фирмой Gravitech.
![]() |
Схема и исходный проект
Arduino Nano 2.3 (ATmega168): руководство (pdf), файлы Eagle. Примечание: печатная плата этой версии Arduino Nano содержит 4 слоя, в то время как бесплатная версия Eagle позволяет работать только с двухслойными платами. Поэтому, для возможности работы со схемой в бесплатной версии, проект выложен без трассировки печатной платы.
Характеристики:
| Микроконтроллер | Atmel ATmega168 или ATmega328 |
| Рабочее напряжение (логический уровень) | 5В |
| Напряжение питания (рекомендуемое) | 7-12В |
| Напряжение питания (предельное) | 6-20В |
| Цифровые входы/выходы | 14 (из которых 6 могут использоваться как ШИМ-выходы) |
| Аналоговые входы | 8 |
| Максимальный ток одного вывода | 40 мА |
| Flash-память | 16 КБ (ATmega168) или 32 КБ (ATmega328) из которых 2 КБ используются загрузчиком |
| SRAM | 1 КБ (ATmega168) или 2 КБ (ATmega328) |
| EEPROM | 512 байт (ATmega168) или 1 КБ (ATmega328) |
| Тактовая частота | 16 МГц |
| Размеры платы | 1.85 см х 4.3 см |
Питание
Arduino Nano может быть запитан через кабель Mini-B USB, от внешнего источника питания с нестабилизированным напряжением 6-20В (через вывод 30) либо со стабилизированным напряжением 5В (через вывод 27). Устройство автоматически выбирает источник питания с наибольшим напряжением.
Напряжение на микросхему FTDI FT232RL подается только в случае питания Arduino Nano через USB. Поэтому при питании устройства от других внешних источников (не USB), выход 3.3В (формируемый микросхемой FTDI) будет неактивен, в результате чего светодиоды RX и TX могут мерцать при наличии высокого уровня сигнала на выводах 0 и 1.
Память
Объем памяти программ микроконтроллера ATmega168 составляет 16 КБ (из них 2 КБ используются загрузчиком); в ATmega328 — этот объем составляет 32 КБ (из которых 2 КБ также отведены под загрузчик). Помимо этого, ATmega168 имеет 1 КБ оперативной памяти SRAM и 512 байт EEPROM (для взаимодействия с которой служит библиотека EEPROM); а микроконтроллер ATmega328 — 2 КБ SRAM и 1 КБ EEPROM.
Входы и выходы
С использованием функций pinMode(), digitalWrite() и digitalRead() каждый из 14 цифровых выводов Arduino Nano может работать в качестве входа или выхода. Рабочее напряжение выводов — 5В. Максимальный ток, который может отдавать или потреблять один вывод, составляет 40 мА. Все выводы сопряжены с внутренними подтягивающими резисторами (по умолчанию отключенными) номиналом 20-50 кОм. Помимо основных, некоторые выводы Ардуино могут выполнять дополнительные функции:
- Последовательный интерфейс: выводы 0 (RX) и 1 (TX). Используются для получения (RX) и передачи (TX) данных по последовательному интерфейсу. Эти выводы соединены с соответствующими выводами микросхемы-преобразователя USB-UART от FTDI.
- Внешние прерывания: выводы 2 и 3. Данные выводы могут быть сконфигурированы в качестве источников прерываний, возникающих при различных условиях: при низком уровне сигнала, по фронту, по спаду или при изменении сигнала. Для получения дополнительной информации см. функцию attachInterrupt().
- ШИМ: выводы 3, 5, 6, 9, 10 и 11. С помощью функции analogWrite() могут выводить 8-битные аналоговые значения в виде ШИМ-сигнала.
- Интерфейс SPI: выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Данные выводы позволяют осуществлять связь по интерфейсу SPI. В устройстве реализована аппаратная поддержка SPI, однако на данный момент язык Ардуино пока ее не поддерживает.
- Светодиод: вывод 13. Встроенный светодиод, подсоединенный к цифровому выводу 13. При отправке значения HIGH светодиод включается, при отправке LOW — выключается.
В Arduino Ethernet есть 8 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 различных значения). По умолчанию, измерение напряжения осуществляется относительно диапазона от 0 до 5 В. Тем не менее, верхнюю границу этого диапазона можно изменить, используя вывод AREF и функцию analogReference(). Помимо этого, некоторые из выводов имеют дополнительные функции:
- I2С: выводы 4 (SDA) и 5 (SCL). С использованием библиотеки Wire (документация на веб-сайте Wiring) данные выводы могут осуществлять связь по интерфейсу I2C (TWI).
Помимо перечисленных на плате существует еще несколько выводов:
- AREF. Опорное напряжение для аналоговых входов. Может задействоваться функцией analogReference().
- Reset. Формирование низкого уровня (LOW) на этом выводе приведет к перезагрузке микроконтроллера. Обычно этот вывод служит для функционирования кнопки сброса на платах расширения
Связь
Arduino Nano предоставляет ряд возможностей для осуществления связи с компьютером, еще одним Ардуино или другими микроконтроллерами. В ATmega168 и ATmega328 есть приемопередатчик UART, позволяющий осуществлять связь по последовательным интерфейсам посредством цифровых выводов 0 (RX) и 1 (TX). Микросхема FTDI FT232RL обеспечивает связь приемопередатчика с USB-портом компьютера, и при подключении к ПК позволяет Ардуино определяться как виртуальный COM-порт (драйвера FTDI включены в пакет программного обеспечения Ардуино). В пакет программного обеспечения Ардуино также входит специальная программа, позволяющая считывать и отправлять на Ардуино простые текстовые данные. При передаче данных компьютеру через USB на плате будут мигать светодиоды RX и TX. (При последовательной передаче данных посредством выводов 0 и 1 данные светодиоды не задействуются).
Библиотека SoftwareSerial позволяет реализовать последовательную связь на любых цифровых выводах Arduino Nano.
В микроконтроллерах ATmega328 и ATmega168 также реализована поддержка последовательных интерфейсов I2C (TWI) и SPI. В программное обеспечение Ардуино входит библиотека Wire, позволяющая упростить работу с шиной I2C; для получения более подробной информации см. документацию. Для работы с интерфейсом SPI см. даташиты микроконтроллеров ATmega168 и ATmega328.
Программирование
Arduino Nano программируется с помощью программного обеспечения Ардуино (скачать). Для этого из меню Tools > Board необходимо выбрать «Arduino Diecimila, Duemilanove, or Nano w/ ATmega168» или «Arduino Duemilanove or Nano w/ ATmega328» (в зависимости от микроконтроллера на вашей плате). Для получения более подробной информации см. справку и примеры.
ATmega168 и ATmega328 в Arduino Nano выпускается с прошитым загрузчиком, позволяющим загружать в микроконтроллер новые программы без необходимости использования внешнего программатора. Взаимодействие с ним осуществляется по оригинальному протоколу STK500 (справка, заголовки C-файлов).
Тем не менее, микроконтроллер можно прошить и через разъем для внутрисхемного программирования ICSP (In-Circuit Serial Programming), не обращая внимания на загрузчик; более подробно об этом см. соответствующие инструкции.
Автоматический (программный) сброс
Чтобы каждый раз перед загрузкой программы не требовалось нажимать кнопку сброса, Arduino Nano спроектирован таким образом, который позволяет осуществлять его сброс программно с подключенного компьютера. Один из выводов микросхемы FT232RL, участвующий в управлении потоком данных (DTR), соединен с выводом RESET микроконтроллера ATmega168 или ATmega328 через конденсатор номиналом 100 нФ. Когда на линии DTR появляется ноль, вывод RESET также переходит в низкий уровень на время, достаточное для перезагрузки микроконтроллера. Данная особенность используется для того, чтобы можно было прошивать микроконтроллер всего одним нажатием кнопки в среде программирования Ардуино. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии DTR. Такая архитектура позволяет уменьшить таймаут загрузчика, поскольку процесс прошивки всегда синхронизирован со спадом сигнала на линии DTR.
Однако эта система может приводить и к другим последствиям. При подключении Arduino Nano к компьютерам, работающим на Mac OS X или Linux, его микроконтроллер будет сбрасываться при каждом соединении программного обеспечения с платой. После сброса на Arduino Nano активизируется загрузчик на время около полсекунды. Несмотря на то, что загрузчик запрограммирован игнорировать посторонние данные (т.е. все данные, не касающиеся процесса прошивки новой программы), он может перехватить несколько первых байт данных из посылки, отправляемой плате сразу после установки соединения. Соответственно, если в программе, работающей на Ардуино, предусмотрено получение от компьютера каких-либо настроек или других данных при первом запуске, убедитесь, что программное обеспечение, с которым взаимодействует Ардуино, осуществляет отправку спустя секунду после установки соединения.
- Последние новости
- подписаться на новости
- Последние темы с форума
Arduino NANO

Arduino — это семейство электронных платформ, предназначенных для изучения проектирования электроники. Arduino NANO — компактная платформа для прототипирования микроэлектронных устройств, предназначенная для использования с макетной платой. Функционал устройства во многом схож с Arduino UNO и отличается от нее лишь размерами платы и отсутствием отдельного разъема для питания. Основа Arduino Nano — микроконтроллер на базе ATmega328, логическая микросхема для обработки данных с тактовой частотой 16 МГц, имеющая на борту 8 аналоговых и 14 цифровых контактов общего назначения, а также все необходимые интерфейсы: I2C, SPI и UART.
Основные преимущества Arduino NANO:
- Простота использования
- Быстрое изучение
- Удобная среда разработки
- Открытый исходный код
- Сообщество поклонников
- Тысячи готовых проектов
- Возможности расширения
- Широкая переферия
Arduino в цифрах
Год релиза первой Arduino
Платформ продается ежедневно
Различных видов платформ
Пользователей в сообществе
Технические характеристики
Микроконтроллер
Atmel ATmega328 с тактовой частотой 16 МГц
Питание платформы
Рекомендуемое напряжение: 7-12В DC, рабочее — 5В DC
Цифровые порты
14 портов ввода-вывода, 6 из которых имеют возможность вывода ШИМ сигнала
Аналоговые входы
8 шт., каждый с разрешением 10 бит (от 0 до 1024 усл. значений)
Цифровые интерфейсы
1 x I2C, 1 x SPI, 1 x UART, 1 x ICSP
Размер памяти
32Кб Флеш-памяти, 2Кб ОЗУ, 1Кб EEPROM
Размеры платы
Физические габариты платы 42 x 19 мм, вес 12г
Варианты питания
Через разъем mini-USB или через разъем Vin на контактной линейке
Токовая защита
Платформа не имеет встроенной защиты USB порта от коротких замыкания и выбросов тока
Arduino является платформой с открытой архитектурой и программным обеспеченем. Arduino Nano — идеальный инструмент, способный показать, насколько легким может стать процесс изучения электроники, схемотехники и программирования. За счет своих компактных размеров ардуино нано помещается вместе с датчиками и сенсорами на одной макетной плате.
Схемы платформы
Ниже представлены ссылки на скачивание всех схем Arduino NANO:
Принципиальная схема, файлы EAGLE и распиновка платы
![]()
Принципиальная схема
![]()
Файлы трассировки .EAGLE
![]()
Контактная распиновка платы
![]()
Datasheet для ATmega328
Распиновка Arduino NANO

На изображении выше представлена схема контактной распиновки Arduino NANO V3,
с указанием назначения каждого контактного вывода платы.
Если вы или ваш ребенок хочет изучить основы микроэлектроники, робототехники или интернета вещей, Arduino — идеальное начало!
Подключение платы
При покупке официальной версии платформы, подключение Arduino NANO к компьютеру происходит автоматически.
При использовании китайских аналогов или других arduino-совместимых платформ, во время подключения следует учесть несколько важных моментов.
Выпуск официальных версий платформы был прекращен в 2016 году.
Подключение официальной платы
1. Скачивание и установка Arduino IDE
Для работы с платой вам потребуется скачать и установить свежую версию среды программирования Arduino — «Arduino IDE». Ее можно скачать с официального сайта по ссылке ниже.
При использовании русскоязычной версии Windows, программа автоматически установит по умолчанию русский язык.
В открывшемся окне следует нажать на кнопку «JUST DOWNLOAD«.
2. Первый запуск среды разработки
После того, как вы скачали и поставили среду разработки, вам необходимо подключить Arduino NANO в любой свободный порт компьютера и осуществить базовую настройку платы.
После того, как вы подключили вашу плату к компьютеру, Windows сообщит об обнаружении нового устройства и автоматически выполнит установку всех необходимых драйверов для работы с ней. После появления сообщения «Устройство установлено и готово к использованию», переходим к настройке программы.
3. Настройка подключения платы
В верхнем меню программы размещен список пунктов. Вам необходим пункт Инструменты Плата.
В этом окне вам необходимо выбрать, какая плата была подключена к вашему компьютеру. Выбираем «Arduino Nano» .
Инструменты Плата Arduino Nano
После выбора нужной платы, нам необходимо выбрать порт. Переходим ко вкладке Инструменты Порт.
Если плата подключена к компьютеру корректно, у вас отобразятся все занятые на текущий момент COM-порты. Выбираем любой из доступных и проверяем, угадали-ли мы с портом.
4. Проверка работоспособности платы
Самый простой способ проверить, работает-ли ваша ардуино на том порту, который вы выбрали — это попробовать залить в нее тестовый скетч (прошивку).
Из верхнего меню открываем: Файл Примеры 01.Basics Blink
В новом окне Windpws у вас откроется код программы, которая мигает светодиодом. Теперь необходимо загрузить ее в плату, нажав на кнопку «загрузка».

В панели работы со скетчами — вторая кнопка:
Внизу программы (в черном окне) показывается процесс загрузки прошивок в плату. Если все прошло нормально, вы увидите сообщение «загрузка успешно завершена».
Подключение неофициальных плат
1. Скачивание и установка Arduino IDE
Для программирования платформы вам необходимо скачать и установить свежую версию программы для программирования Арудино — «Arduino IDE». Ее можно скачать с официального сайта по ссылке ниже.
При использовании русскоязычной версии Windows, программа автоматически выставит в интерфейсе русский язык.
В открывшемся окне следует нажать на кнопку «JUST DOWNLOAD«.
2. Первый запуск среды разработки
После того, как вы скачаете и установите Arduino IDE, вам необходимо подключить Arduino Nano в любой свободный порт компьютера и осуществить первичную настройку.
После того, как вы плата подключится к компьютеру, Windows сообщит об обнаружении нового устройства.
Скорее всего ваша Ардуино имеет встроенный китайский программатор CH340G, драйверы для которого Windows найти не удасться.
Если ваша Arduino Nano — Китай, драйвер придется устанавливать самостоятельно. Об этом система оповестит вас сообщением «Программное обеспечение для устройства не было установлено».
Если все произошло именно так, как мы описали выше, приступаем к установке драйверов по этой инструкции:
После того, как вы увидите сообщение «Устройство установлено и готово к использованию», переходите к настройке программы.
3. Настройка подключения платы
Вверху программы размещен список различных пунктов меню. Вам необходима вкладка Инструменты Плата.
В этом окне вам необходимо выбрать, какая плата была подключена к вашему компьютеру. Выбираем «Arduino Nano» .
Инструменты Плата Arduino Nano
После выбора платы, нам необходимо выбрать порт. Переходим ко вкладке Инструменты Порт.
Если вы уже подключили свою ардуино к компьютеру, то у вас должны отобразиться все занятые на текущий момент COM-порты. Выбираем любой из доступных и проверяем, правильный-ли порт мы выбрали.
4. Проверка работоспособности платы
Самый простой способ проверить, работает-ли ваша ардуино на том порту, который вы выбрали — это попробовать залить в нее тестовый скетч (прошивку).
Из верхнего меню открываем: Файл Примеры 01.Basics Blink
В новом окне будет открыт код программы для мигания светодиодом, самой базовой программы в среде разработки под микроконтроллеры. Для того, чтобы загрузить ее в вашу Nano, необходимо нажать кнопку «загрузка».

В панели работы со скетчами — вторая кнопка:
В нижней части программы (в черном окне) показывается процесс загрузки прошивок в плату. Если все прошло нормально, вы увидите сообщение «загрузка успешно завершена».
Фотографии разных версий платформы
Ниже представлены фотографии платформы разных версий и от разных производителей.
Многие задаются вопросом, чем китайская ардуино нано отличается от оригинала? Можем с уверенностью сказать, что основное отличие официальных платформ от сторонних заключается только в цене и упаковке товара.
- Все
- Официальная версия
- Аналог на базе CH340G
Ардуино питание от 5, 9, 12 вольт, можно ли подключить или надо использовать преобразователь?

Ардуино один из популярнейших микроконтроллеров на сегодняшний день. Описывать все плюсы этой сборки мы не будем, ведь если вы зашли сюда, то явно не просто так, а видимо поняли, что без него вам не обойтись. Мы догадываемся и о том, что вас мучает совсем другой вопрос. Можно ли питать Ардуино напряжением 12 вольт? Ведь когда мы работаем с компьютером от USB, то Ардуино питается от того же компьютера — 5 вольтами. Здесь все хорошо, все согласовано и нет никаких проблем! Но как только Ардуино «отправляется на службу», ее питание по проводу от компьютера прерывается словно пуповина у новорожденного, а кормиться должны все:) Здесь и приходиться что-то мудрить. Так вот, как можно запитать Ардуино?
Большинство плат требует наличие питания в диапазоне от 4.5 до 9 вольт через разъем внешнего питания и 4.5-5 вольт через USB. Однако в инструкции написано 7-12 вольт, то есть будем считать, что оптимальным вариант это 9 вольт.

На самом деле из 9 вольт на плате получается 5 и 3,3 вольта. Для каждой цепочки питания на 5 и на 3.3 в на плате установлен свой стабилизатор напряжения. Вот как скажем на фото это lm1117 стабилизатор для 5 вольт, а далее на 3,3 вольта. Нас будет интересовать именно стабилизатор на 5 вольт, так как именно на нем будет гаситься напряжение, а значит рассеиваться мощность при подаче завышенного напряжения. Давайте прикинем что и как.
Сколько жрет Ардуинка
Не трудно прикинуть что в среднем это выходы по 20-40 мА пусть штуки 3-4 и собственное энергопотребление и потери, порядка 50-70 мА. То есть 40*3+70=190 мА, ну так и есть! Однако если начнете вешать активные датчики, то есть то что еще надо и питать, то здесь еще плюсом 20-30 мА на каждый датчик. Обычно силы тока в 200-300 мA хватает, на этом и остановимся.
Ардуино при питании меньше 5 вольт
При меньшем напряжении работа будет нестабильной, порядка 3,4-4 вольт, а при последующем понижении не будет работать вовсе.
Ардуино питание от 5 вольт
Этот вариант питание от компьютера. Реализовать такое питание можно также от зарядного устройства телефона или купив преобразователь на Али. В этом случае напряжение будет номинально и lm1117 не придется стараться над тем, чтобы понизить напряжение, а значит рассеивать будет нечего, разве что собственные потери. Однако это вариант подходит лишь для того чтобы «заливать» Ардуино. Если же уже все сделано и программа залита, то напряжение 5 вольт маловато. В этом случае при значительных нагрузках на выходы, возможны провалы в работе.
Ардуино питание от 9 вольт
Можно ли запитать Ардуину от батарейки «Крона» или блока пальчиковых батареек? Можно! На холостом ходу или с минимальной нагрузкой она проработает у Вас не один месяц. А вот уже с небольшим увеличением нагрузки время автономной работы быстро сойдет на нет. Если как мы рассматривали выше повесить на батарейку что-то посложнее, вроде датчиков любящих покушать и светодиодов индикации в особом изобилии, то батарейки может хватить совсем не надолго. Говорить предметно в этом случае можно только лишь относительно каждого конкретного случая.
Что же касается блока питания, то его необходимо подключать к разъему внешнего питания. То есть lm1117 надо будет погасить 4 вольт. Давайте прикинем какую мощность надо будет рассеять lm1117. Пусть ток потребления 250 мА.
Вроде не так уж и много, да к тому же и спецификация 9 вольт для питания вполне допускает. Это напряжение учитывает все потери в элементах и стабилизаторе, а значит является одним из наиболее предпочтительных. Я бы сказал , что напряжение 9 вольт идеальный вариант для Ардуино.
Ардуино питание от 12 вольт
Здесь опять же два варианта где взять 12 вольт, это либо БП, либо аккумулятор. Да, да Ардуино довольно активно используется в автомобилях, а там 12-14 вольт — везде! Именно на автомобилистов и будем ориентироваться. Итак 14 вольт, сколько же надо погасить lm1117. Несложно посчитать 14-5=9 вольт. Считаем сколько надо рассеять.
P=U*I=9*0.25= 2.25 Вт. Здесь рассеиваемая мощность подлетела аж в 2,5 раза, все в общем-то пропорционально напряжению. Здесь вопрос уже о том, выдержит ли lm1117 или нет. Если заглянуть в даташит это малышки, то там выходной ток 0,8 А, но на напряжении 1,2 в, то есть она выдает мощность 1,2*0,8=0,96 Вт. Конечно, мощность возможная рассеиваемая и возможная выходная это все же разные вещи, но как-то все же эти величины должны сопоставляться. Кроме того, напряжение с которыми работает lm1117 до 13,8 вольт. Что может спасти, так это реализованная защита от перегрева и КЗ в микросхеме. По крайней мере в корпусе SOT-223 как у нас, подключать к 14 вольтам lm1117 не стоит. Все это на ваш страх и риск, а если уж сильно хочется, то с током не более чем на 1-2 светодиода, то есть 70-80 мА.
Как же подключить все-таки к 12 вольтам, получив 7-9 вольт и запитав Ардуино? Лучше всего использовать преобразователь или микросхему стабилизатор напряжения с более развитым корпусом скажем применяем микросхему lm7809 или КРЕН9, что одно и тоже. Корпус ТО-220, да еще лучше посадить на радиатор 5-10 кв. см из алюминия. Ток в этом случае до 2 А. Такой микросхемы с радиатором должно хватить! Далее приведена схема подключения для 7805, но 7809 подключается один в один!

Само собой ставим эту сборку до разъема питания. В итоге рассеиваемая мощность на падение напряжения в 2,25 Вт будет рассеиваться частично на lm7809 и часть в самой Ардуино lm1117.
Инструкция по подключению Arduino к адресной светодиодной ленте

На сегодня это наша третья статья. В прошлых статьях мы уже разобрали, что из себя представляет адресная лента и примерно поняли, как она устроена. А также поговорили о плате Arduino Nano , по средствам которой мы буем управлять лентой, установили необходимое программное обеспечения и даже написали свою первую программу. Теперь же пришло время подключить все вместе и сделать простую световую анимацию.
Для начала необходимо разобраться с потреблением светодиодной ленты. Дело в том, что каждый светодиод в пикселе потребляет до 20 мА, в зависимости от яркости его свечения. Напомню, что яркость свечения задаем мы сами из программы. Итого получается, что каждый пиксель может потреблять до 60 мА. Это довольно много, если учитывать, что мы можем использовать несколько метров ленты. Но в рамках данной статьи я буду экспериментировать с отрезком на 5 пикселей. И по этой причине запитаю адресную ленту прямо от Arduino Nano . Хотя я бы сам не рекомендовал так делать, лучше всего ставить отдельный блок питания и подключить ленту к нему, а с МК реализовать только управление.
Как мы помним из прошлых статей, управление будет осуществлено любым из цифровых выходов с D 2 по D 13. В данном случае я решил использовать D 5 (просто для примера, Вы можете использовать любой). Итак, подключаем ленту к Arduino Nano . GND к GND , +5 V к +5 V и D — input к D 5 на плате Nano . Я не стал ничего придумывать и просто припаял. Визуально выглядит адресная лента подключенная к Ардуино:
А вот схема подключения адресной ленты к Arduino:

Тут главное помнить, что адресная светодиодная лента имеет направление и важно не перепутать к какому концу ленты подключать плату Arduino. Но об этом я уже говорил в прошлых статьях и больше заострять на этом внимание не будем.
Следующим действием предлагаю подключить плату Адруино к компьютеру и уже заняться написанием нашей первой программы под адресную светодиодную ленту.
Пишем программу для управления адресной светодиодной лентой через Arduino. Установка библиотеки
Первый раз – это всегда очень волнительно. В первый раз можно наделать кучу ошибок, причем в последствии понимаешь, что данные ошибки и нарочно придумать сложно, не то, чтобы их случайно допустить, и это касается не только программирования. Но для того я и пишу данную статью, чтобы максимально облегчить путь от идеи до результата. Сейчас я достаточно подробно опишу все, что буду делать. Это поможет сформировать в голове новичка четкое представление о подключении Arduino.
Для начала давайте откроем IDE Arduino . Это программа, которую мы установили в одной из прошлых статей.
Получилось? Отлично! Далее нам необходимо установить библиотеку. Это нужно, чтобы управлять адресной лентой. Дело в том, что лента принимает определенный набор команд, но нам, как молодым разработчикам, пока не интересно, что это за команды и как они устроены. Мы просто хотим управлять цветами. И библиотека управления адресной лентой поможет нам сделать это максимально просто и быстро. Мы будем сообщать программе, где какой цвет хотим видеть, а программа, с помощью библиотеки, будет формировать наборы команд, понятные для микросхем адресной ленты. На самом деле все достаточно просто и очевидно, нужно только привыкнуть. Поэтому нажимаем «Скетч» -> «Подключить библиотеку» — > «Управлять библиотеками».

После этого появится окно «Менеджер библиотек». Кстати, данному окну нужно немного времени чтобы прогрузиться, поэтому пару секунд оно будет не активным, нужно подождать.
На данный момент мы будем использовать библиотеку « Adafruit NeoPixel ». Проще всего будет воспользоваться поиском. Как видно, в списке есть похожие название, нужно быть внимательным и не перепутать.

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

Пишем программу для управления лентой через Ардуино
И теперь мы приступаем к следующему этапу — написанию программы. Начнем с чего-то простого и потом будем постепенно совершенствовать. Наша первая программа будет выглядеть следующим образом:
#define LED_COUNT 5
#define LED_PIN 5
Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
strip.begin(); //Инициализируем ленту.
strip.setPixelColor(i, strip.Color(255, 0, 0)); // Красный цвет.
strip.setPixelColor(i, strip.Color(0, 0, 0)); // null
На первый взгляд это может показаться немного не понятным. Сейчас мы пройдемся по коду и используемые нами команды приобретут смысл.
Начнем с первой строчки. Тут мы объявляем библиотеку. Дело в том, что перед этим мы только ее скачали, а чтобы использовать в программе, необходимо ее объявить. Для этого используется директива # include <>. Где в скобках указано имя файла, который будет использоваться при компиляции, как часть кода. В нашем случае это название библиотеки. Кстати да, библиотека – это файл с программой.
Вторая и третья строчки, — тут мы задаем кол-во пикселей в нашей ленте и номер вывода, с которого будет организовано управление.
Обратите внимание: речь идет именно о количестве пикселей, то есть чипов в ленте, а не о количестве светодиодов. В некоторых адресных лентах, например с чипом ws2811 и ws2818 управление происходит кратно 3 диодам, поэтому лента с 60 диодами на метр будет управляться всего 20 пикселями. Если у вас адресная лента ws2812b, ws2813 или ws2815, то управление происходит кратно одному диоду, то есть количество пикселей = количество светодиодов.
Идем далее. Директива # define определяет идентификатор и последовательность символов, которой будет замещаться данный идентификатор при его обнаружении в коде. Давайте разберем вторую строку более подробно «#define LED_COUNT 5». «LED_COUNT» — это идентификатор, которому соответствует символ «5». Это позволит нам в теле программы (везде, где нужно) написать «5», писать «LED_COUNT». Возможно, это звучит немного непотяно, но подумайте вот о чем: нам пришло в голову изменить кол-во пикселей в ленте и тогда нам придется во всем коде менять их кол-во. Но благодаря # define , мы имеем возможность поменять всего лишь последовательность символов в идентификаторе. Понятное дело, в нашей программе возможно заменить все значения, потому что тут всего 2-а десятка строк. Но бывают и очень большие программы, где действия по замене потребуют огромного количества времени и терпения.
В пятой строке мы объявляем экземпляр класса Adafruit_NeoPixel и передаем его конструктору значения о длине ленты, выводе управления и типу адресной ленты. В данной статье мы не будем разбирать само понятие классов, поэтому предлагаю просто принять данную строчку как должное, где в скобках мы передаем необходимые параметры. Скажу только одно: тут мы создали объект под именем « strip ». И этот объект полностью отвечает за работу подключенной ленты.
В теле функции setup () мы сообщаем компилятору, что данный объект « strip » у нас будет использован. По сути, эту команду инициализации пока тоже нужно принять как необходимый минимум.
А дальше у нас уже идет самое интересное — основная часть программы, в которой и происходит волшебство, она находится в теле функции loop (). Но перед этим необходимо ввести новое понятие – цикл.
Цикл — это определенный блок программы, выполняющийся по кругу. Даже сама функция loop () является циклом. Циклы бывают конечными и бесконечными и у циклов так же, как и у функций, есть тело, где написаны повторяющиеся команды. В данной программе мы использовали цикл – for . Если данный цикл описан правильно, то он, как правило, конечен. Цикл for имеет 3 параметра «for(int i = 0; i < LED_COUNT; i++)< >». Первый параметр задает начальное значение для переменной i . Кстати, в данном случае переменная i инициализируется при начале работы цикла и забывается при окончании работы цикла. Второй параметр – это условие, при котором цикл продолжает выполняться. В нашем случае цикл выполняется до тех пор, пока i меньше 5. И третий параметр прибавляет единицу к i , при каждом повторе цикла. Сейчас ограничимся этим коротким объяснением. В дальнейшем у меня выйдет короткая статья, посвящённая программированию.
Итак, вернемся к программе. С 13-ой по 17-ую строку у нас расположен цикл, цикл на 5 повторений, где i меняется от 0 до 4 включительно.
В 14-ой строке мы вызываем метод setPixel , объекта strip и передаем ему два параметра. Где i это номер пикселя на адресной ленте, а « s trip.Color(255, 0, 0)» его цвет. Про то, как задается цвет по системе RGB мы уже говорили ранее. Скажу только очевидную вещь, «255, 0, 0» — это максимально красный цвет.
Получается, когда мы объявили объект strip и передали ему, что в нашей адресной ленте будет 5 пикселей, то в памяти было зарезервировано 5 ячеек, предназначенные для хранения цвета. И теперь в данном цикле мы их заполняем.
В 15-ой строке расположена команда, которая выводит на ленту цвета из памяти в МК (микроконтроллер). То есть последовательность такая: сначала пишем цвета в память, потом разом выводим их на адресную ленту. Изначально пока мы еще не успели заполнить память, там хранятся нулевые цвета «0, 0, 0».
И в 16-ой строке у нас стоит задержка в 300 млс.
Получается, изначально мы имеем 5 ячеек памяти, где записаны только нулевые цвета. Потом в цикле поочередно в каждую из ячеек пишется красный цвет, выводится на ленту и происходит небольшая задержка.
Теперь давайте разберем строки кода с 18-й по 23-ю. Тут происходит практически то же самое. В таком же цикле, мы обнуляем цвета, только это происходит без какой-либо задержки. И данные поступают на адресную ленту уже после выполнения всего цикла, то есть обнуления всех цветов. И уже после этого мы используем задержку.
На мой взгляд все достаточно просто. Светодиоды поочередно загораются красным, а затем гаснут и все это происходит по кругу. Результат выполнения программы вы можете увидеть ниже.
В данной статье мы написали свою первую программу для управления адресной лентой. Теперь Вы сами можете повторить это. Также Вы можете использовать не только красный цвет, но и самостоятельно поэкспериментировать с палитрой и более сложными цветами. А уже в следующих статьях мы постепенно усложним задачу.

