Контрольная сумма выходного сигнала светодиодной ленты FastLed
Мне интересно, подключал ли кто-нибудь выход своей светодиодной ленты обратно к Arduino, чтобы считать данные и убедиться, что лента работает правильно, что-то вроде функции контрольной суммы.
Я использую библиотеку FastLed, и, похоже, это не было сделано.
Причина, по которой я хочу это сделать, заключается в том, что когда светодиод на полосе ломается, это заставляет все следующие светодиоды сильно мерцать. Мне нужно иметь возможность немедленно выключить светодиодную полосу, если она начнет мерцать, поскольку мое устройство используется в качестве визуального терапевтического средства в школе.
Я использую Arduino Due со светодиодной лентой WS2812B.
@Jorb, 👍4
Обсуждение2 ответа
Я не думаю, что светодиодные ленты поддерживают эту функцию, однако, вероятно, есть снижение напряжения в зависимости от того, сколько светодиодов включено. Так что вы можете проверить напряжение на конце ленты, основываясь на светодиодах, которые включены (предполагая, что вы это сохранили), и сравнить значения.
Ленты WS2812 имеют вывод _data out_, который выводит копию каждого входного бита после (24×n)-го, где n — количество светодиодов в ленте., @Edgar Bonet
Посмотрите на время на листе 4 паспорта и на время на листе 3
Низкий бит имеет ширину 400 +/- 150 нс, за которым следует высокий бит шириной 800 +/- 150 нс
Высокий бит имеет ширину 850 +/- 150 нс, за которым следует низкий бит шириной 450 нс.
Чтобы сделать то, что вы предлагаете с контрольной суммой, вам придется сначала отправить контрольную сумму (минимум 3 байта, чтобы подделать данные для дополнительного WS2812B, например) и посмотреть, были ли правильно получены 24 бита, пока в это же время отправляются последние 3 байта.
Due может быть достаточно быстрым для этого. Я не думаю, что 16 МГц Arduino сможет.
Проверка уровня мощности на самом деле невозможна, поскольку во многих лентах питание подается в начало, середину и конец ленты, чтобы обеспечить равномерную яркость и не допустить перегрева дорожек питания ленты из-за избыточного тока.
- Управлять несколькими полосками WS2812B с разным количеством светодиодов.
- Использование аккумуляторов 18650 с повышающим преобразователем 3,7 В в 5 В.
- Нужно ли подключать светодиодную ленту WS2812 «последовательно», если я хочу адресовать каждый светодиод отдельно?
- Устранение неполадок светодиодной ленты WS2812b с кнопкой включения/выключения
- Arduino для запуска и светодиодная лента длиной до 100 м
- FastLED EVERY_N_MILLISECONDS со смещением?
- Arduino Due vs Mega 2560
- Как подключить вывод Arduino 5v к нескольким устройствам?
вот технический паспорт .... http://www.seeedstudio.com/document/pdf/WS2812B%20Datasheet.pdf .... если у вас есть 20 светодиодов, вам придется начать загружать 21-й светодиод до того, как вы увидите выходной сигнал от последнего (20-го) .... я не думаю, что вам на самом деле нужно отправлять 24 бита на несуществующий 21-й светодиод, @jsotola
тайминги очень быстрые и их может быть трудно считать для проверки на наличие ошибок. CDS на последнем светодиоде может обнаружить нерегулярное мигание и его легко потреблять с помощью микроконтроллеров или, может быть, даже с помощью ИС, например, детектора пропущенных фронтов 555., @dandavis
еще одна мысль .... возможно, использовать это для 21-го светодиода (см. мой предыдущий пост).... https://cdn-shop.adafruit.com/datasheets/WS2811.pdf ..... использовать три оптопары вместо светодиодов .... всегда посылать
blackна 21-й светодиод ... если получены какие-либо другие значения, отличные от нуля, то одна или несколько оптопар проведут и вызовут сброс ............. вы также можете использовать микроконтроллер для контроля выхода светодиодной цепочки, @jsotolaВозможно, самым простым решением было бы всегда чёрным светодиодом и ставить на него фоторезистор. Если он хоть немного загорится, я буду знать, что светодиодная лента неисправна., @Jorb