Gradient na ekranie LCD RGB565

0

Cześć mam pytanie odnośnie zaprogramowania gradientu na ekranie lcd nie do końca wiem jak to ugryźć. Wszystko ma sie odbywać w RGB 565 ze względu na oszczędzanie pamięci. Napisałem dwie pętle które tworzą prostokąt na rozmiar całego ekranu. Gradient ma zmieniać się od koloru czerwonego do zielonego rozumiem że wychodzę z samego czerwonego 0x1F<<11 czyli binarnie mam 11111 000 000 00000 jak to przesuwać razem z tą pętlą aby z iteracjami otrzymać 0xF<<5 (czyli zielony) Jest jakiś sposób na to abym mógł to zrozumieć?.

for(i=0;i<240;i++)
		{
		a=i/4;
		kolor=((0x1F<<11))-(((i/2)<<5)/2);
		for(j=0;j<320;j++)
	{
		LCD_BUF[j+320*i]=kolor;

		}
		}

1

Najprościej by chyba było wyliczyć sobie z osobna każdy komponent R, G, B i na koniec złożyć je razem.

int r = (1<<5 - 1) * wspolczynnik_r;
int g = (1<<6 - 1) * wspolczynnik_g;
int b = 0;
int kolor = (r<<11) + (g<<5) + b;

1 użytkowników online, w tym zalogowanych: 0, gości: 1