ESP8266 a WS28xx
Šerých Jakub
Serych na panska.cz
Středa Únor 2 16:41:46 CET 2022
Nedávno jsem s tím právě na ESPčku také bojoval. Rozsvěcení nespolehlivé, občas ano občas ne, některé barvy ano, některé ne...
Vyřešil to (zcela uspokojivě) až jeden milisekundový FastLED.delay:
void SetFastLED(u_int8_t R, u_int8_t G, u_int8_t B) {
leds[0] = CRGB(R,G,B);
FastLED.delay(1);
FastLED.show();
}
Jakub Šerých
-----Original Message-----
From: Hw-list <hw-list-bounces na list.hw.cz> On Behalf Of Petr Zapadlo
Sent: Wednesday, February 2, 2022 3:37 PM
To: hw-list na list.hw.cz
Subject: ESP8266 a WS28xx
Zdravím,
bojuju tady už několik dní s ovládáním PWM led driverů WS2818b připojených k ESP8266 - pin D2, GPIO4. Mám za sebou pouhé 3ks ws2818, na jednom PCB, kousíček od sebe. Slouží jako generátor PWM pro výkonové ledky.
Schema je zde:
https://cloud.zapadlo.name/index.php/s/Ray8n93kTNKk5nK
Nejsem schopen dosáhnout uspokojivé funkce.
S knihovnou Adafruit_NeoPixel jsem se ničeho funkčního nedobral, když zobrazuji střídavě jednotlivé barvy, tak občas se zobrazení změní, ale je to chaotické a neodpovídá to posílaným datům. (Zkoušel jsem jak 400kHz, tak 800kHz). Na LA vidím jitter v časování impulsů - jsou takové roztřesené. Za prvním ws2818 už data neprolezou = nerozumí jim. Na LA není vidět žádná změna při nastavené 400KHz. Ovšem počty impulzů sedí a nejsou rozpadlé do shluků. Zkoušeno jen bez Wifi neboť to stejně nikam nevede. Vlastní délky impulsů jsou lehce mimo toleranci uvedenou v DS.
Dále jsem vyzkoušel knihovnu Fast_LED, zde jsem dosáhl docela úspěchu - ale jen v situaci, kdy není inicializovaná Wifi. Pokud není wifi - impulzy sedí přesně s časováním a funguje to. Nicméně v okamžiku kdy zinicializuji Wifi, tak vše končí - v řadě impulzů se objevují velké díry, které jsou ws2818 detekovány jako reset. (noInterrupt() situaci neřeší). Zajímavé je, že jsem musel připojit na vstup ws za level shifter kondenzátor proti zemi 22p, jinak to nechodilo. (zkoušeno i u knihovny Ada... beze změny)
Dále jsem našel knihovnu Makuna/NeoPixelBus, zde autor využívá nějaký HW, protože jsou k dispozici různé metody - DMA, UART a bitbang. Na první dvě jsou pouze jeden konkrétní pin, bitbang by měl chodit na každém. Mě teda nechodil - opět na LA "roztřesené" impulzy. Při provizorním připojení na RX pin a použití metody DMA - jsou impulzy perfektní se stabilním časováním bez ohledu na wifi. Nicméně ta knihovna je nějaká pro mě těžkopádná a evidetně určená k výrazně komplikovanější situaci - nejsem schopen zjistit jak nastavit prostou hodnotu na jednotlivých kanálech. Neznáte někdo tuhle knihovnu?
Docela jsem z toho frustrován - knihovna Adafruit_NeoPixel má v repozitáři statisíce stáhnutí a internet je plný návodů na její použití a ESP8266. Evidentně mi něco uniká a já nevím co.
Díky
Petr
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list