Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Taśma LED - ustawianie różnych kolorów świecenia na każdej diodzie

retrofun 07 Sty 2014 16:18 3204 13
  • #1 07 Sty 2014 16:18
    retrofun
    Poziom 6  

    Witam
    Mam problem natury pewnie bardzo prostej, mianowicie zanurzam się teraz w tematyce led rgb w paskach + arduino. I zastanawia mnie jedna rzecz potrzebuje zmapować wszystkie diody na pasku żeby każda mogła świecić w innym kolorze itd.

    Pytanie moje jest takie czy da się to zrobić ze zwykłym paskiem RGB, czy musi być jakiś specjalny?

    Jeśli wybrałem złe forum przepraszam, mnogość wyboru na elektrodzie mnie przytłacza. Szukałem, ale nigdzie nie potrafię znaleźć prostej dosadnej informacji.

    0 13
  • #3 07 Sty 2014 16:42
    retrofun
    Poziom 6  

    Dziękuje za pomoc, "indywidualnie kontrolowane" tej frazy mi brakowało.

    0
  • #4 07 Sty 2014 17:19
    BlueDraco
    Specjalista - Mikrokontrolery

    Najnowsza i najtańsza wersja zawiera elementy o oznaczeniu WS2812B - właśnie się taką bawię. Wymaga tylko jednego sygnału sterującego.

    0
  • #5 08 Sty 2014 01:06
    retrofun
    Poziom 6  

    BlueDraco napisał:
    Najnowsza i najtańsza wersja zawiera elementy o oznaczeniu WS2812B - właśnie się taką bawię. Wymaga tylko jednego sygnału sterującego.


    A mógł byś mi zdradzić ile zapłaciłeś za 1 metr ?

    0
  • #6 08 Sty 2014 08:57
    BlueDraco
    Specjalista - Mikrokontrolery

    nieco ponad 100 zł - 144 sztuki WS2812B na jednym metrze.

    0
  • #7 21 Sty 2014 20:27
    malina555
    Poziom 14  

    Mirekk36 właśnie robi serię poradników o tych taśmach na swoim blogu :P Zapowiada się super zabawa, pora kupić chociaż metr takiej taśmy.

    0
  • #8 21 Sty 2014 20:56
    BlueDraco
    Specjalista - Mikrokontrolery

    Będzie coś w lutowym numerze EP - taśma WS2812 sterowana z STM32F0.

    0
  • #9 07 Lut 2014 21:51
    ellox
    Poziom 10  

    BlueDraco można coś więcej na ten temat? ;> Przeglądałem czasopismo i nie mogłem dojrzeć artykułu.

    0
  • #10 08 Lut 2014 09:22
    BlueDraco
    Specjalista - Mikrokontrolery

    "Nie wszedł" w lutym, więc zapewne wejdzie w marcu. Ogólna zasada jest taka, że po SPI wysyła się każdy bit w postaci trzech bitów, czyli każde 4 bity danych zamienia się na 12-bitowe słowo przesyłane po SPI. SPI musi pracować na ok. 2.4 MHz (może być 2.5 MHz, bo na STM32F trudno inaczej).

    0
  • #11 08 Lut 2014 11:33
    ellox
    Poziom 10  

    A, ok, w sumie podobnie kombinowałem to zrobić, choć celowałem w 4 bity SPI = jeden bit NZR. Z SPI fajne jest rozwiązanie, gorzej że każdą ramkę trzeba "tłumaczyć" na odpowiednią kombinację...

    Bardzo fajnym rozwiązaniem jest też biblioteka OctoWS2811, tylko żeby ją optymalnie wykorzystać należy najlepiej podpiąć ledy pod 8 pinów portu - wtedy z użyciem przerwań w odpowiednich momentach podawany jest cały bajt danych, więc zera lub jedynki lecą równolegle na 8 linii ledów.

    A już najbardziej podobają mi się sposoby sprzęgnięcia sterownika tych ledów z programami typu Glediator, Minotor, świetna rzecz, tylko wykorzystanie Atmeg w roli sterowników i łączenie wszystkich ledów szeregowo wydaje mi się nie do końca dobrym pomysłem, skoro można to robić szybciej i lepiej :P

    0
  • #12 08 Lut 2014 11:57
    BlueDraco
    Specjalista - Mikrokontrolery

    ATmegę zabija sama transmisja - nic poza tym nie da się już zrobić, w tym przyzwoitej animacji z sensowną częstotliwością.

    Przekodowanie jest b. łatwe - bierzemy 4 bity tego, co mamy wysłać i odczytujemy z tablicy 16-bitowych stałych słowo, którego 12 bitów jest istotnych - wysyłamy je przez SPI. Ja to robię w przerwaniu SPI - trzeba uważać, bo te przerwania następują z częstotliwością 200..208 kHz. :) Można też użyć DMA - wtedy musimy zmarnować pamięć na bufor wysyłanych daych, 3x większy od bufora składowych rgb, ale za to nie mamy tak ostrego reżimu czasowego.

    0
  • #13 10 Lut 2014 14:25
    ellox
    Poziom 10  

    Dzięki za info, jak tylko dorwę się do jakiegoś discovery, będę ćwiczyć i z DMA, i streamowaniem z kompa zapewne :).

    Dobry pomysł z użyciem tablicy ze stałymi, mało miejsca zajmuje, użycie też łatwe. Tylko jak radzisz sobie z 12 bitowymi paczkami? Skoro nie używasz bufora, więc w przerwaniach sklejasz dwa sąsiednie bajty (pomijając momenty gdzie wychodzi "równo", więc bierze się 8 pierwszych lub osiem ostatnich bitów)?

    BlueDraco napisał:
    SPI musi pracować na ok. 2.4 MHz (może być 2.5 MHz, bo na STM32F trudno inaczej).

    Tak na szybko przeglądnąłem RM do STM32F który jest na discovery i do takich kombinacji dzielników i mnożników częstotliwości ze źródłem 8 Mhz doszedłem:
    Code:
    8 000 000 MHz = 
    
                       prediv1       pllmul         freq      spi_div     spi_freq
             -1->         5.00         3.00   4800000.00         2.00   2400000.00
             -2->         5.00         6.00   9600000.00         4.00   2400000.00
             -3->         5.00        12.00  19200000.00         8.00   2400000.00
             -4->        10.00         6.00   4800000.00         2.00   2400000.00
             -5->        10.00        12.00   9600000.00         4.00   2400000.00
             -6->        15.00         9.00   4800000.00         2.00   2400000.00

    Przy czym 19.2 MHz spełnia ten warunek, że wyjście z PLL ma być w zakresie 16 - 48 MHz. Co pominąłem? :P

    0
  • #14 10 Lut 2014 14:30
    BlueDraco
    Specjalista - Mikrokontrolery

    Ja ustawiam częstotliwość uC na 40 MHz, przy podziale przez 16 mamy 2.5 MHz na SPI. SPI pracuje z 12-bitowym słowem, więc nic nie muszę sklejać.

    0