#1 2025-07-09 09:13:27

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

WS2812B і кольори

Дивна річ з кольорами. Взяв такий ось модуль хттпс www.aliexpress.com/item/1005003296302434.html WS2812B наче, судячи з того, що у чіпів 4 ноги а не 6. Написав програму згідно з букварем

#include <FastLED.h>
 FastLED.addLeds<WS2812B, LED_DATA_PIN, RGB>(leds, NUM_LEDS);
  leds[led] = CRGB::Green;
  FastLED.show();
  delay(300);
  digitalWrite(LED_BUILTIN, 1);
  leds[led] = CRGB::Blue;
  FastLED.show();

  delay(700);
  led++;

те що не відноситься до led опущено wink
І що с**а дивно: замість зеленого (як в коді написано) блимає червоним.  А якщо написати CRGB::Red - блимає зеленим.
Так то для мене це не критично, але може хтось стикався. Це неправильна ініціалізація ліби, чи сама ліба косячна, чи сам модуль незвичайний?

Неактивний

#2 2025-07-09 10:26:17

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeR пише:
 FastLED.addLeds<WS2812B, LED_DATA_PIN, RGB>(leds, NUM_LEDS);
 FastLED.addLeds<WS2812B, LED_DATA_PIN, GRB>(leds, NUM_LEDS);

WS2812B.pdf, остання сторінка.
src/eorder.h:9

Неактивний

#3 2025-07-09 10:48:54

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

Re: WS2812B і кольори

Моі глаза.. wink
Дякую wink

Неактивний

#4 2025-07-09 15:24:33

jokeer
Гість

Re: WS2812B і кольори

але не так все просто. Синій виглядає не так яскраво як зелений і червоний. Коли хоч один led червоний - всі сині гаснуть. Якась магія. Схоже доведеться міняти, що туди насправді передається.

#5 2025-07-09 15:54:16

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeer пише:

але не так все просто. Синій виглядає не так яскраво як зелений і червоний. Коли хоч один led червоний - всі сині гаснуть. Якась магія.

Це не магія, це гівняний китайський дизайн. У червоного найменше падіння напруги, у синього найбільше. Є припущення, що там керується струм не тільки окремо по кожному каналу, а й загальний. Коли червоний вмикається, напруга просідає, і синьому вже не вистачає. Хоча, як там воно насправді реалізовано в залізі - мабуть, тільки розробнику чіпа відомо.

Неактивний

#6 2025-07-09 16:00:57

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

Чи це тільки з FastLED такі ефекти, а якщо напряму всунути в стрічку 255/255/255, то світиться нормально?

Остання редакція dimich (2025-07-09 16:02:30)

Неактивний

#7 2025-07-09 16:51:53

jokeer
Гість

Re: WS2812B і кольори

Ефекти дуже цікаві.
Коли ініціалізувати fastled як GRB - червоний вирубає сині.
Коли RGB - червоний, який виглядає як зелений, не вирубає а трохи приглушує wink

Є підозра на fastled+lgt8f328. Так, мої вподобання можуть здаватися дивними wink

#8 2025-07-09 17:15:26

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeer пише:

Коли RGB - червоний, який виглядає як зелений, не вирубає а трохи приглушує wink

У зеленого падіння напруги вище, ніж у червоного, але нижче, ніж у синього.
Так в першу чергу потрібно визначити, чи це FastLED якусь гама-корекцію програмно застосовує, чи особливість самого чіпа.

Я би взагалі запідозрив, що живлення по струму не витягує, і просто напруга просідає. Але якщо кажете, що вмикання навіть одного червоного впливає на всі сині, то не схоже. Скільки у вас там всього чіпів? Пробували тільки з одним єдиним?

Неактивний

#9 2025-07-09 22:44:32

jokeer
Гість

Re: WS2812B і кольори

Ще цікавіше. Спробував запалити перші 4 діоди білим. Світяться всі, якимсь темно-червоним. Деякі мерехтять. З зеленим відтінком.
Схоже на те, що щось не так з таймінгами в lgt8.

#10 2025-07-10 09:44:46

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

Re: WS2812B і кольори

2025-07-10_09-41.png

Хм, дійсно якась фігня. Передається FFFFFF FFFFFF FFFFFF FFFFFF 000 000 000 000

Спробую іншу лібу. Гувер обіцяв, що його ліба підтримує китайску ардуїну wink

Неактивний

#11 2025-07-10 10:34:34

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeR пише:

https://forum.arduino.ua/img/members/3983/2025-07-10_09-41.png
Хм, дійсно якась фігня. Передається FFFFFF FFFFFF FFFFFF FFFFFF 000 000 000 000

На картинці передається Green: 0x58 / Red: 0x80 / Blue: 0x78 на 4 світлодіоди, потім 0/0/0 ще на 4. Тільки шкали часу не видно. Але аналізатор декодував правильно, так що з таймінгами, мабуть, все ок.

jokeR пише:

Спробую іншу лібу. Гувер обіцяв, що його ліба підтримує китайску ардуїну wink

Це в першу чергу потрібно уточнювати, яка саме ліба якої версії використовується. Гуверняна ліба, мабуть же, клон від цієї.

Якщо у клона МК таймінги виконання інструкцій такі ж, як у оригінала, то працюватиме так само як на оригіналі.

Неактивний

#12 2025-07-10 11:01:30

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

Ще би напевно знати, на яких точно чіпах у вас стрічка. По "даташитах" у WS2812 та WS2812B таймінги трохи відрізняються, хоча в межах допусків один одного. А SK6812 (теж 4 ноги) в допуски для WS2812B уже не попадає.
Хоча все одно при 16МГц гранулярність таймінгів краще ніж 62.5 нс не отримати.

Неактивний

#13 2025-07-10 11:23:20

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

Re: WS2812B і кольори

2025-07-10_11-14.png

Таймінги досить дивні.
TH+TL=1.25us - зберігається
Але TH=1us , коли потрібно 0.8+-0.15..

Це fastled. У Гувера свій імпортозаміщонний лісапет, і там з таймінгами зовсім дивно.

Неактивний

#14 2025-07-10 13:57:48

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeR пише:

Але TH=1us , коли потрібно 0.8+-0.15..

Пишуть, толерантність до таймінгів у цих чіпів по факту вища, ніж заявлено. Але може не у всіх smile

У FastLED гранулярність 125 нс навіть при 16 МГц: src/chipsets.h:773

jokeR пише:

У Гувера свій імпортозаміщонний лісапет, і там з таймінгами зовсім дивно.

Там же явно лежить libraries/FastLED-3.2.9, хіба ні? Чи ми дивимось у різні репозиторії?

Неактивний

#15 2025-07-10 14:03:02

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

Re: WS2812B і кольори

https://github.com/GyverLibs/microLED/ - я сюди дивлюсь. няп fastled йому потрібен тільки для сумісності з кольорами в стилі fastled. асемблерний код свій.

Неактивний

#16 2025-07-10 14:12:06

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeR пише:

https://github.com/GyverLibs/microLED/ - я сюди дивлюсь.

А, там так. Я в AlexGyver/GyverLamp дивився.

Неактивний

#17 2025-07-10 14:49:41

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeR пише:

Але TH=1us , коли потрібно 0.8+-0.15..

Відповідно до коду, має би бути 0.875 мкс.
А TH=1 мкс при TH+TL=1.25 мкс відповідає UCS2903.

Неактивний

#18 2025-07-11 18:46:13

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

Не знаю, що ви там компілюєте, на чому запускаєте і чим міряєте.

Ось ця програма:

#include <FastLED.h>

CRGB leds[8] = { 0 };

void setup()
{
    FastLED.addLeds<WS2812, A3, GRB>(leds, sizeof(leds)/sizeof(*leds));
    leds[0] = CRGB::White;
    FastLED.show();
}

void loop() {}

з FastLED у поточному стані гілки master на Pro Mini 16 МГц видає чесні 875 нс для TH:

SDS00001.png

Те ж саме з WS2812B, що не дивно, бо для FastLED це один і той же контролер.

Ось така смужка світиться нормально, без всяких артефактів.

Неактивний

#19 2025-07-11 23:42:18

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

Re: WS2812B і кольори

О, ви не з такої сім"ї як всі wink З багатої wink) І така само нога але не болить wink
У нас логічний пробник за 5 баксів. І lgt8f238, начебто покращена копія atmega, але це не точно wink І індикатор куплений по скаженій знижці wink)
Можливо індикатор трохи підгулявший. Бо якщо не намагатись використовувати всі кольори одночасно - працює як очікувано. В принципі, для індикатора рівня цього досить.

