Witam,
ostatnio się głowię nad tym, w jaki sposób wygenerować efekt tęczy dla linijki np. 7 diod RGB. Idea jest taka aby 'koniec tęczy' przechodził na początek i była by w tedy taka wstęga. Wiadomo mógłbym porobić gotowe tablice z ograniczonymi wartościami, ale mi chodzi o płynne przejścia. Zakres wartości dla danego koloru to 0-255 czyli 1 bajt. Dla jednej diody mamy 3 bajty, zaś co w przypadku gdy mam tych diod kilka i chcem uzleźnić kolor od koloru poprzedniej diody. Generowanie kolorów było by programowo.
Teraz w czasie pisania postu, przyszło mi do głowy, że można zrobić 1 diodę jako główną, a potem od niej odejmować, lub dodawać 'przesunięcie' wstęgi dla koleinej diody itd. Tglko teraz w jaki sposób zinterpretować 'całą wstęgę', po to aby obliczyć przesunięcie do kolejnej diody.
[2560][BASCOM] Generowanie tęczy dla kilku LED RGB
- siekierzyński
- Użytkownik
- Posty: 482
- Rejestracja: 01 cze 2010, 23:12
- Lokalizacja: Nareszcie Polska
Poczytaj o modelu kolorów HSL i HSV. Owszem przeliczenie tego na RGB trochę trwa, ale jak pisałeś można to wrzucić w tablicę - raz wyliczyć i tylko przesuwać.
Jeśli uważasz że to za trudne i zbyt skomplikowane, a całość można bardzo uprościć, zastosuj jeden z poniższych modeli:
0) dioda R świeci pełną mocą
1) przez max 255 kroków zwiększasz jasność LED G, na koniec teraz świeci RG
2) przez max 255 kroków zmniejszasz jasność LED R, na koniec świeci G
3) zwiększasz B, świeci GB
4) zmniejszasz G, świeci B
5) zwiększasz R, świeci RB
6) zmniejszasz G, świeci R, masz sytuację z kroku 0
- masz 6x 255 kroków = 1530 stanów. Dzielisz tą liczbę na N LEDów połączonych w tęczę i możesz wyliczyć stan każdej z nich, a ze stanu przejdziesz na konkretne wartości.
0) dioda R świeci pełną mocą
1) przez max 255 kroków zwiększasz jasność LED G, jednocześnie zmniejszasz jasność LED R, na koniec świeci G
2) zwiększasz B, zmniejszasz G, świeci B
3) zwiększasz R, zmniejszasz G, świeci R, masz sytuację z kroku 0
Analogicznie masz 765 kroków.
Do tego możesz dodać krzywą gamma - przelogarytmowanie każdej składowej RGB tak by odpowiadała charakterystyce ludzkiego oka, u konkurencji masz aż 3 poradniki jak to zrobić:
http://mikrokontrolery.blogspot.com/201 ... zewka.html
Jeśli uważasz że to za trudne i zbyt skomplikowane, a całość można bardzo uprościć, zastosuj jeden z poniższych modeli:
0) dioda R świeci pełną mocą
1) przez max 255 kroków zwiększasz jasność LED G, na koniec teraz świeci RG
2) przez max 255 kroków zmniejszasz jasność LED R, na koniec świeci G
3) zwiększasz B, świeci GB
4) zmniejszasz G, świeci B
5) zwiększasz R, świeci RB
6) zmniejszasz G, świeci R, masz sytuację z kroku 0
- masz 6x 255 kroków = 1530 stanów. Dzielisz tą liczbę na N LEDów połączonych w tęczę i możesz wyliczyć stan każdej z nich, a ze stanu przejdziesz na konkretne wartości.
0) dioda R świeci pełną mocą
1) przez max 255 kroków zwiększasz jasność LED G, jednocześnie zmniejszasz jasność LED R, na koniec świeci G
2) zwiększasz B, zmniejszasz G, świeci B
3) zwiększasz R, zmniejszasz G, świeci R, masz sytuację z kroku 0
Analogicznie masz 765 kroków.
Do tego możesz dodać krzywą gamma - przelogarytmowanie każdej składowej RGB tak by odpowiadała charakterystyce ludzkiego oka, u konkurencji masz aż 3 poradniki jak to zrobić:
http://mikrokontrolery.blogspot.com/201 ... zewka.html