Электрификация

Справочник домашнего мастера

Ws2812b светодиодная лента готовые варианты на ардуино

Содержание

iОнлайн

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

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

Однако, она имеет ряд существенных недостатков, а именно:

  • Согласно рекомендациям по подключению внешних устройств к ардуино, между подключаемым устройством и ардуино рекомендуется устанавливать токоограничивающий резистор на 100 Ом, таким образом, в данную схему необходимо добавить соответствующий резистор на выходе D2 к которому подключена кнопка.
  • Схема питания ардуино в данном случае очень опасна и обладает двумя недостатками: 1) Если при отключенном блоке питания подключить ардуину к компу, придет писец, спалит цепи питания на ардуине и за одно может и USB порт компа захватить. 2) В виду того, что лента кушает нагрузку динамически, то в цепи питания ардуины возникают помехи, что может негативно сказаться на ее работе. Светильник может работать нестабильно.

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

Схема питания взята из статьи «Схема параллельного питания Arduino и сервомотора» Тут у нас конечно не серво-мотор, но суть и принцип тот же и так. Что дает нам эта доработка

  1. Наличие связки конденсатора (С1) и дросселя (L1) (простите, на схеме пришлось наририсовать катушку, ибо пиктограммы дросселя не нашел) позволяет избавиться от помех по линии питания
  2. Наличие диода Шоттки на входе питания ардуино позволяет защитить цепи питания микроконтроллера при подключении всей схемы для программирования на ПК. Проще говоря, питание не пойдет на ленту если вы подключите ардуино к компу.
  3. Для обеспечения стабильной работы, питать сикроконтролле мы будем не через пин VCC, а через пин RAW. Да! Как бы мы имеем дело с нормальными 5 Вольт и логично их подавать на VCC, а не на RAW. Но в таком случае, если наш китайскай блок питания будет сбоить, мы будем иметь стабильное напряжение и нормальную работу, а при подаче питания на вход VCC мы этого лишаемся.

Все. Со схемой мы определились. Теперь определимся с тем что нам понадобится для реализации электрической части

Блок питания на 5 вольт. Рекомендую как минимум на 3 Ампера.

Если будете делать светильник такой же большой как у меня, то рекомендую взять блок питания на 5 вольт и 6-10 амер

Управляемая светодиодная лента WS2812B .Если хотите красивые эффекты, то берите ленту с плотностью минимум 60 диодов на метр. Цвет подложки, и длину куска выбирайте по потребности. В моем случае понадобился отрезок около двух метров.

Конденсаторы необходимого номинала.

Резисторы на 100 и 220 Ом для реализации схемы.

Дроссели на 27 микро Генри.

Диоды 1N5819

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

Теперь о главном, о мозгах нашего светильника. В оригинальном проекте Алекс рекомендовал использовать Arduino nano, но давайте посмотрим правде в глаза, такая ардуинка нам не нужна. Она слишком большая, а нам столько выводов не надо. Для наших целей подойдет Arduino Pro mini. Она имеет точно такой же чип, как и Arduino Nano, но сама платка проще и гораздо меньше, так что в данном случае, такой выбор оправдан. В Китае много разных производителей ардуинок. Проведя анализ рынка, который я в скором времени опубликую, приобретать хорошие годные arduino pro mini (Arduino Pro Mini из китая) однако стоит отметить, что это китайский нонейм, хороший, годный но все таки имеющий в своей конструкции некоторые недостатки. Если вы хотите чтобы светильник радовал вас долго, рекомендую как и в случае с кнопкой, приобрести Arduino Pro mini от производителя RobotDyn (Arduino Pro Mini от Robotdyn) в данном случае покупка оказывается оправданной.

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

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

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

В качестве плафона была использована модель низкополигональной вазы (Twisted 6-sided Vase Basic) от автора Maak Mijn Idee . Для печати использовался белый SBS пластик от компании ФД пласт. Модель печаталась слоем 0,3 мм и соплом 1,0 мм. Дааа! Модель печаталась толстым соплом в режиме вазы. И вот что получилось:

Ваза печаталась на скорости 20 мм/сек около двух часов. Высота составила 20 см. В принципе прилично. И очень красиво. Но я поторопился отлепить ее от стола, в итоге ваза осталась без дна. Обидно… Пришлось перепечатывать…

Ну на этот раз дно осталось цело. Отлично! Цель достигнута. Двигаемся дальше. теперь нам нужно закрепить этот плафон. Для этого была спроектирована подставка:

Она состоит из двух деталей. Цилиндра и нижней части.

Нижняя часть, она же основа представляет собой усиленную платформу с местом для установки алюминиевого профиля 15х15 мм. К этой детали предъявляются повышенные требования к прочности, поэтому ее я печатал черным пластиком PETG от компании Bestfilament. Увы, процесс печати и готовую модель не заснял. Этот и последующие элементы печатались соплом 0,4.

Следующая деталь основания это так называемый 6-ти гранный цилиндр:

Этот элемент печатался черным SBS пластиком от FDпласт.

И так, все детали в наличии. Для начала я все сложил и прикинул как это будет выглядеть:

Чет какой-то он маленький, подумал я. Кошка по кличке Кнопка тоже не впечатлилась. Тут я решил, что нужно что-то менять. Взгляд упал на вазу без дна… А почему бы и нет?! В итоге решил увеличить светильник в два раза. Для этого мне понадобилось еще пара деталей.

Переходное кольцо:

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

После распечатки и предварительной сборки всего этого хозяйства получилось вот так:

А ничего так получилось. Корпус готов, пора приступать к сборке.

Отмеряем и режем профиль, сверлим необходимые отверстия и крепим его к подставке. Профиля понадобилось около 45 сантиметров. Для его крепления использовались болты М5 длиной 25 мм и гайка-барашек.

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

Дальше паяем электронику, все соединяем и подключаем. Проверяем мультиметром, чтобы небыло КЗ.

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

Ну и собственно говоря почти все. Хотя нет. Совсем забыл. Основа и цилиндр соединятся между собой с помошью саморезов 3х20. Не забудьте про это!

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

Что касается пайки, сборки схем, прошивке, все это есть на станице проекта у Алекса Гайвера Так что если у вас возникнут вопросы по прошивке и ее функционалу, обращайтесь к нему.

Для тех кто не знает чем прошить Arduino ProMini есть статья про программаторы «Программаторы для Arduino, 3Д принтеров и не только»

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

А вот несколько фотографий результатов моей работы:

Ну а теперь о самом важном. Файлы проекта расположены на моем репозитории на гитхабе и доступны по ссылке: https://github.com/Dark-Sarmat/WS2812B_LED_LAMP_V1

В репозитории содержатся файлы 3Д моделей для печати корпуса светильника.

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

Ну и на последок.

Если вы еще не обзавелись 3Д принтером и думаете какую модель выбрать, могу порекомендовать следующие модели:

3д принтер Anycubic i3 Mega

3д принтер Anycubic Mega-S (Anycubic S)

3Д принтер Anycubic 4MAX Pro

Данные ссылки на проверенных продавцов, которые продают оригинальные принтеры. Оказывают техническую поддержку и дают годовую гарантию.

Если вам понравилась статья и вы хотите поддержать сайт, вступите в нашу группу Вконтакте: https://vk.com/ionline_by

Если вы хотите оперативно получать уведомления о выходе новых статей, подключите себе PUSH уведомления по ссылке: https://ionlineby.pushassist.com/

Если вы из Беларуси и не знаете где взять пластики для 3Д печати, то вам помогут в минском магазине Printers3d.

Если вам понравилась эта статья и вам хочется поддержать мои начинания, сделайте репост в социальных сетях или поделитесь ей с друзьями.

Как сделать динамические поворотники на WS2812B и Ардуино


Привет всем самодельщикам! Сегодня рассмотрим один из множества вариантов применения светодиодной ленты типа WS2812B на адресуемых RGB-светодиодах. Такие ленты (как и отдельно монтируемые светодиоды WS2812B) можно использовать для подсветки фона «Ambilight» мониторов компьютера а также телевизоров, светодинамической подсветки в автомашине, картины, фоторамки, аквариума и так далее. Широко применяются разработке дизайне любых помещений, в форме новогодних иллюминаций или световых шоу. Использование светодиодной ленты типа WS2812В дает возможность получить большое количество интересных проектов.
Светодиод WS2812B представляет собой RGB-светодиод вставленный в один корпус с чипом WS2801.

Сам светодиод WS2812B представляет собой SMD элемент предназначенный для поверхностного монтажа. Внутри светодиод состоит из кристаллов красного света (red), зеленого света (green) и синего света (blue) кристаллов, находящихся в одном корпусе. С помощью этого светодиода можно получить большое ранообразие цветовых оттенков светового излучения.
Управление RGB-светодиода происходит через плату микроконтроллера Arduino.
Получил я от китайцев светодиодную ленту WS2812B.Она представляет собой отрезок длиной 1 метр с количеством светодиодов -144 штуки. Давно хотел попробовать для разных экспериментов. С помощью библиотек для Ардуино- Adafruit Neopixel и Fast led можно получить массу очень необычных световых эффектов. Но далее решил попробовать сделать динамические поворотники для автомобиля в так называем «стиле Ауди».Применять на практике эту схему я у себя пока не стал(как примут наши гиббддешники?) ,но эффект получился конечно очень привлекательный.

В роли контроллера управления светодиодной лентой служит плата Arduino Uno можно использовать и другие платы- Arduino Nano, Arduino Pro mini).
Весь процесс посмотреть в видео:

Перечень инструментов и материалов.
-плата Arduino Uno;
— понижающая плата 12В\5В на 3А;
— резисторы 100Ком-4шт;
-резисторы 47Ком-4шт;
— резисторы 500Ом-1шт;
-кнопки (для имитации включения сигналов) -4шт;
-макетная плата
-отвертка;
лабораторный блок питания
-паяльник;
-кембрик;
-тестер.
-соединительные провода.
Шаг первый. Сборка схемы.

Собрал схему с помощью макетной платы (бредборда). Резисторы подключенные к цифровым входами Ардуино нужны для преобразования входных сигналов автомобиля с 12-ти до 5 вольт. Резистор 500 Ом для защиты линии управления светодиодной ленты WS2812B.
Фото платы
В качестве преобразователя с 12В на 5В использовал готовую плату с Алиэкспресс. Можно применить любой преобразователь с подходящими параметрами. Преобразователь нужен для стабильного питания Ардуино и светодиодной ленты WS2812B.

Шаг второй. Программирование Ардуино.
Скетч\Прошивка (скачиваний: 1263)
Цифровые входы платы Ардуино №3,4 служат для включения левого и правого поворота. Пин №5 –включение стоп сигнала, пин №6 –включение заднего хода. Пин №8 –управляющий сигнал лентой WS2812B.
В среде Arduino IDE загружаем скетч (ссылка выше). Два варианта скетча-один для передней части автомобиля, другой – для задней. Используйте какой вам нужен. В начале скетча можно выставить нужное вам количество светодиодов. Так же можно откорректировать скорость поворотников соответственно вашему авто. Еще можно изменить яркость светодиодов параметром strip.Color(103,31,0) –менять первые две цифры от 0 до 255. То есть можно немного поэкспериментировать.
При нажатии на нужную кнопку мы подаем сигнал на включение нужного параметра. При правильной сборке схемы она как правило сразу начинает работать.
Фото в работе.


Неплохой эксперимент получился с этой конструкция выходного дня. Было интересно своими руками сделать и запрограммировать данную схему. Сделать самостоятельно такой прибор по силам начинающему без больших затрат времени и финансов.
Попутно световые эффекты с этой лентой(из библиотек Adafruit Neopixel и Fast led)
Фото с световыми эффектами.


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

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

*Заполняя форму вы соглашаетесь на обработку персональных данных

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

RunLed — бегающие LED поворотники для автомобиля

RunLed – современные бегущие LED повторители поворотов или стопов автомобиля. Рассмотрим принцип установки и работы РанЛед, комплектацию, характеристики и цену. В конце статьи видео-обзор RunLed.

Содержание статьи:

  • Что такое RunLed
  • Преимущества
  • Принцип установки и работы
  • Цена и комплектация RunLed
  • Видео

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

Как работают повторители RunLed


Основой для RunLed послужила светодиодная технология, точней быть это светодиодная лента со специальным распределением контактов и элементами освещения. В пару производитель добавил блок управления, который управляет лентой и распознает поступившие сигналы.
Дополнительный плюс нового РанЛед в том, что он многофункциональный и не заточен сугубо, чтоб повторять направление поворотов. Помимо основного назначения, бегающие поворотники RunLed может послужить в качестве хвостового фонаря, чтоб выделить автомобиль из общего потока. Так же может служить как повторитель стопов, сигнала аварийной стоянки и других режимов задних световых приборов. При желании владелец может выбрать один из режимов отображения RunLed: бегущая строка, моргающий режим и другие. В свою очередь так же можно выбрать оттенок свечения, от ярко белого до насыщенно синего.
Принцип устройства РанЛед весьма прост, светодиодная лента в первую очередь повторяет указания и команды задних фар автомобиля (повороты, стопы, габариты и другое). В режиме ожидания, водитель может выбрать один из режимов RunLed, включив один из запрограммированных режимов.

Плюсы LED поворотников РанЛед


Каждый сразу же скажет, что подобное можно сделать самому или же купить китайский аналог, но как показывает практика надежность RunLed в десятки раз лучше. Причин на это несколько, во-первых, для производства используют сверх яркие и многофункциональные светодиоды. В зависимости от поданного питания или заданной команды они способны светится разными оттенками. Во-вторых, помимо стандартного свечения лента может отображать разные режимы, что говорит о нестандартном блоке питания.
По отзывам владельцев и словам производителя, такая лента способная проработать как минимум 50000 часов. Управление и установка всей системы RunLed продумана до мелочей, за счет чего с ней сможет справиться даже неопытный в электронике владелец. В набор входят все необходимые предохранители и переходники для подключения к общей розетке автомобиля. Бегающие поворотники РанЛед можно устанавливать на автомобили иностранного или отечественного производителя.

Как устанавливать и как работает RunLed


Как уже говорили, установить набор RunLed достаточно просто, для этого не нужно быть специалистом в плане электрики. Соблюдая все необходимые инструкции и шаги, указанные в документации к набору, даже неопытный владелец с легкостью может установить и настроить все.
Прежде чем приступать к установке бегающих LED поворотников RunLed, необходимо определиться, как и где будет установлен набор, точней светодиодная лента. Производитель рекомендует скрыть её за деталями кузова, таким образом, чтоб не было прямой видимости, иначе будет яркое и прямое свечение для едущих водителей позади. Следующий шаг по установке это замер длины ленты RunLed к длине места для крепежа. Лента не должна свисать или быть более длинной, нежели поверхность. Для того, чтоб подогнать длину, вся лента разделена не небольшие сектора, все что необходимо – просто отрезать острыми ножницами определенный сектор, тем самым укоротив ленту.
На этом этапе нужно внимательно прочитать инструкцию, рассмотреть место отреза и только потом отрезать, в ином случае можно испортить часть ленты.
Второй шаг по установке RunLed – подготовка поверхности. По рекомендации продавца, поверхность необходимо промыть, высушить и обезжирить. К тому же рекомендуют, чтоб на поверхности не было ржавчины или сколов, иначе со временем в этом месте лента попросту отстанет, а на скорости вовсе может повредиться. Устанавливать ленту рекомендуют возле заднего бампера, на стыке кузова и уплотнителя крышки багажника. Поверхность и место крепежа не должны быть подвижными, в противном случае могут разорваться провода или же повредится сама лента. Поэтому набор RunLed не рекомендуют ставить на саму крышку багажника.
Процесс крепежа ленты RunLed совсем прост, обезжирив поверхность и подогнав необходимую длину. Прежде, чем прикрепить ленту, необходимо высчитать центр ленты и центр автомобиля по ширине. За счет такого расчета будет равномерное свечение в режиме аварийной стоянки, как правило, свечение идет от центра и по сторонам в виде бегущей строки. Сняв защитную поверхность, за счет самоклейки ленту RunLed нужно притулить к поверхности и несколько раз хорошо прижать пальцами.
Подключить ленту RunLed не тяжелее, чем крепить её. Производитель заранее позаботился об этом, в инструкции прописаны все необходимые шаги по подключению к шине автомобиля. Чтоб обезопасить себя во время подключения, рекомендуют снять клемму с аккумулятора автомобиля, в случае если обесточить автомобиль нет возможности, то для подключения рекомендуют использовать инструменты (плоскогубцы, пинцет и изолента). В схеме указано, какие провода блока RunLed соответствуют функциям задних стопов автомобиля.

Характеристики повторителей RunLed
Материал ленты Силикон
Цвет подсветки RGB
Размер ленты 1200 мм (сектор отреза 10 мм)
Рабочее напряжение 12V
Потребляемая мощность 16 Вт
Рабочая температура -40 — +60 С
Гарантия на набор RunLed 1 год

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

Стандартизация подключения проводов RunLed в большинстве случаев будет одинаковой. Всего от блока управления выходит 9 проводов, каждый из которых или пара отвечает за определенную функцию. По стандарту черный провод отвечает за массу в автомобиле (он же минус по-другому). Далее идет пара проводов белый и красный, предназначенные для стопов автомобиля. Вторая пара красный и желтый отвечают за указатели поворотов, еще одна пара красный и зеленый за габариты. Последняя пара проводов RunLed – красный и голубой отвечают за выбор эффекта свечения ленты.
С инструкции проводов следует, что черный провод ленты RunLed отвечает за массу (минус), красный за плюс (система рассчитана на питание от 12V). Поэтому подключать их стоит внимательно и лучше всего к габаритам, тем самым днем не будет расходоваться лишнее свечение, а при включении габаритов выглядеть более эффективней и привлекательней.
Принцип работы самого набора РанЛед весьма прост. При правильном подключении и соответствии установки по схеме, система придаст неповторимый образ автомобилю. При включении одно из поворотов, лента начинает отображать такой же эффект но с помощью бегущей строки в сторону поворота. Стопы могут отображаться в нескольких режимах, обычным подсвечиванием, бегающая строка или же несколько других эффектов по желанию владельца.
Интересней всего отображаются эффекты аварийной стоянки и обычные эффекты свечения. Как правило, они начинаются от центра автомобиля и расходятся по сторонам, или же светятся сегментами по очереди. Эффект свободного отображения может менять цвет, направления или вовсе быть хаотичным, без определенной последовательности.

Комплектация и цена набора RunLed

На первый взгляд, кажется, что такой светодиодный тюнинг РанЛед стоит немало денег, на самом же деле цена умеренная и доступна каждому желающему. В набор RunLed входят все необходимые детали и компоненты для правильной установки, производитель заранее позаботился, продумав каждую мелочь.
Купить бегающие светодиодные повороткники RunLed можно в Интернете, но стоит опасаться подделок, так как возврат или качество в таком случае никто не гарантирует. Цена такого набора в обычном Интернет магазине может стартовать от 6000 рублей. Перейдя по ссылке ниже, дистрибьютор предлагает купить бегающие поворотники РанЛед со скидкой 50%. Стандартная цена составляет 4990 рублей (2046 грн). Со скидкой цена составляет 2490 рублей (1021 грн).
В набор комплекта RunLed входит:

  • многофункциональная LED лента;
  • блок управления;
  • руководство по установке;
  • руководство по эксплуатации.

На все детали RunLed производитель предоставляет гарантию, к тому же покупатель вправе отказаться от заказа в первые 14 дней, не объясняя причину возврата. В случае поломки одного из элементов набора, производитель обязуется заменить его или же вернуть полную стоимость набора. В таком случае срок подачи заявления от момента продажи до возврата не должен превышать 6 месяцев, а так же должны быть сохранен чек о покупке и упаковка.
Если же бегающие светодиодные повороткники RunLed был ненадлежащего качества, то возвращена будет полная стоимость за набор, включая стоимость доставки. Если же товар надлежащего качества, но в течении 14 дней происходит возврат, то сумма будет только за сам набор RunLed, стоимость доставки не возвращается. По данным производителя, среднее время доставки набора RunLed курьером по городу составляет не больше дня (если товар находится на складе в городе). В таком случае оплата за доставку и товар будет наличными в руки курьеру.


В другие города, доставка занимает от 1 до 3 дней, а стоимость доставки составит порядка 245 рублей. Что касается почтовой пересылки набора РанЛед, то среднее время будет порядка 5-7 дней, а оплата будет только наложенным платежом. Никакой предоплаты при покупке набора RunLed нет, а значит и риск быть обманутым исключен 100%, только наложенным платежом по предварительному согласованию. Заказ товара осуществляется в 4 простых шага. После подачи заявки, в течении 15 минут перезванивает менеджер для уточнения и подтверждения данных покупателя. Как правило, отправка осуществляется 2 раза на день, а значит, заказав утром, товар 100% отправят в тот же день.
Покупая бегающие светодиодные повороткники RunLed для своего автомобиля, вы сделаете его не только уникальным и выделите с общего потока на дороге, но и будете уверены в качестве приобретенного, к тому же по цене на порядок ниже рыночной. Современные системы тюнинга в направлении освещения базируются на светодиодах, и новый RunLed не стал исключением.
Видео-обзор светодиодных повторителей RunLed:

Ghostgkd777 ›
Блог ›
Поворотник бегущий огонь

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

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

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

На данный момент уже реализовано две версии прошивки с тремя версиями платы.

Ну а теперь более подробно.

Версия 1.0.

Позволяет реализовать поворотник «бегущий огонь» с заполнением на 9 каналах.
Автоматически отключается от АКБ после выключения поворотников и не потребляет ток.
Имеет функцию удлинителя поворотов («лентяйка»).
Можно подключить лампу через встроенный полевой транзистор, так избавляемся от проблемы асинхронной работы бегущего огня и лампы поворотника. Время свечения лампы поворотника при этом можно менять в довольно большом диапазоне.

Версия 2.0.

Отличается от версии 1 отсутствием удлинителя поворотов и возможностью регулировки скорости загорания модуля светодиодов для обеспечения синхронизма с сигналом поворотника.

Версия 2.1.

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

Применяемые детали расписаны на схеме. Транзисторы нужно ставить на ток не менее тока нагрузки светодиодных модулей и напряжением не менее 20В. Рекомендую в качестве выходных транзисторов использовать n-канальные mosfet в корпусе SOT-23.

Платы разработаны в SL и DipTrace для всех трех версий.

Подключение

Необходимо подвести к плате питание +12В от АКБ. НЕ с ключа зажигания, а с АКБ. Это главный минус этой версии, почему и были сделаны вторая и третья.
Вывод IN L® подключается к штатной проводке автомобиля к проводу идущему на поворотник.
Светодиодные модули подключаются к выходам LED1-9 и светятся в соответствующей последовательности.
На вывод OUT L® подключается лампа поворотника, если лампа вообще остается иначе не подключаем ничего.
Регулировка времени горения лампы поворотника осуществляется установкой перемычки от вывода IN LED(X) к одному из выводов LED1-9. Чем выше номер вывода, тем дольше горит лампа.

Основным преимуществом этой версии является отсутствие необходимости в подключении платы к плюсу АКБ, что резко упрощает ее подключение. Но за удобства нужно платить.
По этой причине в данной версии и версии 2.1 отсутствует функция удлинителя поворотов.
Регулировка скорости заполнения огней настраивается установкой перемычки относительно массы на выводы SPEED1-5. Чем больше номер, тем медленнее заполнение. Регулировкой скорости заполнения осуществляется настройка времени горения модуля в такт лампам поворотников. Синхронизация автоматическая. В этой версии сохранена возможность подключения ламп поворотников через мосфет к контроллеру для регулировки времени горения.

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

Небольшая демонстрация работы первой версии прошивки:

И вторая версия:

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

модули только сзади модули и спереди, и сзади

Светодиодные поворотники Бегущий огонь. Версия 2.1.1.
Поворотник бегущий огонь + ДХО. Версия 3.
Поворотник бегущий огонь + ДХО. Версия 3. Испытания и настройка.

Поворотник бегущий огонь + ДХО. Версия 3.1
Поворотник бегущий огонь + ДХО. Версия 3.1 Испытания и настройка.

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

Адресные светодиодные ленты

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

Адресная светодиодная лента WS2811

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

Как правило,л ента содержит 3-4 контакта для подключения. Два вывода используются для питания – 5 Вольт и земля, остальные один или два – логический, для управления свечением.

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

Самыми популярными адресными светодиодными лентами являются устройства на чипах WS2812b и WS2811. В первом случае чип находится прямо внутри светодиода, то есть один прибор управляет свечением одного излучающего диода. Питание ленты составляет 5 вольт. Во втором случае чип помещается отдельно, и к нему подключаются 3 диода. Мощность – 12 вольт.

Купить адресную светодиодную ленту

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

Адресная светодиодная лент 1m/4m/5m WS2812B 30/60/144 pixels,IP30/IP65/IP67 DC5V Светодиодная лента DC5V WS2812B 1m/4m/5m 30/60/74/96/144 pixels/leds/m от надежного поставщика Адресная светодиодная лента DC5V 1m/4m/5m WS2812B

Как работает адресная светодиодная лента

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

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

  • Black PCB / White PCB – цвета подложки;
  • 1м/5 м – длина адресной ленты;
  • 30/60/74 и т.д. – сколько светодиодов приходится на 1 метр ленты;
  • IP30, IP65, IP67 – степень влаго- и пылезащищенности ленты =.

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

