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

Dioda RGB z software'owym PWM'em

excray 16 Lut 2011 19:30 4232 12
  • Dioda RGB z software'owym PWM'em

    Kolejna już dioda RGB z płynnym przejściem między kolorami sterowana PWM.
    Z tym że ta wersja w ogóle nie wymaga od układu posiadania sprzętowego PWM'a. Cała idea jest rozwiązana programowo a więc pomysł można nie tylko przenieść na inny układ AVR ale również po adaptacji rozkazów na inny typ procesora.

    Code:
    ; 16.02.2011
    
    ; wersja 1.1
    ; Dioda ze wspólną katodą
    ; wewnętrzny oscylator ustawiony na 1MHz CKSEL1=1 CKSEL0=0 CKDIV8=0 - 1,2MHz

    .include    "tn13def.inc"


    .cseg
    .org   $000
       rjmp   start   
       reti
       reti
       reti
       reti
       reti
       reti
       reti
       reti
       reti

    start:   
       cli                  ; blokada przerwań
       ldi r16,low(RAMEND)      ; stos na koniec RAM
       out SPL,r16   

       ldi r16,0b00000111      ;konfiguruje porty B pin0-pin2 na wyjscie
       out ddrb,r16

    ps0:ldi   ZL,low(Ledy<<1)      ;adres tabeli w pamięci programu
       ldi   ZH,high(Ledy<<1)

    ps1:lpm   r4,Z+            ;pobiera wartości bitów portu B
       lpm r3,Z+

       ldi r16,0xff         ;pomocnicza dla licznika R1
       mov r1,r16            ;skopiuj do R1 - pomocniczy przy przejściu
       
       out portb,r4         

    ps2:rcall pt0            ;wykonuj pętlę przejścia z R4 na R3...
       dec r1
       brne ps2            ;...aż w 256 krokach
       
       out portb,r3         

       ldi   r16,low(Ledy<<1)+6   ;jeśli pobrano ostatni argument wykonuj pętlę od początku
       cp ZL,r16
       brne ps1

       rjmp ps0

    pt0:ldi r17,0b00000111   ;ustaw powtarzanie 8x jeden stan pwm

    pt1:mov r0,r5
       com r0
       in r16,portb      ;wczytaj PORTB do r16 - do przetwarzania
       cp r1,r0         ;
       brlo pt2
                ;
       mov r0,r3         ;wczytaj o pomocniczego aby nie zniszczyć
       com r0            ;zaneguj zawartość z r3
       and r16,r0         ;zgaś to co jest w rejestrze r3
       or r16,r4         ;zapal to co w rejestrze r4
       rjmp pt3

    pt2:mov r0,r4         ;wczytaj o pomocniczego aby nie zniszczyć
       com r0            ;zaneguj zawartość z r4
       and r16,r0         ;zgaś to co jest w rejestrze r4
       or r16,r3         ;zapal to co w rejestrze r3

    pt3:out portb,r16      ;wyświetl nowy stan
       inc r5            ;zwiększ
       brne pt1

       dec r17
       brne pt1

       ret

    Ledy:
    .db 1,2,2,4,4,1

    ".db 1,2,2,4,4,1" - czyli:
    1 - PB0 - anoda czerwonej
    2 - PB1 - anoda zielonej
    4 - PB2 - anoda niebieskiej
    1,2 - z czerwonej przejście płynne na zieloną
    2,4 - z zielonej na niebieską
    4,1 - z niebieskiej na czerwoną


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Mitronik
  • Mitronik
  • #3 16 Lut 2011 22:06
    druniu25
    Poziom 20  

    Witam!

    No nareszcie lampka RGB nie będzie na Mega8 :) ciekawe rozwiązanie jeśli chodzi o soft.
    Pozdrawiam

    Ps. Wiem, że schemat jest banalny ale żeby tradycji stało się zadość myślę, że powinieneś go tu zamieścić.
    Bo jak znam życie zaraz posypią się posty z prośbą o niego. :D

  • #4 16 Lut 2011 22:09
    pawel_aa
    Poziom 25  

    O tak, prosimy o pełną dokumentację (schemat, montaz i pcb do termotransferu)!

    Od lat jestem zafascynowany diodami LED RGB i godzinami mogę patrzeć jak zmieniają kolor. Ten projekt odmieni moje życie, na taki układ czekałem wiele lat!

  • #5 17 Lut 2011 01:49
    Artur k.
    Admin grupy audio

    leonow32 napisał:
    O, i to jest dobre. Więcej sprzętu nie potrzeba, że zrobić lampkę RGB. Żadnych kwarców (co niektórym trzeba 16MHz, żeby mrugać diodką), żadnych ATmegXXXX. Doskonały efekt przy minimalnych wymaganiach!


    To jest lepsze:
    http://www.tme.eu/html/PL/trojkolorowe-diody-...sterownikiem-efektow/ramka_2382_PL_pelny.html

    I tańsze! - 2.99zł

  • #6 17 Lut 2011 09:07
    excray
    Poziom 39  

    Tak ale tam nie ma możliwości modyfikowania zmian świecenia a tutaj masz. Wystarczy że zmienisz kolejność:

    Code:
    Ledy:
    
    .db 1,2,2,1,1,3,3,1,1,4,4,5,5,1

    oraz
    Code:
    ldi   r16,low(Ledy<<1)+14

    i masz już zmiany:
    czerwony-zielony-czerwony-żólty-czerwony-niebieski-fiolet-czerwony.

    W taki sposób możesz sobie tworzyć dowolne zmiany świetlne. Możesz również łatwo ustalić dowolną szybkość zmian - zmieniając fusebity zegara.
    Schemat jest banalnie prosty - masa, zasilanie do +5V oraz Pb0,Pb1 i PB2 przez oporniki do anody diody RGB ze wspólną katodą - wszystko widać na zdjęciu.
    Układ bez problemu można przerobić na układ ze wspólną anodą - wystarczy zanegować to co jest wrzucane na wyjście.
    Warto się pobawić i pokombinować, dorzucić watchdog, fotorezystor - zapalanie tylko wtedy gdy ciemno, etc
    Zresztą nie jest to "gotowiec" tylko raczej pokazówka jak można generować w sposób programowy PWM.

  • #7 17 Lut 2011 12:18
    pawel_aa
    Poziom 25  

    druniu25 napisał:
    Witam!

    No nareszcie lampka RGB nie będzie na Mega8 :)


    Łeee to chyba nie jest żadna nowość :(
    Zafascynowany tym projektem zacząłem szukać informacji w internecie i natrafiłem na projekt AVT z listopada 2004 który jest prawie identyczny.

    Link do AVT

  • #8 17 Lut 2011 20:35
    Artur k.
    Admin grupy audio

    excray napisał:
    Tak ale tam nie ma możliwości modyfikowania zmian świecenia a tutaj masz. Wystarczy że zmienisz kolejność:
    Code:
    Ledy:
    
    .db 1,2,2,1,1,3,3,1,1,4,4,5,5,1

    oraz
    Code:
    ldi   r16,low(Ledy<<1)+14

    i masz już zmiany:
    czerwony-zielony-czerwony-żólty-czerwony-niebieski-fiolet-czerwony.

    W taki sposób możesz sobie tworzyć dowolne zmiany świetlne. Możesz również łatwo ustalić dowolną szybkość zmian - zmieniając fusebity zegara.
    Schemat jest banalnie prosty - masa, zasilanie do +5V oraz Pb0,Pb1 i PB2 przez oporniki do anody diody RGB ze wspólną katodą - wszystko widać na zdjęciu.
    Układ bez problemu można przerobić na układ ze wspólną anodą - wystarczy zanegować to co jest wrzucane na wyjście.
    Warto się pobawić i pokombinować, dorzucić watchdog, fotorezystor - zapalanie tylko wtedy gdy ciemno, etc
    Zresztą nie jest to "gotowiec" tylko raczej pokazówka jak można generować w sposób programowy PWM.


    Jasne :) Ale wyjaśnię moje podejście, nieco ironiczne.
    Kolego, ja się na programowaniu nie znam kompletnie, jednak gdybym się znał, to na pewno wystawiłbym dużo bardziej zaawansowany projekt. Taka umiejętność daje potencjał i bzdurą jest wystawianie takich układów. Gdybyś przynajmniej zrobił do tego jakąś obudowę i pokazał jakieś praktyczne zastosowanie (jak np. kit AVT przytoczony wcześniej), to bym chylił czoła. W tej postaci jak dla mnie projekt ma w zasadzie zerową wartość. Zbudowany na płytce stykowej i co dalej?

    Pracuję właśnie nad analogowym układem pełniącym tę samą funkcję (tylko, że ja będę sterował wąż LED), jak skończę go i uznam, że warto pokazać, to ciekawy jestem z jakim zainteresowaniem się spotka...
    Jak znam życie, to pewnie zainteresowanie będzie znikome, bo teraz mamy modę na uC i nawet migacze LED są robione na uC...

  • #9 17 Lut 2011 21:15
    excray
    Poziom 39  

    Artur k. napisał:
    excray napisał:
    Tak ale tam nie ma możliwości modyfikowania zmian świecenia a tutaj masz. Wystarczy że zmienisz kolejność:
    Code:
    Ledy:
    
    .db 1,2,2,1,1,3,3,1,1,4,4,5,5,1

    oraz
    Code:
    ldi   r16,low(Ledy<<1)+14

    i masz już zmiany:
    czerwony-zielony-czerwony-żólty-czerwony-niebieski-fiolet-czerwony.

    W taki sposób możesz sobie tworzyć dowolne zmiany świetlne. Możesz również łatwo ustalić dowolną szybkość zmian - zmieniając fusebity zegara.
    Schemat jest banalnie prosty - masa, zasilanie do +5V oraz Pb0,Pb1 i PB2 przez oporniki do anody diody RGB ze wspólną katodą - wszystko widać na zdjęciu.
    Układ bez problemu można przerobić na układ ze wspólną anodą - wystarczy zanegować to co jest wrzucane na wyjście.
    Warto się pobawić i pokombinować, dorzucić watchdog, fotorezystor - zapalanie tylko wtedy gdy ciemno, etc
    Zresztą nie jest to "gotowiec" tylko raczej pokazówka jak można generować w sposób programowy PWM.


    Jasne :) Ale wyjaśnię moje podejście, nieco ironiczne.
    Kolego, ja się na programowaniu nie znam kompletnie, jednak gdybym się znał, to na pewno wystawiłbym dużo bardziej zaawansowany projekt. Taka umiejętność daje potencjał i bzdurą jest wystawianie takich układów. Gdybyś przynajmniej zrobił do tego jakąś obudowę i pokazał jakieś praktyczne zastosowanie (jak np. kit AVT przytoczony wcześniej), to bym chylił czoła. W tej postaci jak dla mnie projekt ma w zasadzie zerową wartość. Zbudowany na płytce stykowej i co dalej?

    Pracuję właśnie nad analogowym układem pełniącym tę samą funkcję (tylko, że ja będę sterował wąż LED), jak skończę go i uznam, że warto pokazać, to ciekawy jestem z jakim zainteresowaniem się spotka...
    Jak znam życie, to pewnie zainteresowanie będzie znikome, bo teraz mamy modę na uC i nawet migacze LED są robione na uC...


    Jakiś czas temu szukałem w internecie kodu źródłowego do programowego sterowania PWM. Nie interesowały mnie ani eleganckie obudowy ani ładne zdjęcia. Interesował mnie tylko i wyłącznie kod źródłowy aby go zanalizować, zrozumieć i ew. wykorzystać. Taki też jest właśnie cel tego tematu - ktoś inny będzie miał mniej roboty dzięki niemu. Jeśli zwrócisz uwagę na tematy które tworzę to zauważysz że jednym z poprzednich tematów był sterownik wyświetlacza LCD na HD66766. Tam również nie ma bajeranckich gadżetów i efektownej obudowy. Jest za to kompletny kod źródłowy i opis jego działania. I o to chodzi...

  • #10 17 Lut 2011 22:03
    pawel_aa
    Poziom 25  

    No właśnie, jakie zastosowanie ma ten projekt oprócz funkcji "Patrz na mnie"?

  • #11 17 Lut 2011 22:12
    Artur k.
    Admin grupy audio

    :arrow: excray
    Widać słabo szukałeś, projekt takiego urządzenia pojawił się w EdW zaledwie rok po Twojej rejestracji na forum, a link do niego podał Paweł. Nic nowego nie odkryłeś. Z całym szacunkiem dla Ciebie, ale z mojego punktu widzenia wygląda to tak, że uczysz się programować i każdym działającym programem chcesz się pochwalić na forum. Trochę jak małe dziecko w podstawówce - "mamo, tato, umiem napisać literkę A"...

  • #12 17 Lut 2011 22:17
    excray
    Poziom 39  

    Artur k. napisał:
    :arrow: excray
    Widać słabo szukałeś, projekt takiego urządzenia pojawił się w EdW zaledwie rok po Twojej rejestracji na forum, a link do niego podał Paweł. Nic nowego nie odkryłeś. Z całym szacunkiem dla Ciebie, ale z mojego punktu widzenia wygląda to tak, że uczysz się programować i każdym działającym programem chcesz się pochwalić na forum. Trochę jak małe dziecko w podstawówce - "mamo, tato, umiem napisać literkę A"...

    Cóż, jak sam napisałeś nie znasz się na programowaniu, ale na ocenianiu programów już tak. Pozdrawiam i życzę mniej złośliwości :-)

  • #13 17 Lut 2011 22:32
    Artur k.
    Admin grupy audio

    Nie odbieraj moich wypowiedzi jako złośliwość, to nie jest moim celem.
    Ja nie oceniam programu, tylko oceniam projekt jako całość i porównuję z tym, co od dawna znane. Nie trzeba być programistą, by z czystym sumieniem to zrobić :)

    Również pozdrawiam, na przyszłość życzę sukcesów w tej dziedzinie i ambitnych projektów, a naprawdę jest wiele do zrobienia :)