Spisu treści:

Samouczek wyświetlacza OLED I2C Arduino/NodeMCU: 15 kroków
Samouczek wyświetlacza OLED I2C Arduino/NodeMCU: 15 kroków

Wideo: Samouczek wyświetlacza OLED I2C Arduino/NodeMCU: 15 kroków

Wideo: Samouczek wyświetlacza OLED I2C Arduino/NodeMCU: 15 kroków
Wideo: Polskie czcionki - wyświetlacz OLED 0.96" I2C NODEMCU V3 2024, Lipiec
Anonim
Image
Image

Pierwszy program, który piszesz, gdy zaczynasz naukę

nowym językiem programowania jest: "Hello World!".

Sam program nie robi nic poza drukowaniem tekstu „Hello World” na ekranie.

Jak więc sprawić, by nasze Arduino wyświetlało napis „Hello World!”?

W tym filmie pokażę, jak rozpocząć pracę z małymi wyświetlaczami I2C OLED 0,91 (128x32) i 0,96 (128x64).

W sieci są setki samouczków wyjaśniających to samo na różne sposoby, ale nie mogłem znaleźć takiego, który mówiłby mi wszystko o wyświetlaczu OLED i jak go używać w różnych scenariuszach. Rozpracowanie tego zajęło mi trochę czasu. Pomyślałem więc, że powinienem stworzyć samouczek na temat tego, czego się nauczyłem i połączyć wszystkie funkcje i sposoby wykorzystania wyświetlaczy OLED w naszych projektach.

Krok 1: Rzeczy, których nauczymy się dzisiaj

Wymagania sprzętowe
Wymagania sprzętowe

W tym filmie będziemy rozmawiać o:

- Co to jest wyświetlacz OLED?

- Następnie przyjrzymy się bliżej wyświetlaczom I2C OLED 0,91 (128x32) i 0,96 (128x64)

- Następnie porozmawiamy o instalacji biblioteki Adafruit w twoim Arduino IDE

- Następnie połączymy NodeMCU i Arduino z wyświetlaczem OLED

- Następnie przyjrzymy się kodowi i wyświetlimy na nim grafikę i tekst

- Porozmawiamy również o stosowaniu niestandardowych czcionek i wyświetlaniu obrazów

- Następnie połączymy wiele diod OLED z mikrokontrolerem za pomocą multipleksera I2C

- Na koniec porozmawiamy o kilku typowych błędach popełnianych przez ludzi podczas korzystania z wyświetlaczy OLED

Krok 2: Wymagania sprzętowe

Do tego samouczka potrzebujemy:

- deska do krojenia chleba

- Wyświetlacze OLED I2C 0.91" (128x32) i 0.96" (128x64)

- Arduino UNO/NANO (cokolwiek jest pod ręką)

- WęzełMCU

- Multiplekser TCA9548A I2C

-Kilka kabli łączących

- oraz kabel USB do wgrania kodu

Krok 3: Co to jest wyświetlacz OLED?

Co to jest wyświetlacz OLED?
Co to jest wyświetlacz OLED?
Co to jest wyświetlacz OLED?
Co to jest wyświetlacz OLED?

OLED lub organiczna dioda elektroluminescencyjna to dioda emitująca światło

dioda (LED), w której emisyjna warstwa elektroluminescencyjna jest warstwą związku organicznego (miliony małych diod LED), który emituje światło w odpowiedzi na prąd elektryczny.

Diody OLED służą do tworzenia cyfrowych wyświetlaczy w urządzeniach takich jak ekrany telewizyjne, monitory komputerowe, systemy przenośne, takie jak telefony komórkowe, przenośne konsole do gier i PDA. Wyświetlacz OLED działa bez podświetlenia, ponieważ emituje światło widzialne.

Krok 4:

Obraz
Obraz

Istnieje wiele rodzajów wyświetlaczy OLED dostępnych w

rynek w oparciu o ich

-Rozmiary

- Kolor

- Marki

- Protokół

- SPI (szeregowy interfejs peryferyjny) lub I2C

- Schemat sterowania z pasywną (PMOLED) lub aktywną (AMOLED) matrycą

W tym samouczku omówię połączenie

niebieski kolor 0,91 (128x32 OLED) i 0,96 (128x64 OLED) wyświetlacze I2C OLDE do Arduino NANO i NodeMCU. Technologia magistrali I2C wykorzystuje tylko 2 piny MCU, więc mamy dostępne stosy dla innych czujników.

Krok 5: Bliższe spojrzenie

Bliższe spojrzenie
Bliższe spojrzenie
Bliższe spojrzenie
Bliższe spojrzenie
Bliższe spojrzenie
Bliższe spojrzenie

Przyjrzyjmy się bliżej tym dwóm wyświetlaczom.

Z tyłu tych wyświetlaczy wlutowano na płytce stosy kondensatorów SMD i rezystorów; ale ponieważ jest to urządzenie I2C, zależy nam tylko na tych 2 pinach (SCL i SDA)

Wyświetlacz łączy się z Arduino za pomocą tylko czterech przewodów – dwóch do zasilania (VCC i GND) i dwóch do danych (zegar szeregowy SCL i

dane szeregowe SDA), dzięki czemu okablowanie jest bardzo proste. Połączenie danych to I2C (I²C, IIC lub Inter-Integrated Circuit), a ten interfejs jest również nazywany TWI (interfejs dwuprzewodowy).

- Piny na płycie mogą być w innej kolejności, więc zawsze sprawdź trzykrotnie przed podłączeniem go do swojego projektu.

- Napięcie pracy wynosi od 3 V do 5 V, ale najlepiej jest korzystać ze wskazówek zawartych w arkuszu danych producenta.

- Czasami w naszych projektach potrzebujemy 2 wyświetlaczy. Jak więc możemy to osiągnąć?

Sztuką jest mieć konfigurowalny adres na wyświetlaczu. To urządzenie ma konfigurowalny adres od 0x78 do 0x7A. Wystarczy odlutować rezystor 0Ohm z jednej strony i podpiąć go z drugiej strony lub po prostu wkładając globalny lut, możemy zmienić adres. Porozmawiamy o tym szczegółowo, gdy podłączymy wiele wyświetlaczy do Arduino w dalszej części tego samouczka.

Na zdjęciu wyświetlacze te wyglądają na bardzo duże. Ale praktycznie rzecz biorąc są malutkie. Są one wykonane z pojedynczych pikseli OLED 128 x 32/64 i nie wymagają podświetlenia. Po prostu spójrz na to i zobacz, jaka jest mała. Mimo niewielkich rozmiarów mogą być bardzo przydatne w projektach elektronicznych.

Krok 6: Biblioteka

Biblioteka
Biblioteka
Biblioteka
Biblioteka
Biblioteka
Biblioteka

Dostępnych jest kilka bibliotek do ich kontrolowania

wyświetlacze. W przeszłości korzystałem z "biblioteki u8glib", ale uważam, że biblioteka AdaFruit jest bardzo łatwa do zrozumienia i wykorzystania w naszych projektach. Tak więc zamierzam użyć biblioteki AdaFruit w tym samouczku.

Aby sterować wyświetlaczem OLED, potrzebujesz biblioteki „adafruit_GFX.h” i biblioteki „adafruit_SSD1306.h”.

Istnieją dwa sposoby na pobranie i zainstalowanie biblioteki na Arduino IDE.

Metoda 1

Przejdź do "Menedżera biblioteki" i wyszukaj "adafruit_SSD1306" i "adafruit_gfx"

Wybierz najnowszą wersję i naciśnij przycisk Instaluj.

Po zainstalowaniu możesz używać tych bibliotek w swoim programie.

Metoda 2

Te dwie biblioteki można również pobrać z github (potrzebujesz obu):

Linki podam w poniższym opisie.

Biblioteka wyświetlania:

Biblioteka GFX:

Po pobraniu skopiuj folder Adafruit_SSD1306-master z pobranego pliku spakowanego do folderu bibliotek Arduino. Ten folder zwykle znajduje się w Dokumenty> Arduino> biblioteki w systemach Windows. W systemie Linux zwykle znajduje się w folderze domowym > Arduino > biblioteki. Na koniec w folderze biblioteki Arduino zmień nazwę folderu Adafruit_SSD1306-master na Adafruit_SSD1306. Nawet jeśli nie zmienisz nazwy, to w porządku.

Krok 7:

Obraz
Obraz

Teraz spójrzmy na "Adafruit_SSD1306.h"

plik

Dwie rzeczy, które musimy wiedzieć w tej bibliotece:

1. Jeśli chcesz użyć mniejszego wyświetlacza, użyj domyślnego 128_32, w przeciwnym razie dla większego wyświetlacza skomentuj 128_32 i odkomentuj 128_64

2. Jeśli przylutowałeś adres 0x7A na płycie (o czym porozmawiamy później), użyj 7-bitowego adresu 0x3D dla większych wyświetlaczy, w przeciwnym razie użyj domyślnego adresu 0x3C. Dla mniejszych wyświetlaczy adres to 0x3C.

Krok 8: Okablowanie 128 X 64/32 OLED

Okablowanie 128 X 64/32 OLED
Okablowanie 128 X 64/32 OLED

Zacznijmy od podłączenia NodeMCU do wyświetlacza.

Pierwszą i najważniejszą rzeczą, na którą należy zwrócić uwagę, jest to, że niektóre wyświetlacze mogą mieć zamienione piny zasilania GND i VCC. Sprawdź wyświetlacz, aby upewnić się, że jest taki sam jak obraz. Jeśli szpilki są zamienione, pamiętaj o zmianie połączeń z Arduino lub NodeMCU.

- Okablowanie NodeMCU OLED

OLED VCC – NodeMCU 3,3 V

OLED GND – NodeMCU GND

OLED SCL – NodeMCU D1

OLED SDA – NodeMCU D2

- Okablowanie Arduino Uno OLED

OLED VCC – Arduino 5V

OLED GND – Arduino GND

OLED SCL – Arduino Uno A5

OLED SDA – Arduino Uno A4

- Okablowanie Arduino MEGA 2560 OLED

OLED VCC – Arduino 5V

OLED GND – Arduino GND

OLED SCL – Arduino MEGA 2560 pin 21

OLED SDA – Arduino MEGA 2560 pin 20

Krok 9: Kod

Kod
Kod
Kod
Kod
Kod
Kod
Kod
Kod

Biblioteka Adafruit zawiera naprawdę dobre przykłady dla obu

Wyświetlacze 128x32 i 128x64.

Biblioteka znajduje się pod Plik > Przykłady > Adafruit SSD1306 > a następnie typ wyświetlacza w Arduino IDE.

Zamierzamy użyć przykładu 128x32 I2C i zmodyfikujemy go tak, aby działał zarówno z wyświetlaczami 128x64, jak i 128x32, podłączając go do Arduino, a następnie do płyty NodeMCU.

Kod zaczyna się od włączenia obu bibliotek Adafruit. W tym samouczku skupię się tylko na tych częściach kodu, które są nam potrzebne do załadowania zarówno na tablice, jak i wyświetlacze. Jeśli chcesz dowiedzieć się więcej o kodzie, zostaw komentarz na moim blogu lub w sekcji komentarzy poniżej, a ja postaram się do Ciebie oddzwonić.

- Najpierw załadujemy kod do Arduino Nano podłączonego do wyświetlacza 128x32.

Możemy używać kodu bez żadnych modyfikacji.

128x32 używa adresu 0x3C, więc ten bit wygląda tutaj całkiem dobrze, sprawdźmy dokładnie bibliotekę nagłówków, tak, używa również adresu 0x3C, a typ wyświetlacza to 128x32.

- Teraz podłączmy wyświetlacz 128x64. Jak wiemy, domyślnie używa adresu 0x3C, więc nie musimy aktualizować adresu ani w kodzie, ani w bibliotece.

Musimy tylko skomentować 128_32 i odkomentować 128_64 w bibliotece nagłówka i zmienić LCDHEIGHT na 64 w naszym kodzie.

- Teraz, aby uruchomić ten sam kod na NodeMCU, musimy zmienić jeszcze jedną linię w naszym kodzie.

Reszta kodu „#define OLED_RESET 4” > „#define OLED_RESET LED_BUILTIN” jest taka sama jak w przypadku Arduino

Prawie, aby wyświetlić wszystko, czego najpierw potrzebujemy, aby wyczyścić poprzedni ekran za pomocą

display.clearDisplay(); // Wyczyść bufor

Następnie narysuj obiekt

testdrawline(); // Narysuj linię

Pokaż to na sprzęcie

display.display(); // Spraw, aby były widoczne na sprzęcie wyświetlającym!

