Jump to content
Sign in to follow this  
SMD

Светящиеся елочные игрушки, новогодние шары и украшения своими руками

Recommended Posts

Светодиодная звезда на елку с питанием от двух батареек АА

Светодиодная звезда на елку_1.pngСветодиодная звезда на елку_14.JPGСветодиодная звезда на елку_15.JPGСветодиодная звезда на елку_16.JPGСветодиодная звезда на елку_17.JPG

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

Для своего питания, проект использует две батарейки типа АА, поэтому необходимо использовать конвертер напряжения DC/DC, так как синие светодиоды имеют  прямое падение напряжения  чуть более 3V, а чип светодиодного драйвера около 0,6V. Две новые батарейки АА выдают напряжение чуть больше 3V, а перезаряжаемые аккумуляторные батареи,  даже при полной зарядке не могут дать достаточного потенциала.  Для ликвидации этой проблемы, используется преобразователь напряжения, который преобразует номинальные 3V от батареек в необходимые для работы 3,71V.

Микроконтроллер может работать от напряжения преобразователя DC / DC или непосредственно от батареек. Также, микроконтроллер может отключать преобразователь DC/DC во время спящего режима для экономии заряда аккумуляторов, в этом режиме преобразователь потребляет около 1 мкА. Сам микроконтроллер PIC16LF1703 надежно работает до 1,8V и является очень экономичным в потреблении электроэнергии, особенно в спящем режиме.

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

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

Светодиодная звезда на елку_6.png

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

Микроконтроллер выполняет 3 основные функции:

  1. Посылает команды SPI на драйвер для включения и отключения светодиодов.
  2. Контролирует напряжение батареек или аккумуляторов, если напряжение падает ниже допустимого, то он переводит преобразователь DC/DC в спящий режим.
  3. Обрабатывает сигналы от внешней кнопки.

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

На рисунке ниже представлена полная электрическая схема звезды:

Светодиодная звезда на елку_7.jpg

На рисунке ниже представлена архитектурная схема работы программного обеспечения, и схема его динамического поведения:

Светодиодная звезда на елку_8.pngСветодиодная звезда на елку_9.png

Конструкция системы и принцип управления светодиодами

Светодиодная звезда на елку_10.jpgСветодиодная звезда на елку_12.pngСветодиодная звезда на елку_13.pngСветодиодная звезда на елку_18.JPGСветодиодная звезда на елку_19.JPGСветодиодная звезда на елку_20.JPGСветодиодная звезда на елку_21.JPGСветодиодная звезда на елку_22.JPGСветодиодная звезда на елку_23.JPGСветодиодная звезда на елку_24.JPGСветодиодная звезда на елку_25.JPG

Светодиодный драйвер управляется 16-битными SPI пакетами, в одном таком пакете, каждый бит соответствует одному светодиоду.  Когда определенный бит,  равен единице, то соответствующий светодиод включается, когда он равен нулю, то светодиод выключается.

bit

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

LED

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Чтобы создать последовательность, пакеты битов посылаются на светодиодный драйвер с заданной периодичностью.  Базовый период равняется 62мс. Он может меняться в пределах от 81мс до 81*255мс.  

Например, программа, которая имеет круговые переключения светодиодов во времени,  выглядит следующим образом:

LED звезда на елку.png

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

  • Светодиодный драйвер TLC5925IDWR
  • Микроконтроллер PIC16LF1703-I/SL
  • Конвертер DC/DC  MCP1640T-I/CHY
  • Отсек для батареек
  • Конденсатор 22 мкФ
  • Конденсатор 27 пкФ
  • Конденсатор 4.7 мкФ
  • Кнопка,  монтируемая на PCB плату
  • Диодная сборка MBR0530T1G
  • Резистор 300 кОм
  • Резистор 620 кОм
  • Резистор 4.3 кОм
  • Светодиоды 8 мм, синие и красные
  • Светодиоды 10 мм, желтые и красные

По материалу hackaday

Share this post


Link to post
Share on other sites

Светящийся елочный шар на елку своими руками в виде Звезды Смерти из фильма «Звездные войны» 

светящийся елочный шар на елку своими руками.jpg

Чтобы сделать светильник ночник в виде Звезды Смерти из фильма «Звездные войны» вам понадобятся:

  • Пластиковый шар диаметром 100 мм
  • Дрель
  • Мелкозернистая наждачная бумага
  • Медицинский спирт
  • Эпоксидная шпатлевка
  • Кусочки глины или пластилина
  • Малярный скотч
  • Канцелярский нож
  • Аэрозольная краска
  • Светодиоды
  • Тонкий черный провод
  • Паяльник
  • Ненужная электронная схема, старый фонарик и светодиодная свеча
 
Шаг 1

светящийся елочный шар на елку своими руками_1.jpgсветящийся елочный шар на елку своими руками_2.jpgсветящийся елочный шар на елку своими руками_3.jpgсветящийся елочный шар на елку своими руками_4.jpgсветящийся елочный шар на елку своими руками_5.jpg

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

Шаг 2

светящийся елочный шар на елку своими руками_6.jpgсветящийся елочный шар на елку своими руками_7.jpgсветящийся елочный шар на елку своими руками_8.jpgсветящийся елочный шар на елку своими руками_9.jpgсветящийся елочный шар на елку своими руками_10.jpg

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

Шаг 3

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

светящийся елочный шар на елку своими руками_11.jpgсветящийся елочный шар на елку своими руками_12.jpgсветящийся елочный шар на елку своими руками_13.jpg

Шаг 4

светящийся елочный шар на елку своими руками_14.jpgсветящийся елочный шар на елку своими руками_15.jpgсветящийся елочный шар на елку своими руками_16.jpgсветящийся елочный шар на елку своими руками_17.jpg

Отрежьте небольшой квадрат со стороной в 1,5 см от печатной платы или обычного пластика (необходимо просверлить два отверстия под светодиод). Возьмите два провода длиной в 20 см, пропускаем их через отверстия в квадрате, устанавливаем светодиод. Теперь можно припаять провода. Проденьте провода через отверстие наверху сферы. Теперь нам необходим небольшой батарейный отсек (подойдет от светодиодной свечи). Осталось припаять концы проводов к корпусу свечи, соблюдая полярность.

Шаг 5

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

светящийся елочный шар на елку своими руками_18.jpgсветящийся елочный шар на елку своими руками_19.jpgсветящийся елочный шар на елку своими руками_20.jpgсветящийся елочный шар на елку своими руками.jpg

Share this post


Link to post
Share on other sites

Светящиеся новогодние украшение для елки

Светящиеся новогодние украшения на елку своими руками_3.jpgСветящиеся новогодние украшения на елку своими руками_2.jpg

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

Шаг 1: Инструменты и материалы

  • Лист фанеры приблизительно 30 x 30 x 0.6 см.
  • Светодиодная лента WS2812b с плотностью 60 светодиодов на метр. Понадобится отрезок длиной 67 см, который содержит 40 светодиодов.
  • Малогабаритный микроконтроллер Arduino на базе чипа ATmega328 или Attiny45  (Подойдет например Arduino Pro Mini 3.3 / 5V или Adafruit Gemma)
  • Наждачная бумага средней зернистости
  • Акриловый клей
  • Источник питания 3,3 / 5V или аккумуляторная батарея LiPo 3,7V или любой другой подходящий источник питания
  • Тонкий электрический провод

Шаг 2: Чертеж звезды

Светящиеся новогодние украшения на елку своими руками_4.jpgСветящиеся новогодние украшения на елку своими руками_5.jpgСветящиеся новогодние украшения на елку своими руками_7.jpg

Первым шагом является создание звезды. Светодиодная лента будут приклеена на корпус фанерный звезды, поэтому должны быть подобраны соответствующие размеры.  Для данного проекта (на 40 светодиодов), можно использовать шаблон в прикрепленном ниже файле. Обратите внимание, что для того, чтобы она поместилась на листе А4, некоторые концы немного обрезаются. Таким образом, надо распечатать трафарет, взять лист фанеры и копировальную бумагу. Затем уложить трафарет с копировальной бумагой на лист фанеры, и при помощи линейки и карандаша, перенести его на фанеру. Перед началом переноса, желательно закрепить трафарет на листе фанеры с помощью канцелярских кнопок, чтобы он случайно не сместился. После окончания переноса, снять трафарет и внимательно проверить все края.

шаблон звезды.pdf

Шаг 3: Вырезание звезды

Светящиеся новогодние украшения на елку своими руками_8.jpgСветящиеся новогодние украшения на елку своими руками_9.jpg

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

Шаг 4: Подготовка светодиодов

Светящиеся новогодние украшения на елку своими руками_11.jpgСветящиеся новогодние украшения на елку своими руками_12.jpgСветящиеся новогодние украшения на елку своими руками_13.jpgСветящиеся новогодние украшения на елку своими руками_14.jpgСветящиеся новогодние украшения на елку своими руками_16.jpg

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

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

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

Шаг 5: Соединение светодиодов

Светящиеся новогодние украшения на елку своими руками_17.jpg

Теперь светодиодные полоски надо соединить между собой. Для этого нарезаем много небольших кусочков тонкого провода, длиною примерно 3 – 4 см. Используя паяльник, надо припаять эти кусочки провода между контактами светодиодных полосок в следующем виде: DO – DI, V – V, GND – GND. Проверка пайки и подключения будет выполнена на следующем шаге, а в данный момент выполняется только визуальный осмотр, на наличие коротких замыканий и прочих физических ошибок. 

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

Шаг 6: Подключение микроконтроллера

Светящиеся новогодние украшения на елку своими руками_18.jpg

Первым делом, подключаются провода питания и заземления к источнику питания. Затем контакт Vcc на микроконтроллере подключается к контакту V первой светодиодной полоски, соответственно контакт GND к GND.  Контакт микроконтроллера №6 подключается к контакту входа данных DI первой полоски (этот контакт определяется программно и может быть переопределен).

Если вы используете Arduino Pro Mini, то подключите программатор к последовательному порту. В противном случае просто подключите к микроконтроллеру USB кабель от компьютера.

Шаг 7: Программирование микроконтроллера

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

https://github.com/adafruit/Adafruit_NeoPixel

После установки программы, откройте проверочный программный код (эскиз) под названием strandtest, перейдя по следующим пунктам меню:

File → Examples → Libraries → Adafruit_NeoPixel → strandtest

В нем нужно отредактировать строку 15, а именно изменить значение 60 на 40, так как в проекте используется  40 светодиодов. Остальной программный код эскиза остается неизменным.

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

Если вы используете микроконтроллер Adafruit FLORA или Gemma, то вам нужно будет настроить тип микроконтроллера в программе Arduino IDE, для этого следуйте этим инструкциям: https://learn.adafruit.com/add-boards-arduino-v164/setup

Шаг 8: Тест подключений

Светящиеся новогодние украшения на елку своими руками_19.jpgСветящиеся новогодние украшения на елку своими руками_20.jpg

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

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

Шаг 9: Последние штрихи

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

По материалу instructables

Share this post


Link to post
Share on other sites

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

Светодиодные елочные игрушки - новогодние шары с управлением по Wi-Fi - Елочные игрушки, новогодние шары своими руками - игрушки своими руками × елочные игрушки ручной работы × производство елочные игрушкиСветодиодные елочные игрушки - новогодние шары с управлением по Wi-Fi - Елочные игрушки, новогодние шары своими руками - новогодний декор × елочные шары своими руками × новогодние шары своими рукамиЕлочные игрушки, новогодние шары своими руками - как сделать новогодний шар своими руками × новогодние шары игрушки своими руками × новогодние шары своими руками мастер классы

Елочные украшения имеют свой собственный веб-сервер. Весь программный код работает на микроконтроллере Wemos / ESP8266. Все остальное, что требуется – это источник питания 5 Вольт (USB) и сеть Wi-Fi.
Эта инструкция, которая содержит поэтапные шаги, начинается с трех примеров программного кода. Первый пример – это простой эскиз Arduino по схемам Autodesk с использованием светодиодного кольца NeoPixel. Этот пример является базовым для этого проекта. Второй пример кода – это веб-сервер, использующий микроконтроллер Wemos. В третьем примере кода объясняется, как выполнять различные функции с определенными интервалами времени.
После этих примеров кодирования описывается создание дизайна модели игрушки, который представляет собой абсолютно симметричную геометрию с 20 сторонами. Дизайн и форма были созданы в программе Fusion 360, а затем напечатаны с помощью 3D-принтера.
В конце, после сборки, описывается итоговый программный код, который представляет собой комбинацию из трех примеров в начале этой инструкции.
Хоть эта инструкция и описывает создание орнамента из новогодних украшений, веб-интерфейс не ограничивается только этими возможностями. Его можно использовать для множества других проектов. Фактически, все, что работает под управлением микроконтроллеров Arduino, можно контролировать через сеть Wi-Fi.

Шаг 1: Необходимые материалы

Елочные игрушки, новогодние шары своими руками - программируемая светодиодная лента × адресная светодиодная лента × светодиодные пикселиЕлочные игрушки, новогодние шары своими руками - шар светящийся новогодний × светящиеся елочные игрушки × светящиеся шары на елку

Необходимые материалы:

Используйте подходящий USB источник питания. Каждый светодиод потребляет максимум 60 мА, поэтому 20 светодиодов на полной мощности потребляют 1,2 А (6 Вт). В данном проекте использовался блок питания Ikea Koppla USB. Он оснащен 3 USB портами и обеспечивает ток 3,2 А при напряжении 5 Вольт.  

Шаг 2. Схема Autodesk: пример подключения светодиодного кольца NeoPixel

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

Построение чего-либо с помощью светодиодов WS2812 и микроконтроллера Arduino действительно простая задача. Но это может показаться пугающим, если вы никогда раньше не работали с Arduino. Некоторый опыт в программировании и электронике будет весьма кстати. Это не так уж сложно.
И совсем не обязательно покупать микроконтроллер Arduino, чтобы попробовать свои силы. Есть веб-сайты, где вы можете имитировать работу микроконтроллера. Одним из них является сайт компании Autodesk Circuits. Этот пример сделан на микроконтроллере Arduino с использованием светодиодного кольца NeoPixel, и является основой этого рождественского проекта.
Программный код для микроконтроллера выглядит просто, но в тоже время показывает многие возможности кодирования микроконтроллеров Arduino:

  • Программный код использует внешнюю библиотеку «Adafruit NeoPixel». Поэтому не нужно беспокоиться об изменении цвета светодиодов. Все, что нужно сделать, это использовать библиотечные функции.
  • Программный код определяет значения 12 цветов RGB в 3 массивах. Это те 12 цветов, которые используются в веб-интерфейсе для управления светодиодной полосой.
  • Также, существует самоопределяемая функция. Это функция «setColor», которая может быть вызвана из любой точки программы.

Программный код: Adafruit_NeoPixel.txt

Этот код содержит один массив из 12 цветов (пронумерованных от 0 до 11). Для этого проекта было выбрано 12 цветов, потому что итоговый код содержит и распознает одну кнопку для каждого цвета:

Цвет 0: янтарные (FFC200) 
цвет 1: оранжевый (FFA500) 
цвет 2: киноварь (E34234) 
цвет 3: красный (FF0000) 
цвет 4: пурпурный (FF00FF) 
цвет 5: фиолетовый (800080) 
цвет 6: индиго (4B0082) 
Цвет 7: голубой (0000FF) 
цвет 8: аквамарин (7FFFD4) 
цвет 9: зеленый (00FF00) 
цвет 10: зеленовато (7FFF00) 
цвет 11: желтый (FFFF00)

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

Шаг 3. Здравствуй мир!

Елочные игрушки, новогодние шары своими руками - светодиодные шары на елку × светодиодные шары × светящиеся шары5908520bdad1c_-Wi-Fi07.jpg.7d94ddb941af2a194dd6aedc5037ee63.jpg

После программирования контроллера Arduino на работу со светодиодами WS2812, пришло время создать простой веб-сервер на базе контроллера. Для этого требуется микроконтроллер Wemos (с ESP8266), содержащий адаптер Wi-Fi. Контроллер Wemos можно подключить к компьютеру с помощью USB-кабеля. Нет необходимости использовать дополнительные USB-адаптеры. Это преимущество контроллера Wemos над модулем ESP8266-12.
Контроллер Wemos можно запрограммировать с использованием программного обеспечения Arduino. Но для этого потребуется добавление дополнительных плат в программную среду Arduino IDE с помощью функции Boards Manager. Это описано в документации на контроллер Wemos.
После выполнения этих шагов можно выбрать плату Wemos для программирования в среде программирования Arduino IDE. Для этого надо выбрать контроллер Wemos (+ соответствующий COM-порт) и загрузить в него следующий код: Arduino IDE.txt

Только перед компиляцией и загрузкой кода, измените учетные данные сети.
Это очень простой веб-сервер. Контроллер Wemos подключится к сети Wi-Fi и запустит веб-сервер только с одной страницей. Используйте монитор последовательного порта, чтобы получить IP-адрес вашего веб-сервера.

Шаг 4: Подключение

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

Для создания схемы требуется немного пайки. Но благодаря использованию светодиодной полосы WS2812b она сводится к минимуму.
Надо припаять штыревые контакты к плате контроллера Wemos. Для этого используются контакты на плате «D2», «+5В» и контакт «GND». Это означает, что контакты должны быть припаяны только с одной стороны платы.
Затем припаяйте три разноцветных провода к светодиодной полосе (земля, сигнал и +5V).
После этого удалите пластик с USB-разъема на проводе. В таком виде для этого разъема нет места. Добавьте 2 дополнительных провода к кабелю USB (скрутка на картинке): один к проводу «+5V» и один к  проводу «GND». Они непосредственно используются для питания светодиодов. Не забудьте заизолировать эти провода.
Подключите дополнительные провода «+5V» от USB-кабеля к светодиодной полосе. То же самое для провода «GND». Подключите сигнальный провод от светодиодной полосы к контакту D2 на плате контроллера Wemos. Наконец подключите USB-кабель к плате контроллера Wemos.
К контакту на плате контроллера Wemos не подключен провод заземления. Этот контакт заземления напрямую подключен к разъему USB. Это связано с дополнительным проводом «GND».

Шаг 5: Пример работы таймеров

Елочные игрушки, новогодние шары своими руками - елочные игрушки своими руками × елочные игрушки ручной работы × производство елочные игрушки × новогодний декор

В первом примере кода NeoPixel для Arduino (светодиодное кольцо NeoPixel) изменение цвета производятся в основном цикле. Это требует задержки в основном цикле, или изменение цвета будет происходить слишком быстро. Во время этой задержки контроллер Wemos просто ждет и не выполняет никаких других команд. За исключением фоновых процессов, например,  обрабатывает сетевое соединение Wi-Fi.
Конечный продукт будет запускать веб-сервер для управления светодиодами. Из-за этого внутри кода не должно быть ожиданий, потому что это даст не чувствительный web-интерфейс.
В примере ниже, светодиоды управляются внутренним таймером «osTimer», который определяется функцией «os_timer_setfn», а затем активируется функцией «os_timer_arm». Используемое значение 1000 определяется в миллисекундах. Используя это значение, таймер контроллера Wemos будет выполнять процедуру «timerCallback» каждую секунду. Эта процедура увеличивает значение цвета и изменяет цвета светодиодов. В итоге, все эти действия выполняются вне основного цикла.
Помните, что код внутри «osTimer» должен быть очень коротким, так как он должен быть выполнен до того, как будет запущен следующий таймер.
Программный код: PIXELS.txt Этот код также содержит функцию с именем «setColor», которая может принимать 3 значения, используемые для изменения цвета всех светодиодов одновременно.

Шаг 6: Правильный выпуклый многогранник

590857d570e06_-Wi-Fi11.gif.7d1a5460bc3e8e02a8e83974392da823.gif590857d5b3066_-Wi-Fi12.thumb.jpg.3408cb3d70bc19e1fde7d4dd900f2daf.jpg590857d61759f_-Wi-Fi13.thumb.jpg.a31d0ae0981d6de4ae742a6696ba3a6c.jpg

Существуют елочные украшения разных форм. В то время, когда подбирался дизайн, случайно были найдены некоторые геометрические формы. И один тип геометрии привлек внимание: правильный многогранник. Он абсолютно симметричен. Это делает его идеальным для рождественских игрушек. Известно всего пять типов:
1.    Треугольная пирамида (4 стороны)
2.    Куб (6 сторон)
3.    Октаэдр (8 сторон)
4.    Додекаэдр (12 сторон)
5.    Икосаэдр (20 сторон)
Был выбран икосаэдр. Он имеет наибольшее количество сторон. На каждой стороне будет один светодиод WS2812, а всего их будет 20.
Использование светодиодных лент WS2812 ограничивает размер геометрии. Расстояние между светодиодами составляет 33 мм (30 светодиодов на метр). Это равно верхнему пределу для сторон каждого равностороннего треугольника. После создания бумажного прототипа, был разработан размер икосаэдра около 75 мм. Это дает достаточно места для контроллера Wemos и 20-ти светодиодов.

Шаг 7: Работа в программе Autodesk Fusion 360

5908590a5ecaf_-Wi-Fi14.thumb.jpg.3f55879cdc942a4811f288543f2f9def.jpg5908590aafc4a_-Wi-Fi15.thumb.jpg.b13b2d701a8a4b72c38c8b38154c7442.jpg5908590ae43d6_-Wi-Fi16.thumb.jpg.d44f808dd79969fc139ba3dd417a358a.jpg5908590b33250_-Wi-Fi17.thumb.jpg.b78b7225ae52faa46655b7bae6b71dfd.jpg5908590b66575_-Wi-Fi18.thumb.jpg.43550e6354f9e4711e99f7e034a2955d.jpg5908590b93a9e_-Wi-Fi19.thumb.jpg.d9f9e5b2614c518ad8b1d3443b88048d.jpg

Создание стандартного икосаэдра начинается с 3 прямоугольников на каждой оси. Это должны быть золотые прямоугольники. Золотой прямоугольник - это прямоугольник, длина сторон которого находится в золотом соотношении (приблизительно 1,618). Мы можем рассчитать стороны для золотого прямоугольника с диагональю 75 мм, используя теорему Пифагора, размер сторон получается 65 х 40 мм.
Каждый угол прямоугольников представляет собой угол из 5 треугольников.
Следующий шаг - создание 20 треугольников (используя плоскость через 3 точки) и выдавливание их внутрь. Создайте новое четвертое тело с этими 20 треугольниками. Каждый треугольник ориентирован так, чтобы светодиоды можно было поместить внутри.
Все файлы для программы Fusion 360 доступны для загрузки по ссылкам:

Шаг 8: Печать деталей

59085a4b785a5_-Wi-Fi20.thumb.jpg.0dbcd61ad859a677e1d71e6eb1a84688.jpg59085a4bd8d8f_-Wi-Fi21.thumb.jpg.140e6489ee771c83449154ef59085947.jpg59085a4c12cb7_-Wi-Fi22.thumb.jpg.e341df16cdf9f386b54583aba4e75673.jpg

Распечатайте детали на 3D-принтере и удалите весь материал подложки. Убедитесь, что светодиоды вставляются в отверстия. Используйте острый нож и наждачную бумагу, чтобы удалить все неровности. Корпус будет покрываться блеском, поэтому любые неровности будут видны на конечном изделии.
Скачать файлы 3D-моделей можно по ссылкам:

Шаг 9: Сборка

59085b1991eac_-Wi-Fi23.thumb.jpg.da445f34dfca0a41d69b14a5da9befa5.jpg59085b19e2ce1_-Wi-Fi24.thumb.jpg.91e5c649b187e61411f9e58bc0af6e20.jpg

Перед вклейкой светодиодов нарисуйте путь светодиодной полосы. Это поможет ей не пересекаться.
Начните с вклеивания светодиодов внутри большой 3D-печатной части, с последнего светодиода в конце полосы. В данном проекте, для фиксации использовался горячий клей. Будьте осторожны, аккуратно сгибайте светодиодную ленту во время сборки, чтобы она не повредилась.
В этой версии использовалось два отрезка светодиодной ленты. Один с 5-ю светодиодами и один с 15-ю светодиодами. Но вполне можно использовать одну светодиодную полоску из 20 светодиодов. Это экономит время и не требует пайки.
Подключите провода «+5V» и «GND» от светодиодной полосы к USB-кабелю. Сигнальный провод подключается к выходу «D2» на плате контроллера Wemos. Земля соединена внутри. Не забудьте проверить светодиоды перед закрытием рождественской игрушки.
Чтобы части не разъединялись, используется клей. Поместите плату контроллера Wemos внутри большой 3D-печатной части. Сделайте отверстие для пропуска USB-кабеля и склейте обе части вместе.

Шаг 10: Веб-сервер

шар светящийся новогодний × светящиеся елочные игрушки × светящиеся шары на елку × светодиодные шары на елку × светодиодные шарыелочные шары своими руками × новогодние шары своими руками × как сделать новогодний шар своими руками × новогодние шары игрушки своими руками × новогодние шары своими руками мастер классы

Файл эскиза Arduino, приложенный в конце раздела, содержит весь код для веб-сервера на контроллере Wemos. Перед загрузкой кода измените переменные «ssid» и «password».
О коде

Некоторые части кода требуют небольшого объяснения:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <Adafruit_NeoPixel.h>
#include <user_interface.h>
Это все библиотеки, используемые в этом эскизе для Arduino.

#define NUM_PIXELS 20
Adafruit_NeoPixel pixels(NUM_PIXELS, D2, NEO_GRB | NEO_KHZ800);
Есть 20 светодиодов, которые подключены к контакту «D2» на плате контроллера Wemos.

int R[13] = {255,255,227,255,255,128,075,000,127,000,127,255,000};
int G[13] = {194,165,066,000,000,000,000,000,255,255,255,255,000};
int B[13] = {000,000,052,000,255,128,130,255,212,000,000,000,000};
Это 12 цветов (цвет от 0 до 11), они используются для светодиодов. Соответствующие значения HEX используются для кнопок. В этом массиве есть 13 значений. Последнее значение в массиве выключает светодиод (# 000000 = черный). Вы можете изменить эти цвета, если хотите.

String buttonColor [2] = {"white", "black"};
boolean ColorState [13] = {1,1,1,1,1,1,1,1,1,1,1,1,1}; // initial colors
Все 12 кнопок имеют «Состояние». Если у кнопки появляется значение «Истина», то соответствующий светодиод отображает соответствующий цвет. При нажатии кнопки состояние этой кнопки изменяется. Это также меняет цвет текста этой кнопки (например, черный [on] или белый [off]).

int waitTimes [16]= {50, 100, 150, 200, 250, 500, 750, 1000, 1500, 2000, ...
int waitTime     = 5; // default values
Есть две кнопки для изменения значения таймера («быстрее» и «медленнее»). Значение «waitTime» по умолчанию равно 5. Это значение дает интервал таймера 500 миллисекунд.

int nextColor (int lastColor)
{
   foundColor = numColors; // nothing found return value
   countColors = 0;        // count number of searches inside the loop
   do
   { 
      currentColor += 1;
      countColors  += 1;
      if (currentColor>numColors)   {currentColor=0;}
      if (ColorState[currentColor]) {foundColor=currentColor;}
   } 
   while (currentColor != lastColor 
       && foundColor == numColors 
       && countColors < numColors+1);
   return (foundColor);
}
Эта функция находит следующий цвет для отображения из массива «colorState». Она начинает поиск с позиции с номером «lastColor», и возвращает следующее индекс-значение в массиве colorState со значением 1.
Пример. В следующем массиве цвет 2-7 выключен (белый текст). Выполнение этой функции со значением 0 возвращает 1. Использование этой функции со значением 1 возвращает 8. Это следующий цвет, который имеется в массиве «colorState» со значением «Истина».
Цвет 0: янтарный (FFC200)
Цвет 1: оранжевый (FFA500)
Цвет 2: алый (E34234)
Цвет 3: красный (FF0000)
Цвет 4: пурпурно-красный (FF00FF)
Цвет 5: пурпурный (800080)
Цвет 6: индиго (4B0082)
Цвет 7: синий (0000FF)
Цвет 8: зеленовато-голубой (аквамарин) (7FFFD4)
Цвет 9: зеленый (00FF00)
Цвет 10: шартрез (салатовый) (7FFF00)
Цвет 11: желтый (FFFF00)
Цвета всегда отображаются в фиксированном порядке. Когда все 12 цветов выключены, значит, что все светодиоды тоже выключены (значение 000000).

// interrupt os-timer
void timerCallback(void *pArg) 
   if (!buttonSparkle)
   {
      // Sparkle Off = Blink
   }
   else
   {
      // Sparkle
   }
Существует 2 режима работы: «Искрение» и «Мерцание». И каждый из них имеет разный путь кода внутри OS-таймера.
Режим мигания имеет самый простой код. Он получает следующий цвет, вызывая функцию «nextColor». Затем все цвета светодиодов меняются на этот цвет.
Режим искрения очень сильно отличается. Он всегда начинается с первого доступного цвета в массиве «ColorState». Затем для каждого светодиода вызывается функция «nextColor». Быстрое изменение цвета светодиода дает эффект сверкания.


void showPage() 
{
   webPage += "<p><a href=\"socketAmb\"><button style=\"background:#FFC200;... 
   webPage += "   <a href=\"socketOra\"><button style=\"background:#FFA500;...
   webPage += "   <a href=\"socketVer\"><button style=\"background:#E34234;...
Эта функция отображает и обновляет веб-страницу. В этом эскизе есть только одна веб-страница. Цвета кнопок жестко запрограммированы. И эти цвета соответствуют R-G-B цветам в массиве.


void setup(void){
   server.on ("/",[](){showPage(); });
   server.on ("/socketAmb",[](){ColorState [0] = !ColorState [0]; showPage();});
   server.on ("/socketOra",[](){ColorState [1] = !ColorState [1]; showPage();});
   server.on ("/socketVer",[](){ColorState [2] = !ColorState [2]; showPage();});
В этой части  содержится первый исполняемый код после запуска контроллера Wemos. Он инициализирует светодиоды NeoPixel, соединение Wi-Fi, таймер ОС и веб-сервер.
Нажатие кнопки на веб-странице приводит к выполнению некоторого кода. Например: Первая кнопка на веб-странице (янтарь) имеет ссылку (href) на «socketAmb». Нажатие этой кнопки выполняет код в «server.on» части «socketAmb». Этот фрагмент кода изменяет «colorState» в массиве для первого цвета (янтарный).
Цвета светодиодов изменяются с помощью временной функции. Цвета не меняются сразу.

void loop(void)
{
   server.handleClient();
}
Единственная задача основного цикла - заботиться о веб-сервере. Вся остальная обработка выполняется функцией таймера.

Скачать полный программный код для микроконтроллера Wemos можно по ссылке: Christmas Ornament 20.ino

Шаг 11. Версия без Wi-Fi

Елочные игрушки, новогодние шары своими руками - елочные игрушки своими руками × елочные игрушки ручной работы × производство елочные игрушки × новогодний декор × елочные шары своими руками × новогодние шары своими руками × как сделать новогодний шар своими руками × новогодние шары игрушки своими руками × новогодние шары своими руками мастер классы × шар светящийся новогодний × светящиеся елочные игрушки × светящиеся шары на елку × светодиодные шары на елку × светодиодные шары59085d3c2d6d7_-Wi-Fi28.thumb.jpg.6c0d706bc6b257108686df892a508321.jpg

Следующий код для контроллера Wemos можно использовать в качестве примера для рождественских украшений без использования сети Wi-Fi.
Этот код позволяет использовать контроллер Arduino вместо Wemos (ESP8266). Код для Arduino доступен на circuit.io (пример матрицы WS2812). Основное отличие в коде - это имя порта (порт 8 вместо D2). PIXELS 2.txt

Порядок расположения светодиодов зависит от порядка склеивания. Елочная игрушка в этом проекте имеет следующий порядок:
•    Верхние 5 светодиодов - 4, 5, 6, 7, 8 (против часовой стрелки)
•    Нижние 5 светодиодов - 11, 12, 13, 14, 15 (против часовой стрелки)
•    Средние 10 светодиодов - 1, 2, 3, 10, 9, 16, 17, 18, 19, 20 (по часовой стрелке)
Число в «ColorMatrix» соответствует цвету R / G / B (см. Первый пример для цветов). Всего 20 рядов с 20 цветами светодиодов. Основной цикл начинается с первой строки (это номер строки в коде), который записывает 20 значений в светодиодную полосу. Функция «show-show» изменяет цвета.
Затем код ожидает 50 миллисекунд, прежде чем выполнить следующую строку в матрице. В данном примере таймер отсутствует. Это позволяет выполнить код с помощью контроллера Arduino.

Шаг 12: Оформление

Елочные игрушки, новогодние шары своими рукамиЕлочные игрушки, новогодние шары своими руками - елочные игрушки своими руками × елочные игрушки ручной работы × производство елочные игрушки × новогодний декор × елочные шары своими руками × новогодние шары своими руками × как сделать новогодний шар своими руками × новогодние шары игрушки своими руками × новогодние шары своими руками мастер классы × шар светящийся новогодний × светящиеся елочные игрушки × светящиеся шары на елку × светодиодные шары на елку × светодиодные шары × светящиеся шары × программируемая светодиодная лента × адресная светодиодная лента × светодиодные пикселиЕлочные игрушки, новогодние шары своими руками

Последний шаг - украшение новогодних елочных игрушек. Сначала удалите излишки клея и всех других неровностей с поверхности корпуса, он будет покрываться блестками, за исключением светодиодов.
Корпус надо полностью покрыть клеем. Используйте прозрачный клей хорошего качества. Затем, посыпьте пыль из блесток по всему корпусу. Чтобы не выкидывать излишки блесток, используйте коробку, их можно использовать повторно. Продолжайте в том же духе, пока все елочные украшения не будут покрыты блеском.

Шаг 13: С Рождеством!

 На этом заключительном этапе желаю всем счастливого Рождества.

Источник: instructables


⚡ Инженер-светотехник

Share this post


Link to post
Share on other sites

Второй вариант [светящиеся новогодние шары на елку]
более простой, по аналогии проекта:

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


⚡ Инженер-светотехник

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By ColorPlay
      Светодиодный баннер на контроллере Raspberry  Pi
      Изготовления простого светодиодного экрана, в данном случае светодиодного баннера, можно наглядно увидеть в этом видео:
      В качестве светодиодов была использована управляемая светодиодная лента, с RGB светодиодами и драйверами LPD8806. под управлением контроллера Adafruit Raspberry  Pi

      Схема изготовления led баннера довольно проста, и под силу каждому начинающему. За основу был взят обычный штендер, обычно используются в рекламных щитах.  На него при помощи пластиковых хомутов были закреплены светодиодные ленты, помещенные в прозрачные пластиковые трубки. Соответственно было подведено питание от отдельного блока питания,  и все они были подключены к линии данных и линии синхронизации к контроллеру Raspberry  Pi.
      Контроллер заранее запрограммирован в соответствии с количеством используемых светодиодов, изображение и анимация загружаются в него отдельно с компьютера через порт USB. Такой светодиодный баннер легко масштабируется, что позволяет его сделать совершенно разных размеров (есть только аппаратные ограничения контроллера).
      Как видите, реализация светодиодной рекламы очень проста и не требует больших усилий!
    • By ColorPlay
      Сервопривод + программируемая светодиодная лента NeoPixel   Проблема совместимости библиотек светодиодов NeoPixel  и сервоприводов.
      Однопоточный протокол управления, используемый NeoPixels, требует очень устойчивого соединения со скоростью передачи данных до 800 килобит в секунду. В нем допускается не большой процент ошибок, но он очень мал. Каждый бит должен быть передан с точно контролируемой скоростью. Библиотека Adafruit NeoPixel обрабатывает все эти сигналы в фоновом режиме, тщательно рассчитывая время каждой команды машинного кода. Для каждого пикселя есть 24 команды:

      Между тем, Arduino, как правило, в небольшие отрезки времени обрабатывает прерывание, т.е. выполняет определенные события и ситуации, которые должны быть обработаны немедленно. Вы, как правило, не замечаете этого, но прерывания все же обрабатываются в фоновом режиме. В это время ваш основной машинный код останавливается, вызывается подпрограмма обслуживания прерывания, и после возобновляется выполнение вашего основного кода, с того места в котором он был прерван. Прерывания помогают работать функциям Arduino’s delay() и millis(), а также функции Serial.read(), и другим всевозможным вещам.

      Тут-то вся и проблема. Даже очень короткий и простой способ обработки прерывания будет нарушать работу деликатной синхронизации NeoPixel. Таким образом, библиотека NeoPixel временно отключает обработку всех прерываний при записи данных в полоску светодиодов, а затем вновь позволяет им работать, когда закончит запись.
      Такие совпадения редко являются проблемой. Вы, возможно заметили, что функции millis() и micros() простаивают в эскизах (sketches) NeoPixel (отсчет времени останавливается, когда происходит запись на полосу светодиодов), что, как правило, притормаживает сервопривод.
      Возникает вопрос, что сервоприводы также имеют очень специфические требования по времени их синхронизации, и библиотека Arduino сервопривода использует прерывания для достижения этой цели. Таким образом, каждый раз, библиотека NeoPixel выключается прерывания, даже на мгновение, сервоприводы будут простаивать, и соответственно их положение в итоге будет не предсказуемо. Как грустно!

      Одним из способов решения этой проблемы является использование других особенностей AVR микроконтроллеров на ядре Arduino для управления сервоприводами без использования прерываний, как мы объясним на следующей странице. Это сложная тема, но очень полезная вещь, чтобы узнать о таком тонком нюансе. Если дальнейшее объяснение технически сложное  для вашего текущего уровня квалификации, или если вы хотите просто использовать нашу библиотеку, а это нормально, то можете пропустить технические аспекты.
      Есть аппаратные обходные пути, которые гораздо более гибкие. Наш 16-канальный 12-битный ШИМ Servo Driver (в двух секционных форматах) разгружает задачу серво управления при помощи чипа специального назначения. Так NeoPixels не может вмешиваться в работу сервопривода. Эти платы могут быть объединены "стек" для управления десятками (потенциально даже сотнями) сервоприводов! Для сложных проектов, которые, вероятно могут возникнуть. 
      Общие сведения о AVR Peripherals

      В обычном компьютере, под словом «периферийные» устройства, мы обычно подразумеваем себе такие вещи как принтер, сканер, USB диски и прочее.
      В отношении микроконтроллера, это же слово имеет несколько иной смысл. Периферийным устройством микроконтроллера, является небольшой кремниевый чип, выделенный из микропроцессора CPU (часть микроконтроллера, которая на самом деле обрабатывает машинный код), на который возложены специфические задачи, выполняемые независимо от процессора. 
      Некоторые из периферийных устройств микроконтроллера AVR в Arduino включают в себя аналого-цифровой порт (используемый функцией analogRead() ), последовательный порт UART (связь с компьютером, как и при использовании последовательного, обеспечивает связь с библиотекой и при передачу кода в чип), порт SPI (Serial Peripheral Interface иногда используется для SD карты и для сопряжения между прочими устройствами) и порт I2C (другой способ связи между чипами, поддерживаемый библиотекой Wire).
      Из интересующих нас в данный момент периферийных устройств, является Таймер / счетчик, который точно измеряет временные интервалы, которые могут быть использованы для широтно-импульсной модуляции (ШИМ, иногда используется для управления яркостью светодиодов или звука). ШИМ выход из таймера / счетчика периферийного устройства может быть использован для управления сервоприводами без участия прерываний процессора. NeoPixels и сервоприводы могут сосуществовать! Это не все цветочки, хотя ... есть некоторые серьезные ограничения ... мы рассмотрим их позже.
      Специальный материал.
      Непосредственное управление периферийными устройствами очень отличается от обычного программирования Arduino. По этой причине, большинство команд аккуратно запаковано в специальных библиотеках (или же в самой библиотеке ядра Arduino, которая сама обрабатывает большинство часто используемых функций, таких как digitalWrite() или analogRead() ).
      Разработка кода на этом уровне, человек начинает со спецификации к микроконтроллеру  ... массивного документа, в котором подробно расписан каждый последний бит и измеримый атрибут чипа. Эти данные опубликованы (и, как правило, их можно свободно загрузить с интернет сайта производителей чипов). Эти технические описания являются уникальными для каждого конкретного чипа и его разновидностей. Например:
      «ATmega 328P Datasheet»   (Arduino Uno, Adafruit Pro Trinket, etc.). 34.3 MB.
      http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf
      «ATmega 32U4 Datasheet» (Arduino Leonardo & Micro, Adafruit FLORA, etc.). 7.5 MB.
      http://www.atmel.com/Images/Atmel-7766-8-bit-AVR-ATmega16U4-32U4_Datasheet.pdf
      «ATmega 2560 Datasheet» (Arduino Mega). 8.4 MB.
      http://www.atmel.com/Images/Atmel-2549-8-bit-AVR-Microcontroller-ATmega640-1280-1281-2560-2561_datasheet.pdf
      «ATtiny85 Datasheet» (Adafruit Trinket & Gemma). 3.8 MB.
      http://www.atmel.com/Images/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf 
      Да, это действительно 650 страниц технической информации. К счастью, вы не должны читать все это. Но с этим надо ознакомиться!
      Периферийное управления включает в себя доступ к регистрам специальных функций чипа, нескольким десятков адресов памяти, которые могут быть прочитаны, письменные или модифицированные, или как переменные. Но каждый байт ... часто отдельные биты внутри каждого байта ... сложные аспекты управления конкретных периферийных устройств.
      Как и переменные, регистры специального назначения называются по имени ... это все было определены в файле заголовка, который автоматически включен в программный код.
      Например, чип ATmega328P в Arduino Uno и Adafruit Pro Trinket имеет три таймера/счетчика единиц (таймер/счетчик 0, 1 и 2 - каждый имеет свой собственный раздел в файле заголовке). Использование частоты 16 МГц процессора (часы), как временную базу, каждый может отсчитывать интервалы где-то между 1 и 256 временного такта, но таймер/счетчик 1 представляет особый интерес, потому что это 16-разрядный счетчик ... он может считать в любом диапазоне от 1 до 65536 такта, обеспечивая много дополнительных возможностей для этой задачи. Подраздел "Register Desription" описания деталей, дает техническое описание каждого из регистров специального назначения, связанных с таймером/счетчиком.

      На рисунке выше показано описание специальной функции с именем регистра TCCR1A и отдельных битов контроля. Всем этим контрольным битам тоже присвоены имена, каждому из которых соответствует одно битное число от 0 до 7, их надо помнить, при написании кода, либо использовать макрос _BV (бит) или (1 << бит) при определении битов регистра; несколько битов может быть добавлено (+) или соединены через логическое ИЛИ OR(|) вместе. Обычно должны быть настроены несколько регистров,  чтобы получить полезные функции.
      Вот несколько строк из нашей библиотеки сервопривода (которую можно будет скачать  далее), показывающие, как это выглядит:
      TCCR1A = _BV(WGM11);                                                         // Mode 14 (fast PWM)
      TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS11);     // 1:8 prescale
      ICR1   = F_CPU / 8 / 50;                                                           // ~50 Hz (~20 ms)
      Едва ли похоже на код Arduino, не так ли? Если вы когда-либо создавали программный код, вы наверное использовали "Buh?". Скорее всего, это прямой доступ к регистрам специального назначения.
      Вы должны будете прочитать соответствующие разделы спецификации, чтобы полностью понять, что происходит и почему, но в основном: первые две строки - это установка специальной функции регистров TCCR1A и TCCR1B, чтобы настроить режим генерации сигнала таймера/счетчика 1 (в "fast PWM " (быстрая ШИМ) в данном случае),  и установить делитель – на "тик" время - вперед счетчика каждые 8 тактов процессора,  вместо каждого цикла. Следующая строка (ICR1) устанавливает верхний лимит счетчика/таймера (после которого он перезапускается с нуля) и, таким образом, общее время ШИМ. Немного математики, здесь присутствуют такие переменные: частота процессора в Гц (F_CPU)и частота импульса сервопривода (50 Гц). Чтобы определить это значение ... на Arduino частота процессора 16МГц, то вычисление выглядело бы следующим образом  16,000,000 ÷ 8 ÷ 50 = 40000 тиков на один цикл ШИМ.
      В других частях кода,  есть строки, подобные этим:
      TCCR1A ^= _BV(COM1A1);
      OCR1A   = pos;
      Первая строка переключает (^ является XOR оператор в C) бит COM1A1 в специальной функции регистра TCCR1A. Это разрешает или запрещает PWM (ШИМ) выход на выводе OC1A (который отмечен в другом месте в спецификации ... на Uno, это контакт 9). Вторая строка устанавливает выход сравнения регистра на том же контакте – рабочий цикл ШИМ – его значение хранится в переменной «pos».
      Сложная вещь, не так ли? Рассмотрите все это поэтапно. Помните, что это всего лишь  создание и очистка бита. Очень, очень, очень конкретного бита. Не вините себя, если что-то не заработает в первый раз, или второй, или 23 ... от нескольких проектов я просто вынужден был отказаться, потому что я никогда не мог сделать их наугад. Периферийные устройства AVR одни из самых трудных вещей Arduino. Более сложное программирование может быть только на языке ассемблера. Именно поэтому существуют библиотеки Arduino, которые избавляют нас от сложностей аппаратного программирования.
      Периферийные устройства это огромная тема, гораздо больше, чем мы затронули здесь (помните, это 650 страниц технического описания), но я хотел, обеспечить высокий уровень объяснения и понимания очень низкоуровневой технической специфики.
      Заключение
      Окупаемости всей этой тяжелой работы? В случае применения этой библиотеки, NeoPixels и сервоприводы отлично работают вместе. В более широком смысле, гораздо более отлаженно. Байт в байт, цикл для цикла, там просто нет лучшего, чем стратегия оптимизации использования встроенных периферийных устройств микроконтроллера. После настройки и запуска, ноль командных циклов тратятся на выполнение задачи. Параллельно запускается другой код, в то время как периферийные устройства делают свою работу - это явный вид многозадачности.
      Достоинства и недостатки.
      Производительность это не главное. Это часто сильно увеличивает стоимость, но не добавляет гибкости, давайте рассмотрим:
      • Периферийные устройства и регистры специальных функций являются уникальными для каждого производителя и модели микроконтроллера. Чтобы использовать их, нужно ограничить себя очень специфическим кругом оборудования. Код, который выполняет волшебные функции на Arduino Uno, не будет работать на Arduino Due ... можно даже не компилировать ... они основаны на совершенно разных архитектурах. Наша библиотека работает на наиболее распространенных 8-разрядных микроконтроллерах AVR.
      • Периферийные устройства чрезвычайно ограниченный ресурс, гораздо больше, чем даже ОЗУ или пространство кода. Существует ровно один 16-разрядный таймер/счетчик на Arduino Uno. Это может легко привести к конфликтам библиотеки ... например, библиотека WaveHC (которая играет WAV файлы с SD карты) также опирается на таймер/счетчик 1. В этом случае будет конфликт с NeoPixels.
      • ШИМ выход из блока таймера/счетчика ограничен очень специфическим набором контактов. На Arduino Uno, вы не можете контролировать более двух сервоприводов одновременно, и они должны быть на контактах 10 или 11. На Leonardo и Micro, не более четырех сервоприводов на контактах 5, 9, 10 или 11. 
      • Микроконтроллеры Trinket и Gemma не имеют даже 16-разрядный таймер. Есть только 8-разрядный таймер, при его использовании, у сервопривода возможно только лишь 8 различных положений, и соответственно плавное движение становится невозможным.
      Ранние версии "официальной" библиотеки Arduino для сервопривода работали именно так, как мы описываем здесь ... используя ШИМ выход из таймера/счетчика 1. Это уже позже перешли на технику прерывания в основе, с выгодной поддержкой многих сервоприводов на любых контактах. Там не было очевидных недостатков, NeoPixels не было даже вообще в природе, пока они не появились совсем недавно!
      Описание библиотеки The TiCoServo Library
      Если вы просто хотите, загрузить и использовать библиотеку, это полностью нормально. Пожалуйста, ознакомьтесь, что бы быть в курсе следующих ограничений:
      • Эта библиотека работает только на некоторых Arduino-совместимых платах. Все наиболее распространенное оборудование с 8-битной архитектурой AVR микроконтроллеров должно хорошо работать (Arduino Uno, Duemilanove, Leonardo, Mega, Pro Trinket, Teensy 2 и прочие.). "Обрезанные" платы, использующие другие микроконтроллеры (Arduino Due, Teensy 3, и т.д.) могут тоже работать.
      • На микроконтроллерах Trinket и Gemma возможно всего восемь сервопозиций, не будет плавности хода (на Pro Trinket должно быть все нормально).
      • Сервоприводы работают только на очень ограниченном количестве контактов, ниже приведена распиновка для различных микроконтроллеров:
      Микроконтроллер- Контакты для сервопривода
      Arduino Uno, Duemilanove, Diecimila, Adafruit Pro Trinket, Boarduino, Menta (anything w/ATmega328P or ATmega168) - 9, 10
        Arduino Leonardo, Micro - 5, 9, 10, 11   Adafruit FLORA - D9, D10   PJRC Teensy 2.0 (not Teensy+ or 3.X) - 4, 9, 14, 15   Arduino Mega - 2, 3, 5, 6, 7, 8, 11, 12, 13, 44, 45, 46   Adafruit Trinket - 1, 4   Adafruit Gemma - D1   Скачать библиотеку Adafruit TiCoServo Library для Arduino можно по ссылке:  https://github.com/adafruit/Adafruit_TiCoServo/archive/master.zip  Скачать библиотеку Adafruit NeoPixel для Arduino можно по ссылке: https://github.com/adafruit/Adafruit_NeoPixel/archive/master.zip 
      Установка этих библиотек становится точкой преткновения для новичков, пособие по установке этих библиотек доступна по ссылке:  https://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
      После установки библиотеки, перезагрузите Arduino IDE.
      Есть два простых примера, которые согласуют сервоприводы и NeoPixels. Один будет работать на Adafruit Gemma или Trinket, другой на Arduino Uno или большинства других неспециализированных плат (Leonardo, и т.д.). Вам, возможно, потребуется изменить некоторые номера контактов PIN (PIN # NeoPixel, и т.д.) в программном коде.
      Библиотека моделируется после официальной библиотеки Arduino для сервопривода ... все функции и аргументы идентичны, и вы можете просто обратиться к сайту Arduino для справки. Для назначения номеров контактов нужно внести незначительные изменения в программный код, большинство программных кодов для сервоприводов Arduino совместимы и сложностей, возникнуть не должно. Итак, покажем какие строки возможно придется изменить:
      Вместо: #include <Servo.h> Пишем: #include <Adafruit_TiCoServo.h>
      Изменение декларации сервопривода, в место:
      Servo myservo; // create servo object to control a servo Пишем: Adafruit_TiCoServo myservo; // create servo object to control a servo
      С функциями attach(), write() и прочими, работать аналогично стандартной библиотеке сервоприводов, если конечно вы не будете использовать Trinket или Gemma.
      Особые дополнения для Trinket и Gemma
      Так как они основаны на уменьшенном микроконтроллере ATtiny85, то эти платы работают немного по-другому.
      Во-первых, необходима одна дополнительная линия #include в верхней части кода:
      #include <avr/power.h>
      Затем добавьте следующую строку в функции setup(). Важно, что она стояла пред вызовом функции  servo.attach ()!.
      #if (F_CPU == 16000000L)
      clock_prescale_set(clock_div_1);
      #endif
      В отличие от «большого» кода, который работает с градусами или микросекундами, "крошечная" версия может указать только серво позиции в значениях "тик", где каждый тик равен примерно 128 микросекунд. Учитывая, что большинство сервоприводов номинально синхронизируются импульсом между 1000 и 2000 микросекунд, то это означает значение от 8 до 15 тиков, и являются разумным диапазоном. Каждый сервопривод немного отличается, хотя ... некоторые из них более или менее совместимы по диапазону, так что вы можете быть уверенны в настройках этих значений.
      Это может показаться большим достижением. Многие проекты требуют только два сервопривода (например, ворота, флаг или клапан переключения между открытым и закрытым положениями).
      Источник:  https://learn.adafruit.com/neopixels-and-servos?view=all
    • By LEDSKLAD (Obukhov Mikhail)
      Контроллер SMART-K6-SPI для светодиодной ленты «Бегущий огонь»
      Светодиодные ленты с управлением SPI широко используются для создания динамических световых эффектов разной сложности. Функциональность всей системы будет зависеть от выбранного контроллера. Оборудование серии SMART – это идеальный вариант для реализации бюджетных динамических цветосветовых решений при оформлении помещений в ресторанах, кафе, оформлении витрин и создании рекламных вывесок.

      Контроллер SMART-K6-SPI для светодиодной ленты «Бегущий огонь» уже содержит 32 встроенных цветовых эффекта, выбор которых легко осуществляется с помощью пульта ДУ. Контроллер поддерживает регулировку яркости свечения и скорости выполнения программ.

      Настройка и управление контроллером осуществляется с помощью радиопульта SMART-R3-RGBW. Связь на чистоте 2,4 Ггц обеспечивает устойчивое управление до 20 метров на открытом пространстве. При первоначальной настройке контроллера с помощью цифровых кнопок пульта можно выбрать тип микросхемы (поддерживает большинство популярных светодиодных микросхем), установить длину ленты до 1024 пикселя, назначить нужную последовательность RGB.
      Пульт позволяет выбрать нужный режим, отрегулировать скорость выполнения программы, изменять яркость свечения, запомнить два любых понравившихся режима.
       022658 Контроллер SMART-K6-SPI (12-24V)
       022659 Пульт SMART-R3-RGBW (1 зона, SPI, 2.4G)
      Контроллер SMART-K6-SPI для лент «Бегущий огонь» – это бюджетное, простое в установке и управлении оборудование, которое оптимально использовать для несложных динамических осветительных систем.
      OPTOMLEDS.RU - Высококачественное светодиодное оборудование и сопутствующие материалы для создания систем освещения различных уровней сложности.
      ▪️ Разработка светодиодных решений индивидуально, под заказ
      ▫️ Контроль качества производства
      ▪️ Широкий ассортимент продукции - более 5000 актуальных наименований 
      ▫️ Складская программа - более 80% наименований постоянно присутствует на складе
      ▪️ Совместимость устройств и удобный подбор товара
      ▫️ Техническое сопровождение - инструкции, схемы подключения, 3D-модели, IES-файлы
      ▪️ Техническая поддержка и гарантийное обслуживание
      ▫️ Отдел исследований и контроля качества: тестирования, испытания, входной контроль
      ▪️ Фотометрическая лаборатория для измерения параметров светотехнических устройств
  • LIGHTING DESIGN | PROJECTS LIGHTING:

  • Lighting Design: NEW IDEAS OF FUNCTIONAL AND DECORATIVE LIGHTING

  • Clubs

  • Who's Online   62 Members, 0 Anonymous, 90 Guests (See full list)

  • Popular Contributors

  • Member Statistics

    2,086
    Total Members
    1,029
    Most Online
    hernanperez
    Newest Member
    hernanperez
    Joined
  • Gallery Statistics

    2,932
    Images
    5,891
    Comments
×
×
  • Create New...