Видео инструкции и ролики

Обучающее видео на канале HomeMade:

Видео по созданию бегущей строки на базе ленты ws2112

Лента на базе ws2812b

Лента на базе ws2812b

Лента на чипе ws2812b является более совершенствованной, чем ее предшественник. ШИМ драйвер в адресной ленте компактен, и размещается прямо в корпусе светоизлучающего диода.

Основные преимущества ленты на основе ws2812b:

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

Лента оснащена четырьмя выходами:

  • питание;
  • выход передачи данных;
  • общий контакт;
  • вход передачи данных.

Максимальный ток одного адресного светодиода равняется 60 миллиамперам. Рабочие температуры лежат в пределах от -25 до +80 градусов. Напряжение питания составляет 5 В +-0,5.

ШИМ драйверы ленты 8-мибитные – для каждого цвета возможно 256 градация яркости. Для установки яркости нужно 3 байта информации – по 8 бит с каждого светодиода. Информация передается по однолинейному протоколу с фиксированной скоростью. Нули и единицы кодируются высоким и низким уровнем сигнала по линии.

1 бит передается за 1,25 мкс. Весь пакет из 24 бит для одного светодиода передается за 30 мкс.

Пример подключения к ардуино

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

Лента ws2812B подключается к Ардуино следующим образом.

Лента ws2812B подключается к Ардуино следующим образом

Еще один вариант подключения:

Подключение ws2128 к Ардуино

Выходы питания с ленты 5В и земля соединяются с соответствующими контактами на микроконтроллере Ардуино. При подключении отрезка с более чем 13 светодиодами потребуется выносной блок питания. Земля и минус блока питания должны быть соединены друг с другом. DINможно подключить к любому цифровому порту на Ардуино. Он используется для получения данных с контроллера.

Цифровой вход ленты идет на вход контроллера, поэтому между ними нужен токоограничивающий резистор номиналом 100-500 Ом. С его использованием нагрузка на пин будет ниже. На другом конце ленты также есть 3 контакта, к которым можно подключить отрезки различной длины.

Каждый блок ленты состоит из трех светодиодов. Соответственно, для управления подсветкой потребуется 3 байта – по одному на каждый свет. Каждый байт принимает значение от 0 до 255 – это значит, что есть возможность задания более 16 миллионов оттенков.

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

  • ШИМ драйвер забирает первые 3 байта, остальные передаются на выход D0;
  • затем пауза длительностью 50 мкс;
  • второй драйвер принимает следующие 3 байта.И так далее.
  • Когда длительность задержки становится более 50 мкс, передача окончена и начинается второй цикл.

Причины проблем при работе с адресной светодиодная лентой:

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

Библиотеки Ардуино для работы со светодиодной лентой

Для управления адресной светодиодной лентой существует 3 библиотеки: FastLED, AdafruitNeoPixel и LightWS2812. Наиюолее популярной является первая. Она поддерживает все версии Ардуино и различные протоколы данных, которые используются не только для адресной ленты. Но надо иметь в виду, что FastLED более ресурсоемкая.

Вторая библиотека, AdafruitNeoPixel, чаще используется при работе со светодиодными кольцами. Возможностей меньше, скорость ниже, но она менее требовательна к ресурсам, в ее составе только самое нужное. Поддерживает все версии Ардуино. Третья библиотека используется не очень часто.

Работать с библиотеками FastLED и Adafruit NeoPixel одинаково просто. Их отличия заключаются в функциональности и объеме занимаемой памяти.

Основные моменты подключения ленты:

  • Команды передаются друг за другом, и нужно не перепутать начало и конец. D1 принимает команды, D0 используется для подключения дополнительных отрезков.
  • Для подключения цифрового входа нужно резистор.
  • При монтаже адресной светодиодной ленты нельзя допускать статического электричества.
  • Если между лентой и Ардуино расстояние более 15 см, сигнальный провод и землю нужно перекрутить в косичку. Это поможет избежать наводок.
  • Питание. Каждому светодиоду в сегменте нужно 20 мА. Суммарный ток будет составлять 60 мА. Нужно просчитать общий ток ленты, и, исходя из полученного значения, подбирать блок питания. Например, лента длиной 1 м с 60 диодами будет потреблять 60*60=3600 мА=3,6 Ампер. Блок питания подбирается с похожей мощностью.
  • Силовые точки должны быть запаяны качественно. Провода должны иметь такое сечение, чтобы выдерживать подаваемую нагрузку. Минимальное сечение 1,5 кв.м. При тонких проводах заданный программно белый цвет будет отдавать красным оттенком.
  • Помехи. Лента, которая мигает, может создать помехи на линии. Если она с контроллером получает напряжение от одного источника, то помехи пойдут на микроконтроллер. Это может привести к нестабильности работы и различным сбоям. Решением проблемы будет установка электролитического конденсатора емкостью 470 мкФ на питание микроконтроллера и конденсатор на 1000 или 2200 мкФ на питание ленты.
  • Если лента и устройство управления питаются от источников с разным напряжением, нужно использовать преобразователь уровня.
  • Рекомендуется подавать на ленту менее 5 В питания.
  • Питание в длинной ленте советуется распределить по всей длине. В ином случае моет произойти перегрев токопроводящих дорожек.
  • На ленте имеется толстый слой меди. От точки питания по ленте может падать напряжение. Для удаления подобной проблемы нужно дублировать питание при помощи медного провода сечением минимум 1,5 кв.м. через каждый метр.

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

Arduino DIY Блог, для самодельщиков

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

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

Особенность этой цветомузыки в том, что ее не нужно подключать к источнику аудио сигнала, так как она получает аудио данные, благодаря встроенному в нее модулю микрофона. Он подключен через усилитель напряжения к АЦП ардуины. Усилитель собран на транзисторе КТ3102, у которого есть зарубежные аналоги.

Для выбора режимов на цветомузыке имеются две кнопки, color и pattern. Кнопка color переключает цветовые схемы, их всего 3, а кнопка patern переключает динамические режимы цветомузыки, их всего 8.

Для настройки чувствительности и яркости установлен потенциометр param, это переменный резистор с изменяемым сопротивлением от 0 до 10 кОм. Он так же подключен к АЦП и в зависимости от его положения происходит программная обработка параметров. Можно модифицировать код и установить вместо потенциометра энкодер, но это уже будет реализовано в другом проекте.

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

Светодиодная лента основана на полноцветных, управляемых адресных светодиодах ws2812b. Плотность ленты я выбрал 60 светодиодов на 1 метр. На мой взгляд это оптимальное соотношение для многих задач. К питанию светодиодной ленты нужно отнестись серьезно , так как на максимуме она потребляет до 3,6 А на 1 метр. Конечно вероятность такого сценария что цветомузыка включит все светодиоды белым цветом и еще на полную мощность, равна нулю. Но тем не менее лучше сразу приобрести хороший блок питания. Как минимум на 5 Вольт и 5 Ампер.

Схема цветомузыки.
По схеме комментировать особо нечего. Нужно только настроить среднюю точку усилителя на транзисторе КТ3102. Настройка сводится к подбору резистора смещения 200 кОм или резистора нагрузки 1 кОм, нужно добиться половины напряжения питания на коллекторе транзистора или входе A0. Транзистор можно заменить любым n-p-n аналогом.

Потенциометр лучше использовать линейный с сопротивлением от 10 до 50 кОм.

Если Вы в своем проекте будете использовать контроллер Arduino pro mini, то припаяйте сразу керамический конденсатор 0,1 мкФ на 20-й вывод (ARef) микроконтроллера ATmega328.

Основные комплектующие
Arduino Pro mini
Светодиодная лента на WS2812B
Микрофон с усилителем
Потенциометр 20кОм
AC-DC адаптер питания 5 В, 5 А

Скетч для Ардуино ws2812b
Я использовал в своем проекте, код цветомузыки Lumazoid с небольшими модификациями. Оригинальный скетч можно скачать с гитхаба
Еще нужно добавить в папку libraries, используемые в проекте дополнительные библиотеки NeoPixel.h и ffft.h

Если Вы в скетче не прописали параметры своей светодиодной ленты, то их можно изменить. Для этого нажмите кнопку pattern, не отпуская ее включите питание. Вращая потенциометр нужно выбрать плотность используемой светодиодной ленты, по светящимся красным светодиодам: первый — 60, второй — 120 или третий — 180 светодиодов. Для сохранения параметров в EEPROM еще раз нажмите кнопку pattern.

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

