Pierwsze kroki z zestawem STM32L0538-DISCO (2): sterowanie pojedynczym pikselem wyświetlacza e-paper GDE021A1

Pierwsze kroki z zestawem STM32L0538-DISCO (2): sterowanie pojedynczym pikselem wyświetlacza e-paper GDE021A1

Zastosowany w zestawie STM32L0538-DISCO wyświetlacz GDE021A1 wyświetla obrazy o rozdzielczości 172×72 pikseli w monochromatycznej skali barw. Aby wyświetlić dowolny piksel na wyświetlaczu, możemy stworzyć następującą funkcję w bibliotece stm32l0538_discovery_epd.c:

void BSP_EPD_Pixel(uint16_t Xpos, uint16_t Ypos, uint8_t HEX)
{
  epd_drv->SetDisplayWindow(Xpos, Ypos, Xpos, Ypos);
  epd_drv->WritePixel(HEX);
}

Parametr Xpos odpowiada za rząd w którym zostanie wyświetlony piksel na dłuższym boku wyświetlacza. Może przybierać wartości od 0 do 171 (zgodnie z długością wyświetlacza, czyli 172 piksele).

Parametr Ypos odpowiada za rząd w którym zostanie wyświetlony piksel na krótszym boku wyświetlacza. Wartości wysyłane wyświetlacza są ośmiobitowe: cztery bity dla rejestru odpowiadającego za rząd X i 4 bity dla rzędu Y. Parametr Ypos może przybierać wartości od 0 do 17. Każda wartość odpowiada 4 pikselom, więc Ypos = 0 odpowiada za piksele 0…3, Ypos = 1 odpowiada za piksele 4…7 itd. Całkowita szerokość  wyświetlacza to 18 pomnożone przez 4, czyli 72 piksele.

Parametr HEX pozwala na włączenie dowolnej kombinacji 4 pikseli, których dane są przesyłane w zapisie ośmiobitowym. Parametr HEX przybiera wartości w zapisie heksadecymalnym, od 0x00 do 0xFF. Pierwsza liczba (po lewej) wskazuje na dwa pierwsze piksele z czterech, po dwa bity na każdy piksel. Jeżeli chociaż jeden z dwóch bitów będzie miał wartość 0, piksel zostanie włączony, jeżeli oba będą mieć wartość 1, piksel będzie wyłączony. Liczba 0xFF oznacza wszystkie 4 piksele wyłączone, liczba 0x00 wszystkie włączone.


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:

BSP_EPD_Clear(EPD_COLOR_WHITE);
BSP_EPD_Pixel(uint16_t Xpos, uint16_t Ypos, uint8_t HEX);
BSP_EPD_RefreshDisplay(); 

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_RefreshDisplay(); odświeża wyświetlacz i wyświetla piksele po załadowaniu ich danych do pamięci RAM mikrokontrolera.

Przykłady:

BSP_EPD_Pixel(0, 0, 0xFE); – włączenie piksela w punkcie 1×1

BSP_EPD_Pixel(0, 0, 0xFD); – włączenie piksela w punkcie 1×1, inny sposób

BSP_EPD_Pixel(99, 5, 0xFE); – włączenie piksela w punkcie 100×20

BSP_EPD_Pixel(99, 5, 0x80); – włączenie piksela w punkcie 100×23

BSP_EPD_Pixel(99, 5, 0x88); – włączenie pikseli w punktach 100×21 i 100×23

BSP_EPD_Pixel(99, 10, 0xFF); – włączenie pikseli w punktach 100×41, 100×42, 100×43 i 100×44

Jakub Górnicki

div#stuning-header .dfd-stuning-header-bg-container {background-size: initial;background-position: top center;background-attachment: initial;background-repeat: initial;}#stuning-header div.page-title-inner {min-height: 650px;}