Serwisy partnerskie:
Close icon
Serwisy partnerskie

Ekscytacje Maxa. Migające diody LED i śliniący się inżynierowie (8)

Article Image
Nie wiem jak Ty, ale ja ledwo nadążam za wszystkim, co się dzieje. Jest tyle fajnych rzeczy do zrobienia, ale nigdy nie ma na to wystarczająco dużo czasu. W tej chwili, na przykład, z radością eksperymentuję z moim układem piłeczek pingpongowych 12×12, gdzie każda piłeczka zawiera trójkolorową diodę LED zwaną NeoPixel.

W poprzednim odcinku tego cyklu (EdW 04/2024) wyobrażaliśmy sobie, że matryca leży płasko na podłodze, a z nieba losowo spadają wirtualne krople wody. Za każdym razem, gdy wirtualna kropla wylądowała na jednym z naszych pikseli (piłeczkach pingpongowych), piksel ten świecił na biało przez krótki czas.

Następnie zdecydowaliśmy się przedstawić nasze krople za pomocą losowych kolorów wybranych z palety składającej się z trzech kolorów podstawowych (czerwonego, zielonego i niebieskiego), trzech kolorów drugorzędnych (żółtego, cyjanu i magenty) oraz sześciu kolorów trzeciorzędnych (pomarańczowy, chartreuse, wiosenny zielony, lazurowy, elektryczny indygo i różowy).

Rzecz w tym, że zwykłe włączanie i wyłączanie pikseli nie jest zbyt subtelne. Aby dodać odrobinę wyrafinowania, zdecydowaliśmy się na wygaszanie koloru, utrzymywanie go na stałym poziomie, a następnie ponowne wygaszanie, więc to właśnie zrobimy w tym miesiącu.

Zachowaj prostotę

Za chwilę stworzymy mały zestaw funkcji, które wykonają dla nas efekt wygaszania. Jedną z cennych umiejętności przy pisaniu funkcji jest tworzenie ich tak prostymi i uniwersalnymi, jak to tylko możliwe. W ramach tego korzystne może być podzielenie części naszego algorytmu na podfunkcje, które mogą być ponownie wykorzystane przez inne funkcje w przyszłości.

Jak zwykle korzystne może być pobranie treści kodu, aby śledzić moje meandryczne rozważania (wystarczy pobrać plik CB-Oct20-01).

Jedyne rozmiary liczb całkowitych bez znaku o stałej szerokości, jakie mamy do dyspozycji, to 8, 16, 32 i 64 bity. Nasze kanały koloru czerwonego, zielonego i niebieskiego mają po 8 bitów szerokości. Jak wspomnieliśmy wcześniej, nasze kolory reprezentujemy głównie jako pojedyncze wartości szesnastkowe. Na przykład COLOR_WHITE definiujemy jako 0xFFFFFFU (pamiętaj, że dodanie znaku „U” lub „u” na końcu wartości powoduje, że kompilator traktuje ją jako zmienną bez znaku).

Czy zauważyłeś, że FFFFFF ma tylko 24 bity szerokości? Ponieważ najmniejsza liczba całkowita bez znaku, której możemy użyć do przechowywania tej wartości, ma szerokość 32 bitów, oznacza to, że pozostawiamy najbardziej znaczące osiem bitów niewykorzystanych. Tym samym, powinniśmy byli określić nasz COLOR_WHITE jako 0x00FFFFFFU. Powodem, dla którego tego nie zrobiliśmy, jest nasza wiedza o tym, że kompilator, wykonując swoją magię, doda wszelkie wymagane zera wiodące.

Aby przeczytać ten artykuł kup e-wydanie
Kup teraz
Firma:
Tematyka materiału: Wybieranie kanałów kolorów, LED, NeoPixel, Regenerujące kolory
AUTOR
Źródło
Elektronika dla Wszystkich maj 2024
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Edukacja
1/10 Jak działa rezystor LDR?
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"