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

Sterowanie taśmą LED z pilota, kłopot z kodem.

08 Mar 2015 17:29 750 2
  • Poziom 8  
    Witam,

    Modyfikując projekt ze strony http://arduino-cool.blogspot.com/2012/09/arduino-rgb-led-managed-by-remote.html napotkałem pewien problem.

    Oryginalny układ zakładał sterowanie jedną diodą/paskiem LED. Używając ULN2803A i pozostałych 3 wyjść PWM z Arduino dorobiłem obsługę drugiego paska diód LED.

    Wszystko działa, za wyjątkiem rozjaśniania drugiej listwy. powoduje zawieszanie się układu. Mimo wielu prób nie udało mi się rozwiązać tego problemu. Monitor portu szeregowego odczytuje jedynie początek kodu z pilota, po czym odmawia współpracy.

    Kod po przeróbce:

    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Najbardziej chodzi mi o ten fragment:

    Definicja inkrementacji

    Kod: cpp
    Zaloguj się, aby zobaczyć kod





    Wykonanie operacji:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod


    Przy użyciu funkcji BRIGHTNESS_UP1 całość się zawiesza. Reszta bez zarzutu. Jeśli ktoś ma jakiś pomysł to bardzo proszę o pomoc.

    Tak wygląda monitor portu po próbie odczytania kodu IR:
    Sterowanie taśmą LED z pilota, kłopot z kodem.
  • PCBway
  • Poziom 28  
    Grymasek napisał:
    Kod po przeróbce:
    Kod: c
    Zaloguj się, aby zobaczyć kod



    A zauważyłeś na stronie, którą podałeś:
    Cytat:
    Caution!: The IRremote library internally use the TIMER2 of Arduino. This causes outputs 11 and 3 do not work as PWM ( therefore I changed the Green led to output 6). On the other hand there is a newer version of the library IRremote, which recognizes many protocols of IR codes, but apparently after several pulses, the obtained codes seem random...??.Can serve you to support other remote controls or for other projects.


    Nie wiem, czy ta nowsza wersja IRremote pozwala na korzystanie z tych wyjść, ale wygląda na to, że też nie działa najlepiej ("obtained codes seem random").
  • PCBway
  • Pomocny post
    Poziom 13  
    No nie ma prawa to działać poprawnie ze względu chociażby na to w jaki sposób realizujesz rozjaśnianie.

    Wartością:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    definiujesz o ile będziesz zmieniał inkrementację/dekrementację

    Funkcją:
    Kod: cpp
    Zaloguj się, aby zobaczyć kod

    idziesz do góry o określoną wartość ustaloną w definicji INCREMENTO (np 10, 20 itd ) Ma to prawo działać POPRAWNIE tylko w przypadku dekrementacji. Dlaczego? Całość będzie działała, ale tylko jeśli ustawisz kolor biały (tj. 255, 255, 255). W przypadku użycia innego koloru (np 255, 0, 130 - różowy) odejmowanie (przyciemnianie) będzie skuteczne (otrzymamy np 205, 0 ,90), jednak przy dodawaniu (rozjaśnianiu) dodatkowo uruchomisz diodę, która z danym kolorem nie ma dużo wspólnego dodając wartość 10 do liczby środkowej ostatecznie otrzymując (przy powrocie na maksymalną jasność) kolor jasnoróżowy (255, 40, 130). Możliwe, że za wyjątkiem pinów zarezerwowanych dla TIMERA2 (tj 3/11) program nie wie do końca co ma robić gdy cały czas zmienia się wartość koloru nieaktywnego)

    Zobacz czy na kolorze białym problem występuje, jeżeli tak to spróbuj użyć funkcji fade.