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.

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:

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.

Do pobrania

O autorze