Цветовую схему лучше выбрать 3-ю, так как она наиболее красочная. В этом режиме каждому цвету соответствует свой частотный диапазон. Всего 8 частотных диапазонов, перечисляю их цвета от самого низкого до самого высокого: красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый, белый.
Если удерживать кнопки color, pattern и вращать потенциометр param, то можно ограничивать частотный диапазон убирая высокие — средние и так далее до самых низких частот(красный светодиод). Например если Вам нужно что бы цветомузыка реагировала только на низкие звуки, то достаточно оставить только низкий диапазон частот.

Видео демонстрирующее возможности цветомузыки.
Сразу прошу извинить меня за качество ролика, снимал дешевым смартфоном.

Надеюсь я ничего не упустил. Если у Вас возникнут вопросы, я с удовольствием на них отвечу.
Обсуждение на форуме cyber-place.ru

Подключение адресной светодиодной ленты WS2812B к Arduino

Опубликовано: 23.02.2017 20:25

Введение

Приветствую всех. Мы продолжаем знакомить Вас со светодиодными лентами. На этот раз мы рассмотрим адресную RGB светодиодную ленту WS2812B. Лента основана на светодиодах WS2812B в корпусе LED 5050, куда в корпус производители поместили не только три встроенных светодиода (Красный, Зеленый, Синий), но и управляемый ШИМ драйвер, управляющий их яркостью. Благодаря этому мы можем получить произвольный цвет, изменяя яркость встроенных светодиодов, а так же управлять отдельно взятым пикселем на ленте. Собственно, три встроенных разноцветных светодиода вместе с ШИМ драйвером и образуют светодиод WS2812B.

Немного запутывает, не правда ли? Светодиод, который содержит себе три разноцветных светодиода, но при этом сам — не светит, а светятся те три, что в него встроены. Поэтому мне проще называть его пикселем, нежели светодиодом. И далее, если я упоминаю пиксель – знайте, что это светодиод WS2812B.

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

Технические характеристики

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

  • Светодиод WS2812B работает от напряжения 5В (±0.5).
  • Ток ~20мА на один встроенный светодиод, то есть ~60мА на пиксель в целом.
  • Рабочая температура от -20 до +80 ℃.

Остальное можете посмотреть самостоятельно в даташите.

Подключение

Подключается светодиодная лента довольно-таки просто, необходимо подать на +5V и GND, плюс (+) и минус (-) от 5В блока питания, а контакт DIN соединить с портом Arduino, как правило, по умолчанию используется 6-й порт Arduino, но вы вправе выбрать и любой другой свободный порт. Так же рекомендуется соединить земли Arduinoи блока питания, как нарисовано на рисунке ниже.

Будьте внимательны, лента на светодиодах WS2812B имеет направление, с одной стороны она имеет контакты DIN, +5V, GND, а с другой стороны DO, +5V, GND, подключать необходимо именно вход, то есть DIN, иначе лента не будет работать. Так же на ленте нарисованы стрелки, указывающие на направление.

Протокол

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

Каждый светодиод WS2812B имеет один вход (DIN) и один выход (DO). Выход каждого светодиода подключается ко входу следующего. Подавать сигналы же надо на вход самого первого светодиода, таким образом, он запустит цепь, и данные будут поступать от первого ко второму, от второго к третьему и т. д.

Команды светодиодам передаются пачками по 24 бита (3 байта, один байт на каждый цвет, первым передается байт для зеленого, потом для красного, и заканчивает байт для синего светодиода. Порядок бит — от старшего к младшему). Перед каждой пачкой идет пауза в 50 мкс. Пауза больше 100 мкс воспринимается как окончание передачи. Все биты, будь то 0 или 1, имеют фиксированное время 1.25 мкс. Бит 1 кодируется импульсом в 0.8 мкс, после чего идет пауза в 0.45 мкс. Бит 0 кодируется импульсом в 0.4 мкс, после чего идет пауза в 0.85 мкс. Собственно, наглядная диаграмма на фото ниже. Так же допускаются небольшие погрешности в 0-150 нс на каждый фронт. Ну и следует учесть, что подобное необходимо повторить для каждого светодиода на ленте, после чего сделать паузу минимум в 100 мкс. Потом можно повторить передачу.

Глядя на все эти цифры, становится ясно, что сделать все это, используя стандартные функции digitalWrite, delay и тому подобные — попросту невозможно, ввиду их долгой работы и неточности. Реализовать подобный протокол можно только использовав специальные библиотеки вроде CyberLib или написав собственную на чистом Си или, того хуже для нынешнего программиста, на Ассемблере.

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

Библиотеки

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

  • Библиотека FastLED, разрабатывается Даниэлем Гарсиа и Марком Кригсманом. Имеет свой сайт, справочную систему и большое сообщество в ~5000 человек. Библиотека написана на чистом Си, без использования Wiring. FastLED поддерживает все виды Arduino (и не только), а так же умеет работать с кучей различных протоколов и интерфейсов. В том числе и протокол для управления лентами на светодиодах WS2812B.
  • Библиотека Adafruit NeoPixel (Полное описание на нашем сайте), разрабатывается компанией Adafruit Industries. Предназначена для работы со светодиодными лентами и неопиксельными кольцами, продаваемыми в их интернет магазине. Библиотека написана на Си и Ассемблере с небольшим использованием Wiring. Эдакая солянка. Поддерживает все виды Arduino. Содержит меньший функционал по сравнению с FastLED, немного медленней, но имеет более компактный вид, только основное для работы.

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

Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку FastLED

// Подключаем библиотеку FastLED. #include «FastLED.h» // Указываем, какое количество пикселей у нашей ленты. #define LED_COUNT 30 // Указываем, к какому порту подключен вход ленты DIN. #define LED_PIN 6 // Создаем переменную strip для управления нашей лентой. CRGB strip; void setup() { // Добавляем ленту. FastLED.addLeds(strip, LED_COUNT); } void loop() { // Включаем все светодиоды. for (int i = 0; i < LED_COUNT; i++) { strip = CRGB::Red; // Красный цвет. } // Передаем цвета ленте. FastLED.show(); // Ждем 500 мс. delay(500); // Выключаем все светодиоды. for (int i = 0; i < LED_COUNT; i++) { strip = CRGB::Black; // Черный цвет, т.е. выключено. } // Передаем цвета ленте. FastLED.show(); // Ждем 500 мс. delay(500); } Скетч использует 3758 байт (11%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 187 байт (9%) динамической памяти, оставляя 1861 байт для локальных переменных. Максимум: 2048 байт.

Пример Blink используя ленту WS2812B (с 30 светодиодами) и библиотеку Adafruit NeoPixel

// Подключаем библиотеку Adafruit NeoPixel. #include «Adafruit_NeoPixel.h» // Указываем, какое количество пикселей у нашей ленты. #define LED_COUNT 30 // Указываем, к какому порту подключен вход ленты DIN. #define LED_PIN 6 // Создаем переменную strip для управления нашей лентой. Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); void setup() { // Инициализируем ленту. strip.begin(); } void loop() { // Включаем все светодиоды. for (int i = 0; i < LED_COUNT; i++) { strip.setPixelColor(i, strip.Color(255, 0, 0)); // Красный цвет. } // Передаем цвета ленте. strip.show(); // Ждем 500 мс. delay(500); // Выключаем все светодиоды. for (int i = 0; i < LED_COUNT; i++) { strip.setPixelColor(i, strip.Color(0, 0, 0)); // Черный цвет, т.е. выключено. } // Передаем цвета ленте. strip.show(); // Ждем 500 мс. delay(500); } Скетч использует 2592 байт (8%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 40 байт (1%) динамической памяти, оставляя 2008 байт для локальных переменных. Максимум: 2048 байт.

Подытожим

Как вы видите из скетчей выше, работать с обеими библиотеками довольно таки просто. Но библиотека FastLED занимает больше места в памяти Arduino, более того чем больше пикселей в вашей ленте тем больше памяти она зарезервирует для своей работы, а точнее 3 байта на каждый пиксель. Таким образом подключить к Arduino можно не более 600 пикселей при использовании минимальной логики. По этому, мне больше приглянулась библиотека Adafruit NeoPixel. В ней только нужное для работы со светодиодными лентами и более рациональное использование памяти. Какую из этих библиотек использовать, решать, конечно, вам. Обе они работают и со своею задачей справляются на 5+.

Сообщества ›
Arduino для автомобиля ›
Блог ›
Управление адресной лентой ws2812 с использованием библиотеки Adafruit NeoPixel.

О чем это я и для кого?
Я хочу рассказать как быстро и просто можно оживить ленту на базе «умных» светодиодов типа WS2811(12), SK6812, INK1003 и других без лишних затрат, имея только ардуино, библиотеку Adafruit NeoPixel, кусок ленты и час свободного времени, чтобы получить подобную занятную иллюминацию или что то еще в соответствии с вашей целью. Моя цель — не эта гирлянда или готовый скетч. Весь код в тексте и в прилагаемом скетче служит только для того, чтобы показать возможности сторонней библиотеки от компании Adafruit, накидан на скорую руку, и никак не является образцом для подражания или пособием по программированию. Он всего лишь работает с кусочком ленты и демонстрирует несложные эффекты. Вам не нужно ничего тупо повторять. Считайте это подробным справочником по нескольким функциям NeoPixel с примерами их использования в коде СИ. Посему просьба оставить мокрые тапки для своих котов)
Для кого обзор? Конечно для тех, кто только начинает знакомство со смарт-лентами и имеет представление о том, как работает ардуино и как пишется под него код.

Теперь поехали)
Достаточно популярными «умные ленты» стали уже давно. Среди них существует множество китайских клонов, собранных как на обычных диодах RGB и внешними управляющими регистрами, так и «полноценные», с использованием ws2812 со встроенным в корпус 5050 контроллером. Принцип работы практически одинаков для всех лент и матриц с SPI (последовательным) интерфейсом. Это относится к WS2811(12), SK6812, INK1003 и другим подобным драйверам. На вход первого контроллера ленты передается непрерывный поток данных, в каждом пакете которого содержится 3 или 4 (для RGBW пикселей)байта со значением цвета для каждого из 3 или 4 светодиодов в пикселе. Контроллер первого пикселя «откусывает» себе первые 3(4) байта, устанавливает свой цвет в соответствии с содержимым, а остальной поток пропускает к следующим пикселям, где происходит аналогичное «откусывание» и дальнейшая передача «из рук в руки» до тех пор, пока в потоке не возникнет пауза в 50 мкс, означающая что пора принимать данные с начала)В зависимости от типа контроллера, тактовая частота может составлять 400 или 800 кГц. Это позволяет не видеть глазу переходных процессов при реализации достаточно сложных световых эффектов. В различных контроллерах может быть разной тактовая частота, разное кодирование 0 и 1 Lo-Hi уровнями и наоборот, разное следование цвета в пакете и другие мелочи, значительно усложняющие жизнь нормальным людям при выборе средств реализации задуманной елочной гирлянды или пересвета днища в 14-ке) Ленты могут иметь и 4 вывода — два питающих, один управляющий, и один тактируемый. В моем примере лента имеет три вывода — питание 12В и управление. Так же есть моменты, связанные с питанием ленты — это опять же напряжение — 5 или 12В и ток потребления на метр. Я использовал отдельный блок питания 12В. При этом нужно учитывать, что питание ленты и ардуино никак не должны между собой быть связаны, если у вас разные напряжения питания! Только по общему проводу для передачи данных. С ардуинки нужно подключить вывод GND к минусовому проводу ленты и управляющий пин 6 (или какой назначите) ко входу ленты D in. +12В подается на ленту от своего
источника питания, ардуинка питается от своего (либо от USB).

Капиталисты из Adafruit рекомендуют сигнальный провод подключать через резистор порядка нескольких сот Ом, а на саму ленту перед первым контроллером вешать по питанию электролит 1000-2000uF, но у меня все прекрасно работает и напрямую, и через килоОмный резистор при длине шлейфа около 0,5 метра и без каких либо кондеров на ленте. Все страхи актуальны имхо при гораздо бОльших отрезках ленты, чем мой)
С подключением в общем то ничего хитрого нет. Рассмотрим программную часть.
Для управления ws2812 настоящие true-программисты напишут true-код на ассемблере и прошьют true-контроллер от фирмы майкрочип, но для простых смертных выход тоже есть! Добрые дяди из Adafruit написали замечательную библиотеку, заточенную под ардуино, при помощи которой можно на простом cи из г.на и костылей (как в моем случае) соорудить вполне себе работающий г.но код и не заботиться об организации интерфейса и не заглядывать в даташиты контроллеров лент. Об этом уже позаботились авторы библиотеки и нам не нужно ничего знать, кроме ее функций и конфигурирования двух строк в привычной среде.
Что еще следует понимать — каждый пиксель — это память. И она не бесконечна. Например ардуинка uno R3 потянет не более 500 пикселей.
С мегой можно развернуться и пошире)
А пока хочу немного рассказать после пары дней экспериментов про использование возможностей библиотеки, назначение ее функций и конфигурирование в привязке к типу ленты и количества пикселей в ней. Сам к ардуине подключал unoR3 и отрезок ленты с INK1003 всего на 6 пикселей (каждый из 3-х отдельных RGB диодов 5050?, бывает и такое в Китае). Но об этом немного позже, а сейчас начнем с самого начала — установки.
Устанавливается библиотека просто — в программной среде для ардуино в меню «Скетч» выбираем «Подключить библиотеку» —> «Управлять библиотеками».
Откроется окно со списком библиотек, которые уже установлены. В форме поиска вводим «Adafruit NeoPixel», находим, скачиваем и устанавливаем.
Теперь остается до функциии void setup()прописать заголовок библиотеки — #include <adafruit_NeoPixel.h>, несколько строк конфигурации и можно начинать кодить)
Чтобы лучше понять, что мы получили, давайте посмотрим, что содержат файлы библиотеки)
Каталог Adafruit_NeoPixel/examples/ — содержит несколько примеров использования библиотеки:
RGBWstrandtest — не интересен, так как моя лента просто RGB)
buttoncycler — демонстрирует переключение 3-х эффектов нажатием кнопки
simple.ino показывает как покрасить ленту зеленым
strandtest.ino — те же три эффекта, но без нажатия кнопок
Примеры очень полезные и интересные, но лучше пойдем дальше и сделаем что то свое, пусть и не так красиво).
Нужно условиться, что дальше по тексту под словом «пиксель» я подразумеваю три (или 4) разных светодиода в одном корпусе. Поэтому «красный цвет пикселя» и «красный цвет диода» — понятия совершенно разные. Первый — это совокупность цветов. Второй — восьмибитная яркость отдельного красного светодиода из этой совокупности — от 0 до 255.
Идем дальше, файл — Adafruit_NeoPixel.cpp
Содержит функции, с которыми мы будем работать. Желающие ознакомиться с оригинальным (на английский езыке) руководством можно здесь — learn.adafruit.com/adafru…?view=all#arduino-library , а для ленивых продолжу излагать своим языком как умею)
Кстати — по ссылке много интересных проектов для ардуины с описанием и кодом не только для ленточных изделий)
Первая чуть ли не самая важная функция — strip.setPixelColor(n, red, green, blue, white); Она устанавливает цвет каждого диода (красного-зеленого-синего) в n-пикселе в соответствии с переданными функции параметрами.
Т.е. n здесь — номер пикселя в ленте, следующие за ним три или четыре параметра — цвета диодов от 0 до 255. Если используем ленту с дополнительным белым диодом в пикселе — мы задаем 4 параметра (32 бита информации, по байту на цвет) или 3 (24 бита информации), как в моем случае.
Например, strip.setPixelColor(45, 255, 0, 0); задаст красный цвет 46-му пикселю в ленте (нужно помнить, что в программе первый пиксель — это «0»).
Альтернативно — strip.setPixelColor(n, color); Здесь n так же — номер пикселя в ленте, но уже 32 битный цвет, например — uint32_t magenta = strip.Color(255, 0, 255);
Еще одна функция strip.Color(255, 0, 255); — как раз конвертирует в одно 32 битное значение три разных параметра цвета для отдельных диодов — RGB. В этом примере (255, 0, 255)- одинаковые по яркости красный и синий диоды. Теперь если мы вызовем strip.setPixelColor с 32 битным параметром magenta, которому ранее присвоили значение функцией strip.Color, мы зададим 46 пикселю этот цвет одним значением: strip.setPixelColor(45, magenta); Итого — всего два параметра) Просто вместо трех восьми битных имеем один 32 битный с местом под значение четвертого диода, даже если его в пикселях ленты нет.
Но как и сколько бы мы не задавали цвет, с лентой ничего не произойдет. Передачу каждого пакета данных с заданными цветами каждого диода в каждом пикселе нужно инициализировать. Поэтому ваш код должен быть как можно эффективнее, ибо для вывода сложных эффектов нужна максимальная частота обновления пикселей, а выполнение вашего кода тоже требует процессорного времени. Допустим, вы назначили каждому пикселю набор цветов. Пора вызывать функцию поважнее «сет_пиксел_колора» — strip.show(); Она вызывается без параметров и обновляет все пиксели ленты, один за другим с частотой 400 или 800 кГц). Теперь изменения можно увидеть). Эта же функция является обязательной в разделе void setup(). Перед ней в этом разделе так же обязан находится вызов функции strip.begin(), т.е. примерно так:
void setup()
{
strip.begin();
strip.show(); // Здесь эта функция ничего не «засветит, а наоборот -принудительно выключит все пиксели.
}
Продолжим по функциям, нужным для комфортного кодинга) Раз уж есть функция, «запихивающая» три байта в одно значение, логичным будет и обратный процесс. Но увы, его нет.
Есть только возможность средствами библиотеки извлечь тот же 32-битный цвет из конкретного пикселя. Занимается этим делом uint32_t color = strip.getPixelColor(11); Хотя при необходимости и желании можно уже «вручную» вытащить нужные цвета и определить каждый по своему байту)
Например так —
//—————————————
long i = strip.getPixelColor(15); //Получаем цвет 16-го пикселя
uint8_t r = (uint8_t)((i >> 16) & 0xff), //Первый байт — красный цвет
uint8_t g = (uint8_t)((i >> 8) & 0xff), //Второй байт — зеленый цвет
uint8_t b = (uint8_t)(i & 0xff); //Третий байт — синий цвет
strip.setPixelColor(16, r, g, b); //Назначаем полученные значения отдельным диодам 17-го пикселя
//—————————————
Это желательно оформить в свою отдельную функцию и для своего же удобства и упрощения кода. Хотя и необязательно.
Здесь важно понимать один момент — несмотря на название getPixelColor, функция не выполняет физического обращения к ленте для получения цвета заданного вами номера пикселя. Это невозможно в SPI, работающего по принципу ниппеля — только «туда». Но при первом же вызове setPixelColor в массив pixels для значений пикселей записываются по порядку все устанавливаемые цвета всех диодов в 32-битном значении и хранятся там до следующего вызова этой же функции, которая опять обновит и ленту, и массив. В промежутке можно извлечь из этого массива 32-битный цвет из нужного пикселя с помощью getPixelColor. Это значит, что вы можете в любой момент в любом месте кода выполнять любые действия, не связанные с управлением лентой, и затем вернуться к установленным и включенным хоть 5 минут назад цветам в совсем другой функции и продолжить с ними работать «с того же места».
Можно легко задать (установить) или изменить полученный 32-битный цвет в HEX формате. В качестве аргумента мы можем передать параметр цвета пикселя как 0xFF9C00 и функция это так же переварит.
Здесь то же самое, только FF — это красный диод с диапазоном значений от 0x00 до 0xFF, 9C — зеленый, и 00 — синий.
Аналогично «вытаскиванию» восьмибитных десятичных значений каждого цвета мы можем побайтно изменить исходную величину.
Для этого я набросал небольшую функцию, которая изменяет HEX представление цвета SummColor на передаваемые значения RGB —
HEX_R, HEX_G, HEX_B.