Неактивний

#20 2025-07-12 14:36:37

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeR пише:

О, ви не з такої сім"ї як всі wink З багатої wink) І така само нога але не болить wink

Не вловив причини для сарказму. Ви ж наче хотіли розібратись, в чому причина глюків. Ну, якщо просто пожалітись, то нема питань smile

jokeR пише:

Є підозра на fastled+lgt8f328

Щоб зняти підозру, є сенс скомпілювати і перевірити на оригінальній AVR. Ви ж тільки в 4-му повідомленні згадали, що у вас МК несумісний з AVR по таймінгам інструкцій.

В FastLED є якась поправка для LGT8F. А макрос __LGT8F__ визначається в pins_arduino.h фреймворка. Ви ж цей фреймворк використовуєте? Хоча скомпільований для AVR і запущений на LGT8F код мав би давати навпаки, коротші таймінги, а не довші.

В microLED взагалі LGT8F визначається по F_CPU == 32000000UL.

jokeR пише:

У нас логічний пробник за 5 баксів.

Ну, частота виборки у нього більша за 8 МГц? Інакше сенсу в таких вимірах ніякого.

jokeR пише:

Бо якщо не намагатись використовувати всі кольори одночасно - працює як очікувано.

Я так і не зрозумів, "всі кольори одночасно" - це на одному чіпі чи на всіх у стрічці? Може дійсно, просто струму живлення не вистачає.
Я би в першу чергу спробував різні варіанти: увімкнути тільки один, перший, в комбінаціях RG, RB, GB, RGB. Потім те ж саме, тільки з другим по порядку. Потім уже з усіма на стрічці. З того, чи відрізняються результати при цих варіантах, можна робити якісь висновки.

Також, у вищезгаданій статті:

UPDATE 11/2/2020: There are some new WS2812B and WS2813 chips that require a minimum 250,000ns latch time. If you are seeing lots of flashing, you might have some of these new chips so try increasing the latch low time. More info here.

Може якраз ваш випадок.

Остання редакція dimich (2025-07-12 14:38:04)

Неактивний

#21 2025-07-12 16:02:55

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

Re: WS2812B і кольори

Не вловив причини для сарказму.

Осцилограф просто красивий wink
Частота виборок в пробнику наче 24 мгц, повинно вистачити. https://arduino.ua/prod651-logicheskii-analizator-saleae-8-kanalov

2025-07-12_15-50.png

2025-07-12_15-51.png

Різні байти (B і R) передаються з різними таймінгами - в мене немає пояснень цьому, хіба що дійсно чудеса китайського контроллера.

Згоден, без експеримента з оригінальною ардуїною нічого не скажеш.

Неактивний

#22 2025-07-12 17:23:36

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeR пише:

Частота виборок в пробнику наче 24 мгц, повинно вистачити. https://arduino.ua/prod651-logicheskii-analizator-saleae-8-kanalov

Так, цілком. Такий аналізатор теж 875 нс показує як 875 нс:
250712_salae-logic2.png

jokeR пише:

хіба що дійсно чудеса китайського контроллера.

Або така особливість реалізації в FastLED. Хто зна, на стрічках з якими чіпами її тестували. Може на одних варіантах чіпів воно і так працює, а на інших уже ні.

Цікаво, що в цьому описі LGT8F88P/LGT8F168P/LGT8F328P значить "Cycle: 1/2" для сімейства інструкцій LD, які без розгалуження?
А ще ж є LGT8F328 з індексом P, а є з індексом D. Може у них і таймінги інструкцій теж різні.

Неактивний

#23 2025-07-12 17:43:30

jokeer
Гість

Re: WS2812B і кольори

А ваш аналізатор протоколу rgb трохи інакше виглядає. Що за програма? wink

#24 2025-07-12 18:06:43

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 523

Re: WS2812B і кольори

jokeer пише:

А ваш аналізатор протоколу rgb трохи інакше виглядає. Що за програма? wink

Saleae Logic 2 v2.4.29

Неактивний

#25 2025-07-12 19:38:52

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 136

Re: WS2812B і кольори

Хм, те ж. Але не знайшов як ним читати цей протокол і встановив плугін https://github.com/dustin/logic-ws2812
Просто у вас кольори розшифровуються а в мене ні.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму