pl9823 вспышки-блики не по скетчу
- Войдите на сайт для отправки комментариев
Пт, 29/12/2017 - 20:33
Заводил подобную тему по ws2812b теперь то же с pl9823... Суть - собрал ленту-куб на ws2812b, при питании 5,2 В отдельные пиксели ярко вспыхивали не по скетчу. Тогда снизил напряжение, поставив в цепь питания диод - проблема исчезла.
Теперь таже лента-куб, тот же скетч, но pl9823... Отдельные пиксели "тускло артефактят", иногда вспыхивают кратко красным, или синим, или зелёным, разбивая аннимацию светового эффекта по скетчу. Пробовал менять напряжение, питал от батареек всю схему, программно менял яркость свечения и резистором по цепи питания - не помогает. В чём может крыться подвох?
Ну, навскидку:
1) В DO летит помеха, которая воспринимается как последовательность бит для "красного", "синего" и пр.
2) В буфер вывода, который формирует посылку в DO попадают байты, которые заставляют пиксели включаться "красным", "синим" и пр.
Скетч написан с помощью библиотеки "Адафрукт неопиксель". Скетч и вариации катаю на двух кубах. Есть особенность у pl9823, когда включаю к питанию они все ярко вспыхивают на мгновение и дальше по скетчу с бликами. А ws2812b включаются не сразу , но по скетчу... Как помехи исключить,? у каждого пикселя конденсатор по питанию на 0,1 мкф и ограничительный резистор на 75 Ом.
Скетч без пояснений, с кучей счётчиков и циклов, может чего не так написал? Ну вроде всё однообразно - "включил", обновил, подаждал, выключил, обновил...
Давайте рассуждать логически. У нас есть две возможные проблемы: аппаратная или программная. Может и оба варианта сразу. Нам нужно сократить область поиска.
Если проблема аппаратная, то она, скорее всего, должна сохраниться при любом простом эффекте, нагружающем страйп однотипно с тем, на которым фиксируется глюк. Т.е., теоретически, она должна проявляться и на стандартном примере из библиотеки.
Если проблема программная, то она с большой степенью вероятности проявляться перестанет.
Понимаете ход размышлений?
Ход ясен. Сильнее пиксели пестрят при белом цвете и быстрых обновлениях по скетчу.С утреца забью скетч с быстрыми обновлениями пикселей нулевой яркостью по всем цветам. По идее ничего пестрить не должно...
Уточнил на вариациях скетча, пестрит сильнее красный кристалл. Программно никак не убирается...можно ослабить, исключив красный, фигня воощем пока.
Со скетчами из примеров Adafruit - то же самое?
Не, ещё не пробовал. Надеюсь на косяк в аппарате.
Посмотрел скетчи в примерах...как их пришить к 125 светодиодам?, ум за разум. Добавил к схеме два потенциометра на аналоговые входы, регулирую частоту переключений и яркость. На самой малой яркости и частоте анимация из скетча воспринимается отдельно, яркое пестрение отдельно (2-7 штук вразброс)...
В смысле - как? Adafruit_NeoPixel strip = Adafruit_NeoPixel(125, PIN,...
Ну вот например... Куда ставить 125 ясно, а схемы нет. Да и для чего скетч не ясно (немецкий учил). Кнопка управления вроде есть? на выводе 2. А на что замыкает? GND?
Да и для чего скетч не ясно (немецкий учил).
И что, если бы скетч был на немецком, то всё самостоятельно бы перевёл? Без словаря?
P.S. Для "учивших немецкий" - translate.google.com
Подключил кнопку к земле... Запустил скетч...логика в моргалках просматривается, но светодиоды явно пестрят - часть из них остаётся загадочного цвета свечения по отношению к окружающим (и по яркости тоже).
Да, пробовал менять частоту 800 на 400 и наоборот, зелёный с красным местами тоже переставлял, на одном сайте даже читанул, что для pl9823 нуна частота 580кГц, но библиотека послала меня... и у продавца написано 800кГц, воощем пестрят стробоскопически рандомно гады...
Пришло озарение...Перечитал "даташит" продавца... Написано 800 кГц, а внизу диаграмки временные. Если у ws2812b в сумме время 0 и 1 по протоколу 1,25 мкс, то у pl9823 - 1,71мкс!!! Библиотека и не должна корректно работать с ними, частота ведь 580кГц. Что делать с "пистрюками" ???
Как и в любом другом случае выхода два:
1) Искать;
2) Писать самому.
Я поискал за вас: https://github.com/FastLED/FastLED/issues/518
Спасибо, другая библиотека, правда, но буду пробовать...
Глянул блинк для фастледа, нет там опции для pl9823, для других туча, для них нет. Мож не та версия библиотеки?
Странно. В документации есть : http://fastled.io/docs/3.1/class_p_l9823.html
Запутался,.. поищу версию библиотеки поновее, в моей не активны ни pl9823, ни apa106 ...
Вот, версия библиотеки 3.1.0. Совсем не вижу pl9823. Затупил...
А у меня 3.1.6 , только что качнул (хотя зачем мне это вообще надо...).
В блинке нет нужного, но сочинить-то по аналогии недолго: FastLED.addLeds<PL9823,DATA_PIN,RGB>(leds, NUM_LEDS); - компильнул с ней, ошибок нет.
Может они и есть эти самые "неопиксели"???
Ну вот зачем вы фантазируете? Возьмите с гитхаба 3.1.6 - ссылку я дал, строку инициализации для скетчей дал, скомилировал, проверил...
А где найти 3.1.6.? Щас попробую в поисковике... голова кругом.
Попробую по ссылке...
Попробовал такой блинк на кубе жёлтеньким...включаются почти все (ошибаются 1-3 штуки), зато "гаснут красным, зелёным, синим" где-то 5-10 штук...
Ну, что ж могу поделать... У меня таких диодов не было и нет. Что мог - то подсказал.
Спасибо. Просто странно, как так: светодиоды есть, а библиотек для них нет. В скетче скобку потерял
Всё таки 580кГц это далеко от 400 и 800. С горя залез внутрь библиотеки "адафруктнеопиксель", даже нашёл кусок который надо исправить (как мне наивно кажется), исправил, переподключил библиотеку, всё равно, как пестрили, так и пестрят.
Не знаю, что вы там исправили, но как мне помнится - там задержки в asm-куске nop-ами задаются. И их нужно расчитывать в зависимости от частоты целевого МК.
Да, именно в эти "норки" Их там в двух местах нашёл, изменил в нижнем. Рассуждал так для 800 наносекунд в библиотеке прописано 92 норки, а для 1360 наносекунд надо 147 "норок". Ну и по аналогии для 450, 850, 400 наносекунд. Может я ошибся?
Смотрите по #define до asm-вставки, там написано при компиляции под какую платформу (частоту) данный фрагмент будет применен. От этого и будет кол-во дополнительных операций расчитываться. Впрочем, там еще сам алгоритм расписан по тактам и часть задержки происходит за счет других операций, так что увеличение может быть совсем не пропорциональное. Это уже нужно какой-нить логический анализатор брать и на выход вешаться.
Понял, слабоваст я пока до высших материй.
Доброго времени суток)
Получилось забороть артефакты? Собрал куб по журналу Радио №5, если скетч полностью запустить, то винегрет какой-то, если кусками отдельно каждый эффект, то рисунок понятен... Запустил скетч из Вашей переписки на этом форуме - пошел сразу, но артефакты присутствуют... Может эта тема уже не актуальна.... Надеюсь на положительный ответ, спасибо. Павел.
Собрал куб по журналу Радио №5
Все здесь напамять помнят эту схему, даже год указывать ненадо.
Доброго времени суток)
Получилось забороть артефакты?
Сейчас наткнулся на это сообщение случайно, в связи с другой темой.
Принципиально нет, не удалось, всё же частота этих светодиодов отлична от частоты WS2812b. И библиотек под них нет.
Но!, если снизить питание до 3,7 Вольт и использовать синий и зелёный, то артефакты исчезают.
Ну, как нет... Есть код, который нужно вкрячить в адафрутовскую библиотеку, например.
Вобщем, я вывожу на эти PL-ки самопиской.
Так, а Вы делали самописку из-за "пестрения"? Частоту меняли под них?
Не совсем из-за пестрения, просто нужно было большой линзованный светодиод для индикации статуса устройства повесить на МК. И, чтобы, потенциально не было вот таки всполохов - дернул и перелицевал кусок из неопиксельной библиотеки.
Задержки в ассемблере пересчитывал для формирования правильного таймлайна.
Но моя функция вывода только под AVR и одну частоту МК - 16мгц. В адафрутовской железа поддерживается гораздо больше, поэтому совсем красиво всунуть в неё не удастся.
Да, я сегодня опять в неё лазил,"норки" искал :-) Похоже прошлый раз я просто не в ту часть их вставил. Поэтому УНО никак не отреагировала.
Я правильно понимаю?, надо брать вот этот фрагмент из файла cpp:
и преобразовывать его что бы вместо строк
реализовывалось
Направление мысли правильное, но без лог.анализатора менять в коде задержки бессмысленно. Одними нопами не обойтись, как оказалось.
Да, действительно наобум никак :-)
Добился только что 800 кГц работает без бликов на синем цвете и при питании от аккумулятора добавкой 8 "норок".
Глянул библиотеку фастлед - появилась новая версия, конкретно с pl9823. Попробовал, всё равно пестрит если есть красная составляющая. Видимо дело не в программе, а в железе.