Zabawa adresowalnymi diodami LED [Część 1]

Niedawno chciałem się trochę pobawić ostatnio zakupionym wyświetlaczem LED zbudowanym z adresowalnych diod LED. Chciałem go podłączyć i zobaczyć, co można na nim wyświetlić. Docelowo chciałem wyświetlić na nim serce LED. Od samego początku kusiło by wykorzystać do tego platformę Arduino. Wyświetlacz ma rozdzielczość 16×16 i jest umieszczony na elastycznej płytce, pokrytej czarną soldermaską.
zdjęcie przedstawia wyłączoną macierz LED
Macierz diod LED sama w sobie nie wyświetli niczego. Potrzebuje ona sterowania, aby wyświetlić pożądane wzory lub efekty świetlne. Na szczęście miałem akurat kilka modułów Arduino, które leżały bezczynnie w pokoju. Mój cel to podłączyć arduino do tych diod LED i wyświetlić w ten sposób serduszko, takie jak to widoczne poniżej:
zdjęcie przedstawia serduszko z gry minecraft
Przed rozpoczęciem pracy musiałem ustalić, w jaki sposób komunikować się z diodami LED. Korzystając z Arduino i mając na uwadze, że postanowiłem zrobić całość w zaledwie jeden dzień, zdecydowałem się skorzystać z domyślnego środowiska, czyli Arduino IDE. Przy okazji przeglądania dostępnych informacji, dowiedziałem się o istnieniu wersji V2. Jest ona nieco bardziej rozbudowana i oferuje funkcje, na których bardzo mi zależy, a zwłaszcza autouzupełnienie. Postanowiłem z niego skorzystać, aby ułatwić sobie pracę przy programowaniu.
Zdjęcie przedstawia zrzut ekranu z programu Arduino IDE z podpowiadanymi funkcjami
Funkcja ta znacznie ułatwia pracę nad kodem, pokazując, co można zrobić z danym obiektem. Chociaż ten ficzer w Arduino IDE nie jest idealny, uważam, że obecna funkcjonalność jest wystarczająca. Pierwszym krokiem było pozyskanie odpowiednich bibliotek. Choć mógłbym napisać własną bibliotekę, jak już wspomniałem, projekt ten miał być zrealizowany w ciągu jednego dnia, więc tworzenie czegoś od podstaw, szczególnie gdy istnieje dostępna biblioteka, byłoby stratą cennego czasu. Przeszukując internet, natrafiłem na odpowiedź na pytanie: “Czy istnieje biblioteka do tego, i jeśli tak, to jak się nazywa?” Odpowiedź brzmi: “NeoPixel”. Szybko więc otworzyłem ikonę bibliotek, co jest kolejnym udogodnieniem w drugiej wersji IDE dla Arduino.
Zdjęcie przedstawia zrzut ekranu z opisem wtyczki adafruit neopixel
Z tego, co udało mi się dowiedzieć, istnieje kilka różnych bibliotek, ponieważ istnieją różne sposoby sterowania diodami adresowalnymi. Moje diody LED były akurat sterowane pojedynczą linią danych bez zegara. Ponadto, dalsze przeszukiwanie internetu wykazało, że istnieją różne wersje tych diod, różniące się częstotliwością przełączania. Najpewniej diody użyte do budowy mojego przyszłego wyświetlacza mają częstotliwość 800Hz (jest to częstotliwość PWM używana przez kontroler) chociaż nie byłem tego pewien. Istnieją także diody o większych lub mniejszych częstotliwościach. Kontynuując badania, odkryłem, że diody o wyższej częstotliwości PWM są używane w lampach studyjnych lub w miejscach, gdzie nagrywane są filmy, aby uniknąć efektu migotania. Oprócz podstawowej biblioteki, zauważyłem coś takiego:
Zdjęcie przedstawia zrzut ekranu z opisem wtyczki AdaFruit NeoMatrix
Opis sugerował, że ta biblioteka służy typowo do obsługi wyświetlaczy. Jednak nie jestem pewien, czy była ona w ogóle kompatybilna z moją macierzą diod LED. Po zainstalowaniu biblioteki rozpocząłem przeglądanie przykładowych programów..
zdjęcie przedstawia zrzut ekranu z rozwiniętymi zakładkami programu Arduino IDE
Idealnym programem do sprawdzenia, czy wszystko działa zgodnie z tym, co znalazłem w Internecie, jest program o nazwie „strandtest”. Jest to biblioteka przeznaczona do taśm, a nie macierzy, ale do samego sprawdzenia działania biblioteki będzie to idealny program. Macierz LED jest w rzeczywistości długą taśmą, która składa się z 16 odcinków po 16 diod LED, z których każdy kolejny odcinek jest ułożony nad poprzednim, co daje łącznie 256 diod LED. Na razie nie planuję wprowadzać żadnych zmian w programie. Po prostu wgram go do Arduino, podłączę plus do plusa, a minus do minusa. Pozostaje jeszcze linia danych. Według programu powinienem podłączyć ten przewód do pinu 6.
Zdjęcie przedstawia fragmentu kodu definiujący LED_PIN
Dobrze że postanowiłem obejżeć chociaż jeden poradnik na temat podłączania diod adresowalnych, bo okazuje się że muszę jeszcze podłączyć tam rezystor o wartości 470R Jedyne co musiałem zmienić w programie to ilość diod LED, by wszystkie diody się zapaliły.
Zdjęcie przedstawia fragmentu kodu z definicja ilości diod LED
Po wgraniu programu I podłączeniu wszystkiego do arduino zobaczyłem testowy wzór który jest zaprogramowany w programie strandtest.
Zdjęcie przestawia wynik działania przykładowego programu - świecenie macierzy
Wyświetliła się tęcza co pokazuje że wszystkie diody LED działają.

Ciąg dalszy nastąpi...

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *