Jump to content
  • Sign Up
  • Language

Recommended Posts

Цветомузыка - барабаны со светодиодной подсветкой

Зажгите свои барабаны от звука ударов. Это руководство поможет вам обновить ваши барабаны, чтобы получить надежную динамическую  светодиодную подсветку. Этот проект использует микрофон в качестве датчика и контроллер Gemma, чтобы заставить светодиоды NeoPixels работать в такт барабанов. Стоимость этого проекта значительно ниже, чем других проектов. Он очень компактен, и может работать от небольших аккумуляторов!

схемы цветомузыки на светодиодных лентах × как сделать цветомузыку из светодиодной ленты × цветомузыка из rgb ленты × цветомузыка на пиксельной ленте × светомузыка светодиоды

Мы сделали сборку для малого барабана, среднего, и большого ударного. Каждый барабан не зависит друг от друга, но если звук от соседнего барабана достаточно громкий, то соседние барабаны тоже могут на него реагировать, что смотрится весьма не плохо. Наш проект обойдется в треть цены других предлагаемых наборов для ударных барабанов на рынке! Есть другие пособия, которые используют элемент «Piezo» и несколько дополнительных компонентов (конденсаторы, резисторы, таймеры, и т.д.), но наше пособие позволяет намного легче достичь успеха при довольно низкой стоимости компонентов, микроконтроллеров, датчиков и светодиодов.

светомузыка на spi ленте × светомузыка из диодной ленты × цветомузыка из светодиодной ленты × схемы цветомузыки на светодиодных лентах

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

NeoPixel: http://learn.adafruit.com/adafruit-neopixel-uberguide

Adafruit Gemma: http://learn.adafruit.com/introducing-gemma

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

  • Барабанная установка
  • Микроконтроллер Gemma
  • Мини микрофон
  • Мини переключатель
  • Литиево-полимерный аккумулятор
  • Светодиодная лента NeoPixel
  • Необходимый инструмент для пайки и сборки
  • 3D – принтер (если имеется)

На схеме ниже представлен общий принцип соединения элементов:

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

Цифровой вход светодиодной ленты NeoPixel подключается к контакту «D0» на контроллере Gemma. Отрицательный полюс питания светодиодной ленты подключается к контакту «GND»,  положительный подключается к контакту «Vout» (только не к 3vo). Микрофон подключается к контактам A1/D2 на контроллере Gemma – это аналоговый вход контроллера. Питание на микрофон подается с контакта «3vo» с контроллера. Контроллер Gemma выполняет функцию регулятора напряжения, преобразуя напряжение батареи в постоянные 3.3V для питания микрофона, в то время как светодиоды питаются от 5V. Соответственно контакт «GND» является общим для обоих напряжений.

Перед полной пайкой вашей схемы, рекомендуем собрать проверочную схему по принципу быстрой сборки:

цветомузыка своими руками.jpg

После сборки вашей схемы, нужно произвести программирование. Контроллер Gemma программируется через USB при помощи программы Arduino IDE. Вы можете изменять и настраивать код, чтобы программа соответствовала вашей схеме. Для начала, мы можем легко изменить количество выходов и количество светодиодов. В нашей установке, каждый барабан используется 60 светодиодов NeoPixels.

Ознакомиться с руководством по работе с программой Arduino IDE можно по ссылке:

http://learn.adafruit.com/introducing-gemma/setting-up-with-arduino-ide

О том, как изменить цвета в зависимости от частоты звука, можно узнать из этого описания:

http://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library

Оригинальный программный код

Процесс сборки всей барабанной установки

В нашем проекте мы использовали 3D – принтер для изготовления акрилового корпуса, в котором мы расположили микрофон и собственно сам контроллер Gemma. Так как он у нас был в наличии, то для нас это проблем не составило. Если же вам проблематично получить доступ к нему, то вы можете придумать что-нибудь свое подходящее для размещения этих компонентов. На всякий случай файл с 3D-моделью корпуса:

LED_Drum_Case_for_Gemma.zip

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

Поэтапная сборка установки хорошо показана на фотографиях ниже:

Цветомузыка из светодиодной ленты. Цветомузыка на светодиодахсветодиодная цветомузыка.jpgцветомузыка на светодиодах.jpgцветомузыка из светодиодной ленты.jpgpixel светодиод.jpgцветомузыка своими руками.jpgцветомузыка своими руками_2.jpgцветомузыка своими руками_3.jpgцветомузыка своими руками_4.jpgцветомузыка своими руками_5.jpg

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

Источник: adafruit

Share this post


Link to post
Share on other sites

Светомузыка SLICK MUSIC – синхронизированное световое шоу на УФ – светодиодах

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

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

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

В качестве источников света, используются 1W светодиоды ультрафиолетового спектра, которые заставляют светиться воду в бутылке, предварительно подкрашенную специальным реагирующим на ультрафиолет красителем. Яркость свечения просто поразительная!

светомузыка своими руками.jpgсветомузыка своими руками_2.jpg

Итак, немного о схеме. В основном, все входные резисторы имеют одинаковое сопротивление, их основная функция – преобразование входящего стерео сигнала в моно сигнал. В зависимости от входного сигнала, их сопротивление может быть от 5 до нескольких сотен Ом, и для каждого проекта рассчитываются индивидуально.

Для усиления сигнала, была использована микросхема операционного усилителя LM741. Для обеспечения отрицательной обратной связи, используется резистор с номиналом, превышающим номинал входных резисторов в 10-50 раз. Это дает мощный выход.

Для разделения частотного диапазона входящего сигнала, используются три RC-фильтра с полосой пропускания 120Гц, 1-5кГц, и 10кГц.

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

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

Share this post


Link to post
Share on other sites

Интерактивный светодиодный светильник с реакцией на звук

 Цветомузыка из светодиодной ленты. Цветомузыка на светодиодах Цветомузыка из светодиодной ленты. Цветомузыка на светодиодах Цветомузыка из светодиодной ленты. Цветомузыка на светодиодах Цветомузыка из светодиодной ленты. Цветомузыка на светодиодах
После начала работы с вариантами работы светодиодов реагирующих на окружающие звуки, стало понятно, что возможно изготовить целую стену из таких светодиодов, как в довольно известном проекте под названием  «Ex Machina». Для того чтобы проверить теорию создания такой стены, при помощи лазерной резки был вырезан небольшой шаблон из картона, прикрытый небольшим куском полупрозрачной бумаги для лучшего рассеивания света. Предполагается, что это будет смотреться очень хорошо, за исключением того, что это уменьшенная копия и в данном случае используются не  индивидуально адресуемые светодиоды. Но есть уверенность, что этот проект реально можно повторить в оригинальном размере, используя светодиоды  DotStar или NeoPixel, для достижения аналогичного эффекта, как и в проекте Ex Machina.

Шаг 1: Вариант 1:  Оцифровка звуковых уровней при помощи звукового сенсора
Интерактивный светодиодный светильник_8.jpg
В проекте была использована светодиодная ленты RGB (60 светодиодов на метр) с напряжением питания 5V. Они были припаяны при помощи проводов к микроконтроллеру Arduino UNO к контактам с возможностью широтно-импульсной модуляции сигнала.
Для звукового зондирования, можно подобрать звуковой датчик в интернете, а затем подсоединить его к аналоговому входу микроконтроллера, который будет считывать показания датчика,  и отображать определенные эффекты на светодиодах.
В этом проекте элементы соединяются следующим образом:
Светодиодная лента - > микроконтроллер:
•    Черный провод GND - > питание 5V 
•    Красный провод  - > Цифровой контакт D2
•    Зеленый провод  - > Цифровой контакт D3
•    Синий провод - > Цифровой контакт  D4 (опционально)

Звуковой датчик - > микроконтроллер:
•    Черный провод GND - > контакт GND
•    Красный провод VCC - > контакт питания 5V
•    Желтый провод OUT - > аналоговый контакт A1

Если у вас есть желание переделать логику логических уровней, то вы можете использовать дополнительные полевые транзисторы, но это лишь увеличит количество проводов.
Скачать программный код для чтения данных со звукового датчика, можно по ссылке: F0EY3XZIH6M1S1N.zip

Шаг 1: Вариант 2: Получение  звуковых уровней с MaxMsp
Интерактивный светодиодный светильник_9.jpg
В этом варианте используются те же светодиодные полосы, что и в первом варианте, и подключаются следующим образом: 
•    Черный провод - VCC
•    Красный провод -> Цифровой контакт D2
•    Зеленый провод  - > Цифровой контакт D3
•    Синий провод - > Цифровой контакт  D4 (опционально)
В этом варианте, для получения звуковых уровней, используется звуковая карта, составленная в программе MaxMsp на персональном компьютере. После применения фильтров по низким и высоким частотам,  определяется цветовая карта, и отправляется через последовательный порт по кабелю FTDI в контроллер Arduino или любой другой контроллер с чипом ATmega.  Затем, микроконтроллер Arduino считывает данные и преобразует значения в количество. Если вы используете микроконтроллер Arduino UNO или LEO, то кабель FTDI вам не нужен, так как они могут общаться через аппаратный последовательный интерфейс.
Для использования этого варианта, можно скачать патч, который внесет требуемые изменения в программный код Arduino:
http://lab.pixedge.com/sound-reactive-led-wall-inspired-by-ex-machina/sound-reactive-led-wall/ 
Готовый программный код для этого варианта доступен по ссылке:

Шаг 3: Установка оборудования: Arduino, светодиоды и стеновые детали
Интерактивный светодиодный светильник_10.jpgИнтерактивный светодиодный светильник_11.jpgИнтерактивный светодиодный светильник_12.jpgИнтерактивный светодиодный светильник_13.jpgИнтерактивный светодиодный светильник_14.jpgИнтерактивный светодиодный светильник_15.jpgИнтерактивный светодиодный светильник_16.jpg Цветомузыка из светодиодной ленты. Цветомузыка на светодиодахИнтерактивный светодиодный светильник_18.jpg Цветомузыка из светодиодной ленты. Цветомузыка на светодиодах Цветомузыка из светодиодной ленты. Цветомузыка на светодиодах - цветомузыка на пиксельной ленте, светомузыка светодиоды
Прилагается файл с шаблоном для стены: FW2ARTEIHAWEV8E.eps  В этом проекте использовался картон, но можно использовать что-нибудь более прочное.  

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

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

Share this post


Link to post
Share on other sites

Настольная LED лампа с реакцией на музыку

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

Цветомузыка из светодиодной ленты. Цветомузыка на светодиодахЦветомузыка из светодиодной ленты. Цветомузыка на светодиодахЦветомузыка из светодиодной ленты. Цветомузыка на светодиодахЦветомузыка из светодиодной ленты. Цветомузыка на светодиодах

По ссылке доступна принципиальная электрическая схема проекта

Шаг 1: Основные компоненты

цветомузыка своими руками × светомузыка × светомузыка на spi ленте × цветомузыка на светодиодах × светодиодная цветомузыкацветомузыка из ленты × светомузыка из диодной ленты × цветомузыка из светодиодной ленты × схемы цветомузыки на светодиодных лентахкак сделать цветомузыку из светодиодной ленты × цветомузыка из rgb ленты × цветомузыка на пиксельной ленте × светомузыка светодиоды

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

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

Примерная стоимость всех материалов составила около 30$.

Шаг 2: Подключение питания к компонентам

58c5ad8f91418__08.thumb.jpg.0be55dc596d673d477aeffac0a3fa28c.jpg58c5ad9035851__09.thumb.jpg.179c95fa7f80eea0a0215f5b557b57ef.jpg58c5ad9085434__10.thumb.jpg.0691218c22cd9405e3c37c17be532f04.jpg58c5ad90cb1da__11.thumb.jpg.3c76fd0895e1eb346900c1e70fc89b74.jpg58c5ad9119ea2__12.thumb.jpg.8d74e585bbdb7c1ff398ce2cea8f448d.jpg

Звездой шоу является модуль звукового детектора. Он обеспечивает аналоговый сигнал для обработки контроллером Arduino, который используется для ловкого управления светодиодами RGB. Для того чтобы использовать компоненты, надо подключить к ним питание. Они все используют питание напряжением 5V DC. В данном случае, использовался понижающий модуль питания с 12V до 5V, но, конечно же, проще использовать блок питания, выдающий непосредственно 5V.

Первым делом, надо подключить положительный провод питания к контактам VIN на контроллере Arduino и модуле звукового детектора. Аналогично подключить отрицательный провод к контактам GND. Соответственно, надо подключить питание (+5V и GND) на вход светодиодной полосы.

Шаг 3: Детектор звука и LED полоса

58c5af65b956e__13.thumb.jpg.a03a5799105f754bbf1671f7bed1e2bf.jpg58c5af66716c1__14.thumb.jpg.dc2e2ad3d64236ff9dec2b9387145469.jpg58c5af66e74d7__15.thumb.jpg.7e7f3699dedcacf0e9d90f3fcdb067ef.jpg58c5af6751212__16.thumb.jpg.e09334084cb3c1e4ec39ed5143c7a87b.jpg

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

Модуль детектора звука взаимодействует с контроллером Arduino через аналоговые входы контроллера. В данном случае используется вход A0, но на самом деле номер входа значения не имеет, он задается программно.

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

Шаг 4: Загрузка программного кода

58c5afc8948f0__17.thumb.jpg.2b452664e87fb2a01eee694b3c6acf63.jpg58c5afc93780a__18.thumb.jpg.ca5513bf7559147b50a58df8d74ca5ce.jpg

Наиболее важной частью этого проекта является программный код для микроконтроллера. Он превращает простую светодиодную лампу в удивительную интерактивную систему. Его основной задачей является преобразование аналоговых значений в некоторое количество светящихся светодиодов с определенным цветом.
Программный код можно скачать по ссылке:
https://github.com/hansjny/Natural-Nerd/blob/master/arduino/soundsread2/sound_reactive.ino 

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

В плане изменения и дополнения программного кода вам придется экспериментировать самостоятельно.

Шаг 5: Сборка внутренней, электронной части

58c5b1ced5e77__19.thumb.jpg.c57bb0ef5317274fa15bec5c066535c8.jpg58c5b1cf6291e__20.thumb.jpg.629d3035c85e58be111d17e25e2b6c5a.jpg58c5b1cfa3f1b__21.thumb.jpg.a7d32f4be1ecf49824f47b58a02368a6.jpg58c5b1d00870f__22.thumb.jpg.3c8811e272814924749d663a711c436c.jpg

Когда все компоненты собраны и в контроллер загружен программный код, можно приступать к общей сборке внутренней части. Для создания “лампочки” используется ПВХ труба (обычная, сантехническая).

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

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

Шаг 6: Изготовление корпуса

58c5b2c460977__25.thumb.jpg.d1f66412c969541abb9ddab8d6e2b9c2.jpg58c5b2c4eae70__26.thumb.jpg.346efdef27b786876e94fd57e1c8248a.jpg58c5b2c53882b__27.thumb.jpg.6e68688ebf10e044c9ae99ab287c63b2.jpg58c5b2c577c0f__28.thumb.jpg.0810411844b0f7c7be04355fe3861774.jpg

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

Шаг 7: Завершение

58c5b23652908__23.thumb.jpg.80625ffdeb0ef80d76a94acdfa724fe0.jpg58c5b236c587e__24.thumb.jpg.d0f8591c7ec4d04f6d15eba71ba2a612.jpg

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

Шаг 8: Готово!

светомузыка из светодиодных лент × как сделать светомузыку из led ленты × управляемая светодиодная лентапрограммируемая светодиодная лента × цветомузыка своими руками × светомузыка × светомузыка на spi лентецветомузыка на светодиодах × светодиодная цветомузыка × цветомузыка из ленты × светомузыка из диодной лентыцветомузыка из светодиодной ленты × схемы цветомузыки на светодиодных лентах × как сделать цветомузыку из светодиодной ленты × цветомузыка из rgb ленты × цветомузыка на пиксельной ленте × светомузыка светодиоды

Источник: instructables

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.


  • Similar Content

    • By ledballs
      Добрый день
      Занимаемся продажей светящихся предметов интерьера, хотим сделать некоторые усовершенствования нашей продукции.
      1) Нам нужно понять как можно выводить RGB ленту для управления через DMX пульты
      2) Как можно сделать режим работы RGB ленты со стандартным выбора цвета + режим работы "светомузыка"
      3) Хотим понять как можно сделать управление, например 100 шарами с 1 пульта управления, с расстояния 10 метро и дальше.
      Есть ли тут умельцы, которые смогут помочь советом или даже собрать рабочий макет? 
    • 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
  • LIGHTING DESIGN | PROJECTS LIGHTING:

  • Lighting Design: NEW IDEAS OF FUNCTIONAL AND DECORATIVE LIGHTING

  • Clubs

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

  • Popular Contributors

  • Member Statistics

    2,092
    Total Members
    1,029
    Most Online
    braydendevin313
    Newest Member
    braydendevin313
    Joined
  • Gallery Statistics

    2,760
    Images
    3,782
    Comments
×
×
  • Create New...