uint32_t HEX_Math(uint32_t SummColor, uint32_t HEX_R, uint32_t HEX_G, uint32_t HEX_B)
{
SummColor+=((HEX_R << 16)|(HEX_G << 8)|(HEX_B));
return SummColor;
}
Если мы имели 0x9000FE и 0x03, 0x02, 0x01, функция вернет значение 9302FF.
Следующая «штатная» функция — uint16_t n = strip.numPixels(); — возвращает задекларированное количество пикселей в ленте. Полезна в тех случаях, когда у вас гора кода и своих функций, а применяться код будет к разным лентам с разным количеством пикселей в них. Чтобы не перебивать все в коде, следует заранее использовать в счетчиках этот вызов.
strip.setBrightness(100); — устанавливает яркость всей ленты, вызывается в setup() единожды. В коде использовать нельзя, для этого задавайте параметры яркости значениями RGB. (55,0,0) — тоже красный, но не такой яркий как (255,0,0). Полезность этого для себя нашел в том, что неудобно отлаживать код, когда рядом на столе бьет в глаз в разнобой разный злой колор с уровнями 200-255). А так — установил временно strip.setBrightness(30) и работай себе спокойно. Выше этого значения ни один диод не прыгнет, как бы вы не задавали уровень в коде. Просто все итоговые цвета пикселей будут пропорционально пересчитаны для этого значения, как самого яркого.
Подключение нескольких лент к разным выходам ардуины — тоже не вопрос. Пишем в заголовке еще одну ленту с нужным количеством пикселей и пин управления.
Adafruit_NeoPixel strip_a = Adafruit_NeoPixel(24, 5);
Adafruit_NeoPixel strip_b = Adafruit_NeoPixel(45, 6);
Я этим не пользовался, но сложного в этом ничего не вижу.
Остается файл Adafruit_NeoPixel.h — заголовок библиотеки, но в нем нам искать нечего. Там прописаны конфигурации пинов, смещения цветов для RGB и RGBW, частоты для разных типов лент, объявлены уже рассмотренные нами функции а так же различные типы и константы.
keywords.txt содержит перечень имен функций и констант.
Это собственно все, что нам дает библиотека Adafruit NeoPixel — вполне достаточно для написания чего нибудь светящегося, мерцающего и переливающегося)
Теперь, имея некий «справочник» можно прописать параметры и начать кодить что нибудь свое, родное)

Итак, у вас есть или светодиоды WS2812b, или светодиодная лента из этих светодиодов, или светодиодное кольцо. Теперь хочется научиться всем этим управлять. Желательно так, как хочется, а не просто используя готовые решения.

Давайте вместе будем учиться делать это (я тоже хочу этому научиться).

Для управления я использую микроконтроллер Arduino. Осталось малость – научиться его программировать.

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

Итак, для управления «умными» светодиодами есть две основные библиотеки: Adafruit NeoPixel и FastLED. Я не могу сказать, чем они отличаются, в чем их достоинства и недостатки, ибо не знаю. Поэтому буду рад комментариям знающих людей.

Ну а начнем с самого простого – научимся просто зажигать произвольный светодиод произвольным цветом.

Как вы уже, наверняка, знаете, конструкция Arduino скетча выглядит так:

void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }

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

Сегодня работаем с библиотекой Adafruit NeoPixel

Первый скетч выглядит так:

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

Итак, первая строка. С ее помощью мы подключаем к нашей среде разработки библиотеку Adafruit_NeoPixel.h, в которой уже прописаны базовые функции.

Строка 2. В этой строке мы определяем переменную PIN, то есть номер пина на плате Ардуино, на который будут выводится результаты наших трудов, и который будет управлять светодиодами.

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

Строка 4. В ней, как я понял, описывается основная конструкция.
Adafruit_NeoPixelstrip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Вместо «strip» вы можете написать все, что угодно, главное, чтобы далее в программе вы использовали все точно так же, как написано тут. При работе программы в переменные NUMPIXELS, PIN подставляется значения, определяемые во второй и третьей строке. Поэтому вполне можно записать эту конструкцию, как Adafruit_NeoPixelstrip = Adafruit_NeoPixel(10, 6, NEO_GRB + NEO_KHZ800); и все будет работать точно так же. Просто это во-первых менее удобно, во вторых уже не так универсально. В последнем параметре вы можете менять тайминги для различного типа светодиодов. Для светодиодов 2811 этот параметр будет выглядеть, как NEO_KHZ400.

Строка 5. Инициализирует программу.

Строка 6. Стандартный оператор конструкции скетча

Строка 7. В моем примере, в коде программы написано, что с помощью оператора strip.show(); мы гасим светодиоды в том диапазоне, который у нас указан в переменных программы. Но на самом деле, без этого оператора можно обойтись. Я пробовал – ничего не меняется.

Строка 8. Закрываем первый блок.

Строка 9. Основная часть программы, которая выполняется «по кругу».

Строка 10. Готовим сигнал на нужный нам светодиод, указав его номер светодиода первым в скобках, с учетом того, что адрес первого светодиода у нас – это 0. strip.setPixelColor(25, strip.Color(1, 0, 55)); То есть, 25 – это номер зажигаемого светодиода, strip.Color(1, 0, 55) – цвет, каким мы зажигаем светодиод, в формате RGB. То есть значение каждого цвета может быть указано в диапазоне 0..255.

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

strip.setPixelColor(0, strip.Color(255, 0, 0));

Строка11. Зажигаем светик(и)

Строка 12. Закрывающая скобка.

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

Теперь листинг программы.

#include <Adafruit_NeoPixel.h> // подключаем библиотеку

#define PIN 6 // Это выход #6, куда подключено управление лентой.

#define NUMPIXELS 3 //Число светодиодов в ленте

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {

strip.begin();

strip.show();

}

void loop() {

{

strip.setPixelColor(0, strip.Color(100, 0, 0)); // R=255, G=0, B=0 — цвет светодиода

strip.show();

}

}

Вместо 11 строки мы можем вполне написать следующее:

strip.setPixelColor(0, strip.Color(100, 0, 0));

strip.setPixelColor(2, strip.Color(0, 100, 0));

strip.setPixelColor(5, strip.Color(0, 0, 100));

strip.show();

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

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

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

Урок 9 — Бегущие огни на Arduino UNO

Продолжаем уроки в которых мы используем Arduino, резисторы и светодиоды. Мы уже делали Светофор, полицейский стробоскоп, отправляли сигнал sos и пр.
Сегодня мы будем делать бегущие огни. Бегущие огни уже были в другом блоке уроков на Arduino: Урок 2 — Подключаем сдвиговый регистр 74НС595 к Arduino. «Бегущие» огни
При подключении к сдвиговому регистру всего при подключении по 3 проводам мы можем управлять 8 светодиодами. Но вот чтобы подключить 10 светодиодов, нужно подключать 2 сдвиговых регистра и использовать всего 2 выхода из 8 доступных в регистре. Это не очень логично. Иногда бывает проще подключить к плате Arduino нужное количество светодиодов. Что я и планирую сделать. В примере будет 5 самых простых режимов бегущих огней на Arduino.
Для урока нам понадобится:

  • Arduino UNO или Arduino Nano
  • Плата макетная беспаечная
  • Резисторы 220 ОМ
  • Соединительные провода папа-папа
  • Светодиоды 3 или 5 мм.

Подключим наши 10 светодиоды вот по такой схеме.

В живую будет выгладить так.

Вы наверное скажите что схема не правильная и к пинам 0 и1 подключать не желательно. Вот именно не желательно, но можно если не использовать Serial port. А для облегчения кода нам будет очень удобно использовать данные пины. При загрузки кода в Ардуину светодиоды подключенные к 0 и 1 выходам будут мигать. Также при работе нашего скетча. Вместе с данными светодиодами на плате Arduino UNO буду включаться светодиода RX и TX. Но как я говорил в данном случаи ни чего старшного в этом нет.

Описывать все режимы не буду. В видео немного поясняю. Немного корява и может не совсем понятно. Но я думаю по комментариям к коду можно разобраться.

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

int last_pin = 10; //Кол-во светодиодов //блок для инициализации входов-выходов и других исходных данных void setup() { for (int i = 0; i < last_pin; i++) // цикл pinMode(i, OUTPUT); // инициализируем пины как выходы } // Основной цикл void loop() { for (int j = 0; j < last_pin; j++) { //перебираем пины с 0 до last_pin digitalWrite(j, HIGH); //зажигание следующего светодиода delay(300); //задержка 300мсек digitalWrite(j, LOW); //гасим все светодиоды } }

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

int last_pin = 10; //Кол-во светодиодов //блок для инициализации входов-выходов и других исходных данных void setup() { for (int i = 0; i < last_pin; i++) // цикл pinMode(i, OUTPUT); // инициализируем пины как выходы } // Основной цикл void loop() { for (int j = 0; j < last_pin; j++) { //перебираем пины с 0 до last_pin digitalWrite(j, HIGH); //зажигание следующего светодиода delay(300); //задержка 300мсек } for (int j = last_pin-1; j >= 0; j—) { //перебираем пины с 0 до last_pin digitalWrite(j, LOW); //гасим все светодиоды delay(300); //задержка 300мсек } }

Объединив код первого и второго примера получим включение одного светодиода в прямом и обратном направлении. Во втором цикли ставим j-2, потому что у нас пины начинаются с 0, а число светодиодов с 1 до 10. Также чтобы 10 светодиод не включался 2 раза вычитаем еще 1.

int last_pin = 10; //Кол-во светодиодов //блок для инициализации входов-выходов и других исходных данных void setup() { for (int i = 0; i < last_pin; i++) // цикл pinMode(i, OUTPUT); // инициализируем пины как выходы } // Основной цикл void loop() { for (int j = 0; j < last_pin; j++) { //перебираем пины с 0 до last_pin digitalWrite(j, HIGH); //зажигание следующего светодиода delay(300); //задержка 300мсек digitalWrite(j, LOW); //гасим все светодиоды } for (int j = last_pin-2; j > 0; j—) { //перебираем пины с 0 до last_pin digitalWrite(j, HIGH); //зажигание следующего светодиода delay(300); //задержка 300мсек digitalWrite(j, LOW); //гасим все светодиоды } }

Сходящиеся огни. Тут все по аналогии. Добавим переменную в которой будим рассчитывать половину светодиодов. Поэтому количество светодиодов должно быть четным. Либо что-то делать с центральным светодиодом. Можно оставить его постоянно включенным или наоборот всегда включенным.

int last_pin = 10; //Кол-во светодиодов //блок для инициализации входов-выходов и других исходных данных void setup() { for (int i = 0; i < last_pin; i++) // цикл pinMode(i, OUTPUT); // инициализируем пины как выходы } // Основной цикл void loop() { int half = last_pin/2; //last_pin должгно быть четным числом for (int j = 0; j < half; j++) { //перебираем пины с 0 до last_pin int k = last_pin-j-1; digitalWrite(j, HIGH); //зажигание следующего светодиода digitalWrite(k, HIGH); //зажигание следующего светодиода delay(300); //задержка 300мсек digitalWrite(k, LOW); //гасим все светодиоды digitalWrite(j, LOW); //гасим все светодиоды } }

И по аналогии делаем расходящиеся огни.

int last_pin = 10; //Кол-во светодиодов //блок для инициализации входов-выходов и других исходных данных void setup() { for (int i = 0; i < last_pin; i++) // цикл pinMode(i, OUTPUT); // инициализируем пины как выходы } // Основной цикл void loop() { int half = last_pin/2; //last_pin должгно быть четным числом for (int j = half; j > 0; j—) { //перебираем пины с 0 до last_pin int k = last_pin-j; digitalWrite(j-1, HIGH); //зажигание следующего светодиода digitalWrite(k, HIGH); //зажигание следующего светодиода delay(500); //задержка 300мсек digitalWrite(k, LOW); //гасим все светодиоды digitalWrite(j-1, LOW); //гасим все светодиоды } }

Как видно без использования сдвигового регистра код получается намного проще и меньше строчек. Один минус количество ограничено. Максимум 20 светодиодов можно подключить к Arduino Uno и 22 к Arduino NANO. Думаете что я ошибся с цифрами. Подписывайтесь на канал. И в следующем уроке в данном блоке уроков я покажу как можно это реализовать.

Подписывайтесь на мой канал на Youtube и вступайте в группы в Вконтакте и Facebook.

Arduino бегущая дорожка из светодиодов

Делаем бегущие огни из светодиодов на Arduino. В данном случае используется Arduino Mega 2560, который потенциально способен управлять бегущей дорожкой из 54-х светодиодов. Но схема и программа не изменятся, если вы будете использовать другие контроллеры из платформы Arduino такого типа (UNO, Leonardo…)

Схема подключения светодиодов к Ардуино Мега 2560.

Так выглядит скетч в окне стандартного приложения для программирования Ардуино.

Текст программы для реализации бегущих огней на платформе ардуино.

/*

Girlianda

by GEEKMATIC.IN.UA

*/

int first_out = 11; //первый дискретный выход

int last_out = 13; //последний дискретный выход

int t;

int i;

//блок для инициализации входов-выходов и других исходных данных

void setup() {

last_out = last_out + 1; //добавляем единицу для корректного использования в циклах

//определение 11-го, 12-го и 13-го дискретных выводов платы Ардуино как выходы

for (i = first_out; i < last_out; i++) { pinMode(i, OUTPUT); }

}

void loop() {

for (t = first_out; t < last_out; t++) { //перебираем номера дискретных выходов 11,12,13 поочереди

digitalWrite(t, HIGH); //зажигание следующего светодиода

delay(500); //задержка 500мсек

for (i = first_out; i < last_out; i++) { digitalWrite(i, LOW); }//гасим все светодиоды

}

}

Для увеличения количества управляемых светодиодов в гирлянде, в программе нужно будет просто заменить значения переменных first_out и last_out. Первая переменная хранит начальный дискретный выход контроллера, а вторая последний из группы выходов, которые идут подряд. Например, если мы хотим подключить 10 светодиодов в гирлянду, вводим такие значения: first_out = 4, last_out = 13. И Arduino подключить светодиоды к выводам по порядку с 4-го по 13-й. А первый и второй вывод дискретных входов-выходов лучше не трогать, так как им мешает usb-порт, подключенный к компьютеру.

admin

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Наверх