Odczekaj chwilę przed wyświetleniem następnego elementu.

opóźnienie (2000); // Poczekaj 2 sekundy

W tym przykładzie wyświetlamy kilka elementów, takich jak tekst, linie, koła, przewijany tekst, trójkąty i inne. Śmiało i użyj swojej wyobraźni i wyświetlaj, co chcesz na tych małych wyświetlaczach.

Krok 10: Dostosowywanie tekstu i dodawanie obrazów

Dostosowywanie tekstu i dodawanie obrazów
Dostosowywanie tekstu i dodawanie obrazów
Dostosowywanie tekstu i dodawanie obrazów
Dostosowywanie tekstu i dodawanie obrazów
Dostosowywanie tekstu i dodawanie obrazów
Dostosowywanie tekstu i dodawanie obrazów

Czasami Twój kod musi wyświetlać niestandardowe czcionki i

obrazy. Jeśli jesteś bardzo dobry w mapowaniu bitów, wystarczy utworzyć tablice bajtów, włączając lub wyłączając maleńkie diody LED wyświetlacza, aby tworzyć niestandardowe czcionki i obrazy.

Jednak nie jestem zbyt dobry w robieniu tych mapowań i nie chcę spędzać godzin na tworzeniu tabel map bitowych.

Więc jakie mam opcje? Zwykle używam dwóch stron internetowych do generowania niestandardowych czcionek i obrazów. Linki znajdują się w poniższym opisie.

Niestandardowe czcionki

Przejdź do strony konwertera czcionek, wybierz rodzinę czcionek, styl, rozmiar, wersję biblioteki jako „Czcionka Adafruit GFX”, a następnie naciśnij przycisk „Utwórz”. Po prawej stronie tej strony możesz zobaczyć, jak Twoja czcionka będzie wyglądać na rzeczywistym wyświetlaczu.

Na podstawie Twojego wyboru strona internetowa generuje plik nagłówkowy czcionek. Utwórz plik o nazwie „modified_font.h” w tym samym folderze, w którym znajduje się Twój kod, a następnie skopiuj i zapisz w nim wygenerowany kod. Następnie wystarczy dołączyć plik nagłówka do kodu, aby użyć niestandardowej czcionki.

#include "modified_font.h"

Następnie wystarczy ustawić czcionkę przed wyświetleniem tekstu, aby zastosować do niego niestandardową czcionkę.

display.setFont(&Twoja_nazwa_czcionki);

Możesz uzyskać nazwę czcionki z pliku nagłówkowego dodanego do projektu. To wszystko, proste.

Pamięć jest zawsze problemem podczas korzystania z czcionek niestandardowych, więc zawsze bierz pod uwagę bajty, które zostaną zużyte przez pamięć. Pamiętaj tylko, że Arduino UNO ma tylko 32K pamięci.

Obrazy niestandardowe

Aby wyświetlić obraz bitmapowy na ekranie, musisz najpierw utworzyć obraz o rozmiarze 128 x 64/32.

Używam starego dobrego "MS Paint" do stworzenia obrazu bitmapowego 128 x 64, który następnie prześlę na tę stronę konwertera obrazów. Strona konwertuje obrazy na ciągi bajtów, które mogą być używane z wyświetlaczami Arduino i OLED.

Zacznij od wgrania obrazu na stronę. Następnie zaznacz pole wyboru „Odwróć kolory obrazu” i zmień „Format kodu wyjściowego” na „Kod Arduino”, a następnie wybierz orientację i naciśnij przycisk „Generuj kod”, aby wygenerować tablicę bajtów. Sekcja „Podgląd” pokazuje, jak Twój obraz będzie wyglądał na rzeczywistym ekranie.

Dołączyłem kod wraz z tym samouczkiem, którego możesz użyć do wyświetlania swoich obrazów. Wystarczy zastąpić tablicę w moim kodzie tą, którą właśnie wygenerowałeś, a następnie załadować ją do Arduino.

Krok 11: Podłączanie 2 wyświetlaczy

Podłączanie 2 wyświetlaczy
Podłączanie 2 wyświetlaczy
Podłączanie 2 wyświetlaczy
Podłączanie 2 wyświetlaczy

Podłączenie dwóch wyświetlaczy 128 x 64 do projektu jest łatwe.

Wystarczy odlutować rezystor 0Ohm z adresu 0x78 i umieścić go na 0x7A, a następnie użyć w kodzie adresu 0x3D zamiast domyślnego 0x3C.

Musisz się zastanawiać, dlaczego używamy adresu 0x3C i 0x3D, a nie rzeczywistego 0x78 i 0x7A. Arduino akceptuje adresy 7-bitowe, a nie 8-bitowe adresy sprzętowe. Tak więc najpierw musimy przekonwertować 8-bitowy adres na binarny, a następnie odciąć najmniej znaczący bit, aby uzyskać 7 bitów. Następnie przekonwertuj 7 bitów na HEX, aby uzyskać adresy 0x3C lub 0x3D, które wpisujesz w swoim kodzie.

Najpierw zainicjuj wyświetlacz, nadając mu unikalną nazwę:

Adafruit_SSD1306 display1(OLED_REST);

Adafruit_SSD1306 display2(OLED_REST);

Następnie w swoim kodzie użyj wyświetlacza 1 i wyświetlacza 2, aby wywołać instrukcje begin z zawartymi w nich adresami urządzeń:

display1.begin (SSD1306_SWITCHCAPVCC, 0x3C); // wyświetl 1 adres operacyjny 0x3C

display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // wyświetl 2 adresy operacyjne 0x3D

To wszystko, możesz teraz robić, co chcesz, używając wyświetlacza 1 lub wyświetlacza 2 w pozostałej części kodu. W tym samouczku podałem przykład.

Okablowanie jest dokładnie takie samo, jak to, co zrobiliśmy wcześniej, wystarczy dodać kolejny wyświetlacz do tych samych pinów I2C Arduino lub NodeMCU. Na podstawie adresów MCU wysyła dane do linii danych I2C.

Krok 12: Podłączanie więcej niż 2 wyświetlaczy

Podłączanie więcej niż 2 wyświetlaczy
Podłączanie więcej niż 2 wyświetlaczy
Podłączanie więcej niż 2 wyświetlaczy
Podłączanie więcej niż 2 wyświetlaczy
Podłączanie więcej niż 2 wyświetlaczy
Podłączanie więcej niż 2 wyświetlaczy

A co, jeśli chcesz podłączyć więcej niż 2 wyświetlacze?

Arduino ma ograniczoną liczbę pinów i dlatego nie można mieć do niego więcej niż określoną liczbę osłon. Co więcej, ma tylko jedną parę magistral I2C.

Jak więc podłączyć więcej niż 2 wyświetlacze I2C do Arduino? Sztuczka polega na użyciu multipleksera TCA9548.

TCA9548 pozwala pojedynczemu mikrokontrolerowi komunikować się z maksymalnie „64 czujnikami”, wszystkie o tym samym lub innym adresie I2C, poprzez przypisanie unikalnego kanału do każdej podrzędnej szyny czujnika.

Kiedy mówimy o wysyłaniu danych przez 2 przewody do wielu urządzeń, potrzebujemy sposobu ich adresowania. To tak samo, jak listonosz przyjeżdżający jedną drogą i wysyłający paczki pocztowe do różnych domów, ponieważ mają na nich napisane różne adresy.

Multiplekser łączy się z liniami 3V3, GND, SDA i SCL mikrokontrolera. Czujniki podrzędne są podłączone do jednego z ośmiu portów podrzędnych SCL/SDA na płycie. Kanały są wybierane poprzez wysłanie do TCA9548A jego adresu I2C (0x70 {domyślnie} - 0x77), a następnie numeru kanału (0b000000001 - 0b10000000). Możesz mieć maksymalnie 8 takich multiplekserów połączonych ze sobą na adresach 0x70-0x77, aby kontrolować 64 części o tych samych adresach I2C. Łącząc trzy bity adresu A0, A1 i A2 z VIN można uzyskać inną kombinację adresów. Wyjaśnię to dogłębnie w moim następnym samouczku dotyczącym tabliczki zaciskowej TCA9548A. Na razie podepnijmy 8 diod OLED do tej płyty i rzućmy okiem na kod.

Połączenie:

VIN do 5V (lub 3,3V)

GND do ziemi

Zegar SCL do I2C

Dane SDA do I2C

Następnie podłącz czujniki do VIN, GND i użyj jednej z multipleksowanych magistral SCn / SDn

Teraz kod Int zaczynamy od włączenia biblioteki "Wire" i zdefiniowania adresu multiplekserów.

#include "Drut.h"

#włączać

#define MUX_Address 0x70 // TCA9548A Adres enkoderów

Następnie musimy wybrać port, z którym chcemy się komunikować i przesłać na niego dane za pomocą tej funkcji:

void tcaselect(uint8_t i) {

jeśli (i > 7) powrót;

Wire.beginTransmission(MUX_Address);

Wire.write(1 << i);

Wire.endTransmission();

}

Następnie zainicjujemy ekran w sekcji ustawień, wywołując "u8g.begin();" dla każdego wyświetlacza podłączonego do MUX "tcaselect(i);"

Po zainicjowaniu możemy robić, co chcemy, po prostu wywołując funkcję "tcaselect(i);" gdzie „i” jest wartością zmultipleksowanej magistrali, a następnie odpowiednio wysyła dane i zegar.

Krok 13: Zalety i wady

Zalety i wady
Zalety i wady

Obraz OLED jest piękny. Jednak diody OLED mają również

niedogodności. Ponieważ ekrany OLED zawierają materiał organiczny, ich żywotność jest krótsza niż wyświetlaczy LCD. Ponadto wiele wyświetlaczy OLED wypala się po długim wyświetlaniu tego samego obrazu. Po wypaleniu obraz pozostaje na ekranie nawet po wyświetleniu innego obrazu. Upewnij się więc, że odświeżasz ekran co kilka sekund. Woda może natychmiast uszkodzić materiały organiczne tych wyświetlaczy.

Zalety

Nie ma potrzeby podświetlania

Wyświetlacze są bardzo cienkie i lekkie

Niski pobór mocy

Kąty widzenia są szersze niż w ekranach LCD

Jasność i kontrast są świetne

Wysoka prędkość i krótki czas reakcji

Głęboki czarny kolor

Niedogodności

Kosztowna technologia

Krótki cykl życia

OLED są bardziej podatne na wypalenie

Zalania

Krok 14: Częste błędy

Powszechne błędy
Powszechne błędy

Na zakończenie samouczka porozmawiajmy o kilku typowych błędach

ludzie robią podczas korzystania z tych wyświetlaczy:

-Zawsze trzykrotnie sprawdź szpilki przed użyciem go w swoim projekcie

- Wybierz właściwy adres biblioteki w pliku nagłówkowym i w swoim kodzie

#define SSD1306_I2C_ADDRESS 0x3C // w Adafruit_SSD1306.h

oraz

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // w twoim kodzie

Jeśli adres jest nieprawidłowy, OLED nic nie wyświetli

- Przed użyciem należy zmienić rozmiar wyświetlacza w sterowniku. Jeśli nie zostanie zmieniony, podczas próby weryfikacji kodu pojawi się komunikat o błędzie

#error ("Nieprawidłowa wysokość, proszę naprawić Adafruit_SSD1306.h!");

- Jeśli używasz NodeMCU, upewnij się, że zastąpiłeś OLED_RESET z 4 na LED_BUILTIN

#define OLED_RESET LED_BUILTIN

Mam ludzi ze sceny, którzy robią różne rzeczy za pomocą tego wyświetlacza OLED. Niektórzy stworzyli nawet gry wideo i wszystko inne. Naprawdę nie jestem zainteresowany tworzeniem gier wideo przy użyciu tego malutkiego wyświetlacza. Jednak teraz zostawię cię, abyś zbadał swoją wyobraźnię i wyszedł z niesamowitymi pomysłami.

Krok 15: Linki

- Blog:

- Dodaj obraz:

- Tekst niestandardowy:

- Biblioteka wyświetlania Adafruit:

- Biblioteka Adafruit GFX:

- biblioteka u8glib: https://code.google.com/archive/p/u8glib/ lub

Jeśli chcesz użyć mniejszego wyświetlacza, użyj domyślnego 128_32, w przeciwnym razie dla większego wyświetlacza skomentuj 128_32 i odkomentuj 128X64 NO_ACK w swoim kodzie (po prostu odkomentuj typ ekranu, którego używasz) (czcionki znajdują się w bibliotece czcionek)

Zalecana: