Ви не увійшли.
Дивна річ з кольорами. Взяв такий ось модуль хттпс 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 опущено
І що с**а дивно: замість зеленого (як в коді написано) блимає червоним. А якщо написати CRGB::Red - блимає зеленим.
Так то для мене це не критично, але може хтось стикався. Це неправильна ініціалізація ліби, чи сама ліба косячна, чи сам модуль незвичайний?
Неактивний
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
Неактивний
але не так все просто. Синій виглядає не так яскраво як зелений і червоний. Коли хоч один led червоний - всі сині гаснуть. Якась магія. Схоже доведеться міняти, що туди насправді передається.
але не так все просто. Синій виглядає не так яскраво як зелений і червоний. Коли хоч один led червоний - всі сині гаснуть. Якась магія.
Це не магія, це гівняний китайський дизайн. У червоного найменше падіння напруги, у синього найбільше. Є припущення, що там керується струм не тільки окремо по кожному каналу, а й загальний. Коли червоний вмикається, напруга просідає, і синьому вже не вистачає. Хоча, як там воно насправді реалізовано в залізі - мабуть, тільки розробнику чіпа відомо.
Неактивний
Ефекти дуже цікаві.
Коли ініціалізувати fastled як GRB - червоний вирубає сині.
Коли RGB - червоний, який виглядає як зелений, не вирубає а трохи приглушує
Є підозра на fastled+lgt8f328. Так, мої вподобання можуть здаватися дивними
Коли RGB - червоний, який виглядає як зелений, не вирубає а трохи приглушує
У зеленого падіння напруги вище, ніж у червоного, але нижче, ніж у синього.
Так в першу чергу потрібно визначити, чи це FastLED якусь гама-корекцію програмно застосовує, чи особливість самого чіпа.
Я би взагалі запідозрив, що живлення по струму не витягує, і просто напруга просідає. Але якщо кажете, що вмикання навіть одного червоного впливає на всі сині, то не схоже. Скільки у вас там всього чіпів? Пробували тільки з одним єдиним?
Неактивний
Ще цікавіше. Спробував запалити перші 4 діоди білим. Світяться всі, якимсь темно-червоним. Деякі мерехтять. З зеленим відтінком.
Схоже на те, що щось не так з таймінгами в lgt8.
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. Тільки шкали часу не видно. Але аналізатор декодував правильно, так що з таймінгами, мабуть, все ок.
Спробую іншу лібу. Гувер обіцяв, що його ліба підтримує китайску ардуїну
Це в першу чергу потрібно уточнювати, яка саме ліба якої версії використовується. Гуверняна ліба, мабуть же, клон від цієї.
Якщо у клона МК таймінги виконання інструкцій такі ж, як у оригінала, то працюватиме так само як на оригіналі.
Неактивний
Ще би напевно знати, на яких точно чіпах у вас стрічка. По "даташитах" у WS2812 та WS2812B таймінги трохи відрізняються, хоча в межах допусків один одного. А SK6812 (теж 4 ноги) в допуски для WS2812B уже не попадає.
Хоча все одно при 16МГц гранулярність таймінгів краще ніж 62.5 нс не отримати.
Неактивний
Але TH=1us , коли потрібно 0.8+-0.15..
Пишуть, толерантність до таймінгів у цих чіпів по факту вища, ніж заявлено. Але може не у всіх
У FastLED гранулярність 125 нс навіть при 16 МГц: src/chipsets.h:773
У Гувера свій імпортозаміщонний лісапет, і там з таймінгами зовсім дивно.
Там же явно лежить libraries/FastLED-3.2.9, хіба ні? Чи ми дивимось у різні репозиторії?
Неактивний
Не знаю, що ви там компілюєте, на чому запускаєте і чим міряєте.
Ось ця програма:
#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:
Те ж саме з WS2812B, що не дивно, бо для FastLED це один і той же контролер.
Ось така смужка світиться нормально, без всяких артефактів.
Неактивний
О, ви не з такої сім"ї як всі З багатої
) І така само нога але не болить
У нас логічний пробник за 5 баксів. І lgt8f238, начебто покращена копія atmega, але це не точно І індикатор куплений по скаженій знижці
)
Можливо індикатор трохи підгулявший. Бо якщо не намагатись використовувати всі кольори одночасно - працює як очікувано. В принципі, для індикатора рівня цього досить.
Неактивний
О, ви не з такої сім"ї як всі
З багатої
) І така само нога але не болить
Не вловив причини для сарказму. Ви ж наче хотіли розібратись, в чому причина глюків. Ну, якщо просто пожалітись, то нема питань
Є підозра на fastled+lgt8f328
Щоб зняти підозру, є сенс скомпілювати і перевірити на оригінальній AVR. Ви ж тільки в 4-му повідомленні згадали, що у вас МК несумісний з AVR по таймінгам інструкцій.
В FastLED є якась поправка для LGT8F. А макрос __LGT8F__ визначається в pins_arduino.h фреймворка. Ви ж цей фреймворк використовуєте? Хоча скомпільований для AVR і запущений на LGT8F код мав би давати навпаки, коротші таймінги, а не довші.
В microLED взагалі LGT8F визначається по F_CPU == 32000000UL.
У нас логічний пробник за 5 баксів.
Ну, частота виборки у нього більша за 8 МГц? Інакше сенсу в таких вимірах ніякого.
Бо якщо не намагатись використовувати всі кольори одночасно - працює як очікувано.
Я так і не зрозумів, "всі кольори одночасно" - це на одному чіпі чи на всіх у стрічці? Може дійсно, просто струму живлення не вистачає.
Я би в першу чергу спробував різні варіанти: увімкнути тільки один, перший, в комбінаціях 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)
Неактивний
Не вловив причини для сарказму.
Осцилограф просто красивий
Частота виборок в пробнику наче 24 мгц, повинно вистачити. https://arduino.ua/prod651-logicheskii-analizator-saleae-8-kanalov
Різні байти (B і R) передаються з різними таймінгами - в мене немає пояснень цьому, хіба що дійсно чудеса китайського контроллера.
Згоден, без експеримента з оригінальною ардуїною нічого не скажеш.
Неактивний
Частота виборок в пробнику наче 24 мгц, повинно вистачити. https://arduino.ua/prod651-logicheskii-analizator-saleae-8-kanalov
Так, цілком. Такий аналізатор теж 875 нс показує як 875 нс:
хіба що дійсно чудеса китайського контроллера.
Або така особливість реалізації в FastLED. Хто зна, на стрічках з якими чіпами її тестували. Може на одних варіантах чіпів воно і так працює, а на інших уже ні.
Цікаво, що в цьому описі LGT8F88P/LGT8F168P/LGT8F328P значить "Cycle: 1/2" для сімейства інструкцій LD, які без розгалуження?
А ще ж є LGT8F328 з індексом P, а є з індексом D. Може у них і таймінги інструкцій теж різні.
Неактивний
А ваш аналізатор протоколу rgb трохи інакше виглядає. Що за програма?
А ваш аналізатор протоколу rgb трохи інакше виглядає. Що за програма?
Saleae Logic 2 v2.4.29
Неактивний