Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
WS2812B RGB Smart Pixel LED
#1
Neki experimenti sa WS2812B smart LED pixel trakom i STM32F407 kontrolerom.

Sam digitalni protokol zahteva vrlo precizan tajming za prenos RGB informacija i ovde je uradjena implmentacija preko PWM modula sa DMA transferom. 

PWM se moduliše od ciklusa do ciklusa sa dve diskretne verdnosti za 0 i 1 tj upiše se 60 ili 120 u brojače pa se dobije tačan tajming
za 24bit stream po pixelu i tako redom koliko ima pixela u nizu.

Postotji buffer u RAM koji se pripremi sa informacijama tj intenzitetom i bojama za sve pixele i startuje se DMA transfer iz memorije ka PWM modulu bez intervencije CPU oko prenos tih informacija samo se javi interupt kada je završen transfer da bi mogla da se pusti sledeće sekvenca.

Prenos informacija za ovih 14 LED traje oko 500us, 0.5ms što bi efektivno bilo oko 2000 FPS brzina osvežavanja mada sam terao na 1000 FPS jer nije imao majji delay od 1ms  Cool
Naravno može i sporije.

Ova postavka sa DMA/PWM radi predobro, probao sam neke animacije i terao sam GPT da mi napravi 20 različitih efekata i animacija sa tom postavkom, radi kao sat, svetli ko blesavo i na 3V3 i 5V još jače.

Moguće je privezati po jednoj digitalnoj linij više desetina ili stotina LED u niz i da se osvežavaju sa 50+ FPS, za VU metre sa Peak-hold ili spektralne anlizatore sa više redova ili druge vizuelne indikatore ...

Quote:    Pattern_Fire(leds, 15000);
    Pattern_StarDust(leds, 15000);
    Pattern_Scanner(leds, 5000);
    Pattern_Rainbow(leds, 15000);
    Pattern_RainbowPulse(leds, 15000);
    Pattern_Fire(leds, 15000);
    Pattern_StarDust(leds, 15000);
    Pattern_FadeTrails(leds, 15000);
    Pattern_Scanner(leds, 5000);
    Pattern_BreathRandom(leds, 15000);
    Pattern_RandomFade(leds, 15000);
    Pattern_IntensityWave(leds, 15000);
    Pattern_Comet(leds, 15000);
    Pattern_ColorChase(leds, 15000);
    Pattern_PulsingSegments(leds, 15000);
    Pattern_BouncingBall(leds, 15000);
    Pattern_NoiseCrawl(leds, 15000);
    Pattern_TwinPulse(leds, 15000);
    Pattern_AlternatingFade(leds, 15000);
    Pattern_MovingGradient(leds, 15000);
    Pattern_StrobeFlash(leds, 15000);
    Pattern_SpiralWaves(leds, 15000);

[Image: attachment.php?aid=47747]


Attached Files
.jpg   541278e7-113f-4a73-8247-d82a601d9aa7~1.jpg (Size: 1,59 MB / Downloads: 17)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)