Closed bomaw closed 1 year ago
Что выводится в лог при старте программы? Указанные симптомы вообще ни на что не похожи. Даже теоретически не знаю что может приводить к таким результатам. Может быть есть у сообщества какие идеи?
Дословно не помню, сейчас лог отключен, я использую ESP-01 на ней всего 2 пина (лента, кнопка) + 2 (реле, -) если отключить лог. Но примерно: WiFi подключен. IP ... UDP-сервер ... Запуск эффекта: ... Запуск эффекта: ... и т.д. Вечером попробую собрать на макетке с Wemos d1 (выдернуть с др. проекта), может дело в ESP-01.
Врял ли дело в ESP. Налицо явное непопадание адреса светодиода в нужную точку. А значит скорее всего проблема либо с выставленным размером матрицы, либо с типом зигзаг/параллельная.
Схему соединений к ESP-01 красиво нарисовать можете? Чтобы в wiki в список схем вставить.
Подключал следующим образом: RX(GPOI3) - реле | VCC - 3,3в GPOI0 - лента | RST - не использовал GPOI2 - кнопка | CH-PD - не использовал GND - земля | TX(GPOI1) - не использовал Для питания использовал понижающий модуль 5V-3.3V с али. Лента через резистор. Также хотел использовать плату логического согласования уровней, но с ней лента не заработала. И соответственно исправления в коде подключенные пины (3, 0 и 2).
Сейчас проверил данный дефект наблюдается на всех эффектах, я пришел к следующему: в гирлянде теряется сигнал первого светодиода, т.е. на первый светодиод подается сигнал второго, из-за этого не горит последний и происходит смещение в соседних рядах на 2 (зигзаг). Не знаю как сюда залить видео с демонстрацией? Для проверки надо, в коде, при выводе на матрицу, в массив leds добавить один светодиод впереди. Но где это сделать пока не разобрался.
Может напишите простой скетч - от 0 до NUM_LEDS-1 - по очереди зажигаете светодиод. Задержка. На следующем цикле - следующий диод. Пока не дойдете до конца цепочки. Потом снова с нуля. И параллельно в монитор порта вывод индекса текущего диода. Задержку побольше, чтобы успеть прочитать.
Сделал по другому, массив из 196 цветов от красного до фиолетового и повторил до конца. Как я и сказал выше, первый теряется. Для проверки в массив спереди добавил белый цвет, отображает все кроме белого. Возможно что первый светодиод неисправен или специфика работы данной гирлянды.
Есть возможность первый перепаять в конец (поменять с последним)?
У меня есть вторая такая же гирлянда (не собрана в матрицу) на ней проверил свой тестовый код, первые 8 горят правильно, дальше не проверял (не стал размазывать). Сегодня уже поздно, завтра после работы попробую первый отрезать и припаять один из лишних (было 200).
Матрица 14х14 из гирлянды (капля)
Если вы про гирлянду с каплями из "эпоксидки", то это голимое дерьмо. Первый светодиод часто глючит. Такая гирлянда очень требовательна к питанию. Сколько не пробовал их, не получилось заставить их работать нормально. Выбросил и забыл - только время потерял. Замените ESP-01 на Wemos D1 mini, зачем же себя так мучить?))
Вчера поменял первый светодиод, проводил разные тесты. В итоге эта гирлянда с ФИКСИРОВАННЫМИ АДРЕСАМИ светодиодов, видимо первый был не рабочий его "китаец" отрезал, вместо 200 было 199. Сейчас у меня только 2 варианта (чтобы на НГ была рабочая матрица, новая с Китая не успеет прийти):
Это не так работает. У диодов нет фиксированных адресов. На вход цепочки подается длинная последовательность импульсов, кодирующая биты информации - цвета, которыми должен светиться диод. Каждый диод "выкусывает" из этой последовательности 24 первых бита, забирая себе закодированный цвет, остальную цепочку передает дальше следующему в цепочке диоду. И так, пока биты не кончатся.
Попробуйте "поиграться" с фичей, реализованной в версии 1.13 - индексная адресация диодов на матрице. В комплекте в проекте в папке tools есть утилита LedMapper. В ней можно составить "карту" индексов диодов, как они расположены на матрице. Пронумеруйте под ваш случай, подключите пронумерованные диоды (массив карты индексов) к скетчу. Код массива вставьте в скетч под ваш размер матрицы - в файле index_map.ino.
в Wiki документация еще не доделана, но, надеюсь разберетесь. https://github.com/vvip-68/GyverPanelWiFi/wiki/Сборная-матрица,-состоящая-из-матриц-разного-типа-и-размера
Это не так работает. У диодов нет фиксированных адресов.
Я тоже так думал. У меня гирлянда 199 светодиодов, использую 196, взял 197 припаял вместо первого, запускаю не горит 1 и последний. Написал скетч, загорание последовательно светодиодов от 1 до 200, через каждые пол секунды. Загораться начинает со 2 по 196 после 1.
А у меня тогда вот такой вопрос: А вы точно используете версию ядра 2.7.4, библиотеку FastLED 3.4 или 3.5 и в настройках платы выбрана NodeMCU 1.0? Версии ядра 3.xxx как раз "славятся" тем, что с ними неадекватно работает первый светодиод в цепочке. Он живет своей жизнью, может моргать произвольными цветам, может вообще не гореть. Правда, чтобы был сдвиг я еще не слышал, ну а вдруг?...
Ну ладно, у вас плата ESP01 и пины в скетче переназначены и работают - значит все ок. Но версия ядра тут принципиальна.
И светодиоды в гирлянде - WS2812B? Или если другие - исправлен ли тип светодиодов в скетче на соответствие реально используемым?
А если в цепочку перед первым диодом припаять "самый первый" (нулевой) диод?
Версия ядра 2.7.4, библиотека FastLED 3.5 (из архива). Пробовал WEMOS то же самое. В скетче WS2812B (по факту я уже не уверен, что они именно такие). Я уже уверен что дело в гирлянде. Сегодня попробую взять остатки (2, 199 и 200), спаять, и поиграться с их включением.
Эта гирлянда с ФИКСИРОВАННЫМИ АДРЕСАМИ. Подключил оставшиеся 3, размер массив указал 200, по очереди через 1 сек устанавливал цвет элементам массива (1, 198 и 199), они загорались указанным цветом. С помощь карты адресов удалось заставить работать матрицу правильно (указал начать с 1 по 195 и в конце 0), но последний светодиод так и не горит, также пробовал вместо 0 поставить 196 и добавить к NUM_LEDS +1. Как заставить работать последний светодиод, в моем случае, пока не разобралься.
Удивительные вещи. Никогда даже не слышал о таких диодах с фиксированными адресами... Чудеса... Ну раз с фиксированными - кто знает адрес этого последнего светодиода, который не горит?... Тут не угадаешь...
Добавление к NUM_LEDS ничего не даст, если используете карту индексов. Это просто размер массива. А адреса (индексы диодов) в массиве могут быть какими укажете - хоть с 255 по 512...
Upd: Тут наврал. Индексы сейчас могут быть только в пределах заданной размерности матрицы - WIDTH x HEIGHT
Адрес его 196, я проверял в тестовом скетче, по этому адресу он работает. В Вашем коде поставил карту индексов от 1 до 196, он не работает. Подумал раз 14х14 это массив от 0 до 195, поэтому попробовал увеличить NUM_LEDS тоже не работает.
В каком месте меняли? Тут? (строка 322)
Сейчас в коде проверяется, чтобы индекс диода (начинался с нуля и последний не превышал размеров матрицы W x H - 1.
Я просто с такими гирляндами никогда не сталкивался вообще и даже не предполагал, что они существуют в природе. Дайте ссылку где покупали?
Ну реально выход получается для диодов с адресами 196,197,198,199,200 нужно в строке 322 где вычисляется NUM_LEDS прибавить нужную длину хвоста адресации.
Или в скетче придется убирать проверку на то, чтобы индекс диодов лежал в 0..NUMLEDS-1 - чтобы был любым... Если правка строки 322 не поможет - пишите, попробую исправить скетч
А у вас похоже и нумерация диодов в гирлянде не с 0, а с 1 начинается, если всё как вы описали - потому и сдвиг...
Менял в a_def_soft.h строка 872. В файле GaverPanelWIFI_v1.13.ino в строке 322: if (CURRENT_LIMIT > 0) {
Гирлянда со своим контроллером, брал здесь, сейчас глянул, есть один отзыв с описанием что адреса фиксированные.
Я писал должно было быть 200 светодиодов, а по факту 199, сама гирлянда спаяна из 2-х частей (99 и 100), я предположил, что 0 был бракованный его отрезали, т.к. с их контроллером разница не заметна.
Менял в a_def_soft.h строка 872.
Здесь эффекта никакого не будет. Это просто объявление переменной и какая-то начальная инициализация. Реальное значение, которое потом используется - там, где я указал.
В файле GaverPanelWIFI_v1.13.ino в строке 322: if (CURRENT_LIMIT > 0) {
Ну, значит, у вас несколько неактуальная версия. Но ведь не трудно несколькими строчками выше найти нужное место? Это же не принципиально.
Точно, не глянул, я думал в одном месте должно быть. Сейчас проверю изменив и это значение.
Изменил только это значение, все заработало. Спасибо за помощь.
Матрица 14х14 из гирлянды (капля), чип WS2812B, использую ESP-01 (имелись в наличии). У меня наблюдаются 2 проблемы: