logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Diody led RGB - migotanie i zmiana kolorów przy niskiej "jasności"

smiesznylolek 13 Gru 2017 16:25 1920 10
  • #1 16887967
    smiesznylolek
    Poziom 8  
    Posty: 22
    Ocena: 1
    Bawię się trochę diodkami póki co to połączyłem 3 diody w rzędzie - kupiłem na
    Aliexpress Link.
    Zauważyłem że jest problem przy białej barwie jak ustawiam jasność na niską wartość np. 50. Pierwsza dioda świeci ok ale każda kolejna coraz bardziej szaleje. Mrugają i zmieniają się delikatnie kolory.
    Zauważyłem że jak wypnę kabelek "sterujący" z arduino to wtedy się uspokajają.
    W czym jest problem i jak się tego pozbyć?
    Tutaj umieszczam swój kod (żadnych cudów):
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #3 16901502
    smiesznylolek
    Poziom 8  
    Posty: 22
    Ocena: 1
    Robiłem taki i faktycznie działa, nie migota. Tylko mam właśnie problem z tym że w zależności od godziny, różne diody się będą świecić (będzie ich więcej niż 3). Czyli będę musiał i tak umieścić show() w loopie, co spowoduje że będzie migotać. I dlatego nie wiem do końca jak to powinno wyglądać
  • #4 16902265
    miszczo997
    Poziom 28  
    Posty: 1052
    Pomógł: 134
    Ocena: 159
    smiesznylolek napisał:
    Robiłem taki i faktycznie działa, nie migota. Tylko mam właśnie problem z tym że w zależności od godziny, różne diody się będą świecić (będzie ich więcej niż 3). Czyli będę musiał i tak umieścić show() w loopie, co spowoduje że będzie migotać. I dlatego nie wiem do końca jak to powinno wyglądać

    W zależności od godziny. Planujesz zbyt daleko nie ogarniając podstaw. Diody migały dlatego, że umieściłeś ustawianie kolorów w pętli, gdzie były one cały czas spamowane danymi. Jako, że połączone są szeregowo (transmisja odbywa się szeregowo) i do zapalenia ostatniej diody dane muszą przejść przez wszystkie je poprzedzające mogłeś zaobserwować to, że migają. Ustaw jakieś opóźnienie (teraz dla testów możesz użyć np delaya), użyj timera do odświeżania diod ewentualnie rozbuduj program tak, żeby aktualizować wyświetlane kolory z jakąś sensowną częstotliwością.
    Przykłady:
    - Dodaj opóźnienie 50ms po wykonaniu funkcji matrix.show() (uzyskasz częstotliwość ~20Hz odświeżania diod)
    - Uruchom timer i w przerwaniu wywołuj funkcję matrix.show() (ewentualnie jedynie ustawiaj flagę, której obsługę zrobisz w pętli głównej)
  • #5 16902322
    gaskoin
    Poziom 38  
    Posty: 4159
    Pomógł: 436
    Ocena: 102
    Przenieśmy się w czasie do zeszłego tygodnia:

    Odświeżaj diody tylko podczas zmian :)
  • #6 16902547
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Kol. Miszczo plecie banialuki niestety. WS2812 nie migają podczas transmisji danych.
  • #7 16902632
    Konto nie istnieje
    Konto nie istnieje  
  • #8 16902950
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Ano tak. Łapią wtedy jedną składową albo kawałek składowej. Podobnie źle będzie przy zbyt krótkim impulsie Reset. A Autor chyba właśnie czegoś takiego doświadcza.
  • #9 16902959
    Konto nie istnieje
    Konto nie istnieje  
  • #10 16903421
    smiesznylolek
    Poziom 8  
    Posty: 22
    Ocena: 1
    <ciach>

    Moderowany przez dondu:

    Zbędne wyciąłem.
    3.1.11. Nie wysyłaj wiadomości, które nic nie wnoszą do dyskusji.




    A co do tematu, to kolor zawszę będzie biały, tylko jasność będzie zmieniana.
    Zauważyłem też że przy niebieskim czy czerwonym kolorze diody nie mrugają.

    Mam już pomysł jak to zrobić, jak już zbuduję zegar i zlutuję wszystkie diody, zobaczymy czy będzie ok, jak co to będę się odzywać:)
  • #11 16903558
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Pomoc już dostałeś - przeczytaj opis biblioteki, z której korzystasz i ZROZUM <ciach>, co robią poszczególne metody, których używasz w programie. Następnie napisz program, który ma sens - woła metodę wtedy, kiedy jest to potrzebne.

    Moderowany przez dondu:

    Zbędne wyciąłem.

Podsumowanie tematu

✨ Użytkownik eksperymentuje z diodami LED RGB, zauważając migotanie i zmiany kolorów przy niskiej jasności, szczególnie przy białym kolorze. Problem wydaje się być związany z umiejscowieniem funkcji `matrix.show()` w pętli, co prowadzi do nadmiernego przesyłania danych do diod. Użytkownicy sugerują przeniesienie tej funkcji do sekcji `setup()` lub dodanie opóźnienia po jej wywołaniu, aby zredukować migotanie. Wskazano również, że diody WS2812 mogą migotać, jeśli transmisja danych zostanie przerwana. Użytkownik zauważył, że przy innych kolorach (niebieskim, czerwonym) diody nie migają, co może sugerować problem z jasnością białego koloru.
Wygenerowane przez model językowy.
REKLAMA