Pierwsze kroki z zestawem STM32L0538-DISCO (3): wyświetlenie bitmapy na wyświetlaczu e-paper GDE021A1

Wyświetlacz GDE021A1 z zestawu STM32L0538-DISCO wyświetla obrazy o wymiarach 172×72 pikseli w monochromatycznej skali barw. Aby wyświetlić bitmapę na wyświetlaczu, należy odpowiednio sformatować obraz i skonwertować go na kod możliwy do przesłania do pamięci RAM mikrokontrolera.

Wstępną edycję obrazu możemy dokonać w dowolnym programie graficznym. Programem który umożliwi konwersję bitmapy na kod oraz edycję zapewniającą dobrą jakość wyświetlonego obrazu jest darmowy program XnView. Rozmiar obrazu nie może przekroczyć rozdzielczości wyświetlacza, czyli 172×72 pikseli, możemy tego dokonać wybierając opcję Zmień rozmiar… z zakładki Obraz.


Następnym krokiem jest zapisanie obrazu w czarno-białej skali barw, w zależności od obrazu wybieramy rodzaj konwersji zapewniający najlepszy efekt z zakładki Obraz i Konwertuj do czarno-białego.


Po konwersji część detali może zniknąć, możemy w tym momencie zapisać plik i dokonać jego edycji w dowolnym programie graficznym, np. Paint. Aby otrzymać obraz na wyświetlaczu odpowiadający naszej bitmapie, musimy obrócić go o 90° zgodnie ze wskazówkami zegara (jego rozmiar zmieni się z 172×72 na 72×172 pikseli).


Ostatnią częścią przygotowania obrazu jest zapisanie go w formacie XBM-X11 korzystając z opcji Zapisz jako… i wybraniu formatu z listy.

W utworzonym wcześniej projekcie w środowisku ARM-MDK otwieramy bitmapę zapisaną w formacie .xbm.


Kopiujemy cały kod oprócz definicji rozmiarów (możemy je skopiować i skomentować aby pamiętać o rozmiarze) do main.c jako prywatną funkcję, zmieniając static char x_bits[] = na static uint8_t x_bits[] =. W miejscu x_bits wpisujemy nazwę naszej funkcji, np. static uint8_t Logo[] =.

W funkcji main() deklarujemy użycie wyświetlacza za pomocą funkcji BSP_EPD_Init(); a następnie używamy następujących funkcji aby wyświetlić obraz na wyświetlaczu:

Funkcja BSP_EPD_Clear(EPD_COLOR_WHITE); zmienia wszystkie piksele wyświetlacza na białe pozwalając na wyświetlenie nowego obrazu.

Funkcja BSP_EPD_DrawImage(uint16_t Xpos, uint16_t Ypos, uint16_t Xsize, uint16_t Ysize, uint8_t *pdata); służy do przesłania danych naszego obrazu do wyświetlacza. Parametry uint16_t Xpos, uint16_t Ypos określają gdzie zostanie wyświetlony obraz. Aby obraz został wyświetlony poprawnie wartość parametru Ypos musi być podzielna przez 4. Parametry uint16_t Xsize, uint16_t Ysize określają rozmiar wyświetlanego obrazu, muszą być zgodne z rozmiarami naszego obrazu (maksymalnie uint16_t Xsize = 72 i uint16_t Ysize = 172). Parametr uint8_t *pdata wskazuje na dane o naszym obrazie, więc należy to wpisać nazwę funkcji pod jaką znajdują się dane skopiowane z pliku .xbm. Przykładowe wywołanie funkcji ma postać: BSP_EPD_DrawImage(0, 3, 48, 172, Logo);.

Funkcja BSP_EPD_RefreshDisplay(); odświeża wyświetlacz i wyświetla nasz obraz po załadowaniu jego danych do pamięci RAM mikrokontrolera.

Do pobrania

Autor: