Управление WS2812B
- Войдите на сайт для отправки комментариев
Ср, 12/03/2014 - 13:15
Доброго времени суток!
Заранее отмечу, что я знаю о существовании библиотек для управления данным чипом, но...
Вот решил поуправлять светодиодной лентой с данным чипом, с использованием библиотеки проблем нет, и появилось желание управлять без библиотеки. Вроде всё придельно ясно, но так ничего и не получилось. Прошу помощи в программировании!
А зачем управлять без библиотеки ? Ну возмите код из библиотеки тогда и вставте в листинг программы
Это то понятно, но т.к. этим делом занимаюсь недавно, считаю, что научиться самостоятельно отсылать посылки (не важно кому, ведь многие девайсы работают именно по данной схеме) дело полезное!
Возможно, поможет данная статья: http://habrahabr.ru/post/200200/
Спасибо, конечно, за попытку помощи, но статья не в ту степь...
Давным давно всё сделал сам и без библиотек (экономия памяти - тоже гуд), правда помучился недельку, почитал мануалы и сам понял где не понял...
Привет! Тема очень древняя, более свежей информации, увы, не нашел.
Творю на Attiny13A в среде Arduino небольшой проэктик и есть необходимость вывести визуальную информацию через одну ножку. WS2812 самое оно, но ни одна библиотека в Тиньку не лезет. Как в скетче сделать вывод на WS2812?
Спасибо за внимание и понимание.
сколько стоит Ваша тинька ? если nano на 328 проце стоит ~ 14О рэ с доставкой скорее всего в почтовый ящик, так как пакет будет тонкий и легко пролезет.
так что, не тратьте время и силы не в то направление, лучше подумайте над созданием красочных эффектов ))
у меня вот тоже созрел вопрос для этой темы, есть потребность управлять 6ОО диодами ws2812b, UNO не сможет их "прокачать" ? а на MEGA2560 ?
у меня вот тоже созрел вопрос для этой темы, есть потребность управлять 6ОО диодами ws2812b, UNO не сможет их "прокачать" ? а на MEGA2560 ?
https://github.com/FastLED/FastLED/issues/288#issuecomment-208968347
...
...
Естественно - всё зависит от того, через что вы ими дергать будете и как задавать цвета.
Привет! Тема очень древняя, более свежей информации, увы, не нашел.
Творю на Attiny13A в среде Arduino небольшой проэктик и есть необходимость вывести визуальную информацию через одну ножку. WS2812 самое оно, но ни одна библиотека в Тиньку не лезет. Как в скетче сделать вывод на WS2812?
Спасибо за внимание и понимание.
Без ассемблера никак. Я писал для 328, может и на тиньку полезет, лежит здесь
http://arduino.ru/forum/proekty/pokhvalimsya-khudozhestvennoi-samodeyate...
Нужно сделать на именно тиньке13, осталась половина памяти и свободная нога. Таймер во время вывода индикации освобождается. Хочу красивое и изящное решение. Нужно менять цвет всего лишь двух индикаторов. Есть готовое решение с подключением второй тиньки но хочется чтобы было красиво. 328 не рассматривается, там я бы с такими вопросами не обращался. есть еще проблемка, тактовая 4.8 онли. Вот тут, боюсь, будет основной затык с работой с ws2812.
Тут вот залепили 2812 в вашу тиньку: http://samopal.pro/ws2812-attiny13a/
Взяли бы 2801 и горя не знали. Только не знаю - в малом формате они выпускаются или нет.
Есть замечательный проект по моей теме на АВ. Тут, но языком по ихнему не владею. Изучаю помаленьку.
управлять думаю glediator`ом есть даже mega2560 но думаю смогла бы и стм32 f103
с Mega2560 пока проблема, на ней не распаяна перемычка reset-en и светодиоды не светятся вообще, не понятно, что ей еще нужно ?
Помогла замечательная библиотека light_ws2812 , лезет во все тиньки и меги.
у кого тоже RobotDyn mega 2560 r3 на CH340, на ней нету reset-en, я так понял, что эта перемычка нужна для перезагрузки контроллера при подключении к терминалу ?
у кого тоже RobotDyn mega 2560 r3 на CH340, на ней нету reset-en, я так понял, что эта перемычка нужна для перезагрузки контроллера при подключении к терминалу ?
Решена проблема с запуском WS2812b на Mega2560, значит если нет перемычки reset-en, как на полате выше, то для успешного запуска достаточно установить конденсатор 22мкф между gnd и reset. Но если вы решите загрузить скетч, то перед этим конденсатор нужно убрать.
и вот код:
у меня вот тоже созрел вопрос для этой темы, есть потребность управлять 6ОО диодами ws2812b, UNO не сможет их "прокачать" ? а на MEGA2560 ?
Стандартные библиотеки для WS2812 используют по 3 байта на 1 светодиод, поэтому с помощью них Arduino Uno/Nano может управлять только 500 светодиодами.
Но количество градаций цвета можно уменьшить: до 5 бит например - тогда на 1 светодиод будет расходоваться 2 байта и Arduino Uno/Nano будет управлять 750 светодиодами.
Ну а если на цвет задействовать только 1 бит (включен-выключен), то есть на 1 светодиод всего 3 бита, тогда Arduino Uno/Nano и с 3000 светодидов справиться.
Можно и до трех байт, просто при выводе дуплить предется: #ABC => #AABBCC. Эконом-вариант, который человеку записывать удобно.
Ну шо вы это как я не знаю кто! Сохраняем для каждого светодиода индекс цвета - 1 байт, для каждого индекса цвета таблица перекодировки в RGB. Таблиц можна несколько иметь, они во флеше. Можем получить любой возможный цвет, но одновременно имеем 256 цветов на ленте и тысячи полторы светодиодов при простой реализации. только вот нахрена?
Можно и до трех байт, просто при выводе дуплить предется: #ABC => #AABBCC. Эконом-вариант, который человеку записывать удобно.
Не понял к чему относится "дуплить"?
Вне зависимости от того, как обрабатываются данные в Ардуине, чипу WS2812 (и ему подобным) нужно отправить 24 бита. Для 5-битовой кодировки цвета отправляется код из 5 значимых битов, а далее 3 нуля или 3 единицы - и так для каждого цвета. Для 1-битовой кодировки соотвественно будет отправляться 8 нулей или 8 единиц для каждого цвета.
Можно также дублировать тот же самый вывод на другие пины. Так для одного заказчика я сделал одинаковый вывод на 12 пинов.
Примеры бегущей строки (управление по одному пину):
8 битов на цвет (3 байта на светодиод): https://yadi.sk/i/KjPlzioNjskYL
5 битов на цвет (2 байта на светодиод): https://yadi.sk/i/RzuRDpZkkK32s
Не понял к чему относится "дуплить"?
Переработал слегонца, реальные байты не посчитал.
Была у меня задачка по передаче массива цветов для пиксельной ленты так, чтобы человек мог их в текстовом редакторе записать и потом быстро отредактировать. Хранение в виде 3-символьной hex-строки оказалось оптимальной (HTML style). Только на выводе в ленту нужно было ниббл удваивать. В реальных-то байтах, конечно, расход один и тот же - 4 бита хранить или 8.
ух, понаписали сколько мыслей-то, отлично, спасибо и + в карму, буду смотреть где там градации цвета убавить, но всеж думаю на стм32f103 все переложить бы, там с оперой проблем нету.
Граждане-господа, помогите подскажите.
Соединила 100 штук Ws2812B в матрицу(змейкой), как на рисунке
"Нарисовала" картинку, для примера.
Код ардуино такой:
Как мне, не рисуя новых кадров, сдвигать картинку справа налево, как текстовая бегкщая строка?
встречный вопрос - а сдвигая влево - в правом столбце что должно быть?
если пусто то просто каждый байт сдвигаете на 1 бит влево при вываде построчно,
при вашем выводе змейкой начинать отсчет не от 0, а от 19, соотвественно последние байты нулем заполнить
Одно НО, из-за того что диоды подключены хмейкой, один кадр получается зеркальным, как это исправить?
Сделала вот так
Соединила 100 штук Ws2812B в матрицу(змейкой),
..............
один кадр получается зеркальным, как это исправить?
..............
You can leave your hat on (Joe Cocker) Хм ...
Добрый день! Сильно не пинайте, я очень начинающий, даже диодом не мигал, сразу в WS2812 полез. Есть библиотека WS2812FX, в ней типовой пример перебора всех 54 эффектов по очереди, выглядит вот так :
Наиболее изящный способ:
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukomment...
Через enum, например. Или через массив. Создаете массив из 24 элементов, в каждый суете обозначение своего эффекта (там же обычные числа через define определены) . Потом по random(24) выдергиваете нужный элемент и суете его значение в setMode();
Добрый день!
Здравствуйте!
Сильно не пинайте
С чего бы?
даже диодом не мигал, сразу в WS2812 полез.
Как говорилось в известном фильме: "Ну, и дура"
выглядит вот так :
Да, нет, дорогой, он выглядт вот так!
А пока он выглядит так, как у Вас, ничего, кроме глума Вы здесь не получите.
Всем спасибо за науку. Ответ, в принципе, получен, если будут еще вопросы - обращусь "по-правильному". А то ишь, залез тут в песочницу, не зная правил...
Всем спасибо за науку. Ответ, в принципе, получен, если будут еще вопросы - обращусь "по-правильному". А то ишь, залез тут в песочницу, не зная правил...
Та дело то не в правилах, от если кто то увидит ошибку в вашем коде (хотя раньше глаза сломает), как ему сослаться на номер нужной строки? На пальцах их посчитать, а вы потом посчитаете по своему и будете разглядывать разные строки. После чего начинается диалог слепого с глухим.