MEMS-owa poziomica z sensorem LIS35 na STM32
Dosyć skomplikowana wydawać się może poniższa funkcja, która ma za zadanie w miejsce wcześniej narysowanego bąbelka powietrza przerysować wycinek z tła poziomicy, aby wyczyścić ekran.
void TFTN_WriteBall(const unsigned short *buffer, const unsigned short *bufferball, int xPos, int yPos, int xSize, int ySize)
Można by przerysowywać całą bitmapę tła ale strasznie długo to trwa, dlatego odświeżana jest tylko używana część ekranu. Funkcja przyjmuje następujące parametry:
*buffer – wskaźnik do tablicy z tłem poziomicy
*bufferball – wskaźnik do tablicy z rysunkiem stalowej kulki
xPos oraz yPos – to pozycja wspomnianej kuleczki na tle
xSize oraz ySize – określa wymiar bitmapy kulki do wyświetlenia.
Sama funkcja wygląda następująco:
void TFTN_WriteBall(const unsigned short *buffer, const unsigned short *bufferball,
int xPos, int yPos, int xSize, int ySize)
{
//Draw bitmap
unsigned short Word0,Word1;
unsigned short x=0,y=0;
// Set column address range
TFTN_SendCmd(CASET);
TFTN_SendData(xPoss);
TFTN_SendData(xPoss+xSize-1);
// Set row address range
TFTN_SendCmd(PASET);
TFTN_SendData(yPoss);
TFTN_SendData(yPoss+ySize-1);
// Write memory
TFTN_SendCmd(RAMWR);
//Przerysowanie w miejscu starej kulki tla poziomicy
for(y=0;y> 4) & 0xFF);
//pixel 1 B, pixel 2 R
TFTN_SendData(((Word0 & 0x0F) << 4) | ((Word1 >> 8) & 0xF));
TFTN_SendData( Word1 & 0xFF);
}
}
TFTN_SendCmd(NOP);
// Set column address range
TFTN_SendCmd(CASET);
TFTN_SendData(xPos);
TFTN_SendData(xPos+xSize-1);
// Set row address range
TFTN_SendCmd(PASET);
TFTN_SendData(yPos);
TFTN_SendData(yPos+ySize-1);
// Write memory
TFTN_SendCmd(RAMWR);
//Rysowanie kulki
for(y=0;y> 4) & 0xFF);
//pixel 1 B, pixel 2 R
TFTN_SendData(((Word0 & 0x0F) << 4) | ((Word1 >> 8) & 0xF));
TFTN_SendData( Word1 & 0xFF);
}
}
//Zapamietaj stara pozycje kulki
xPoss=xPos;
yPoss=yPos;
TFTN_SendCmd(NOP);
}
W miejscu wyznaczonym przez akcelerometr rysowana zostaje bitmapa kulki z tym, że kolor czarny nie jest renderowany, a na jego miejsce jest przerysowywana piksel po pikselu bitmapa tła, aby kulka wyglądała profesjonalnie a nie jako kwadrat z rysunkiem kuli.
W momencie gdy uzyskamy poziom w osi x oraz y, kulka znajdzie się w środku najmniejszego okręgu narysowanego na tle, a buzzer wyda dźwięk informując nas dodatkowo o tym fakcie. Jako że bitmapa kulki jest na przemian usuwana oraz przerysowywana na nowo uzyskujemy efekt przeźroczystości, i zwykła bitmapa uzyskuje efekt bąbelka powietrza w wodzie.

Nordic poszerza opcje rozwojowe serii nRF54L o płytkę nRF7002 EBII do łączności Wi-Fi 6
Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć 



