Elektronika cyfrowa – mikrokontrolery dla początkujących.
Transkrypt
Elektronika cyfrowa – mikrokontrolery dla początkujących.
Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Elektronika cyfrowa – mikrokontrolery dla początkujących. Część 12 – Kolorowy wyświetlacz LCD Kurs przygotowany wraz z firmą producentem zestawów do nauki programowania procesorów AVR 1 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Wstęp Dotychczas korzystaliśmy jedynie z wyświetlacza alfanumerycznego do prezentowania danych. Teraz przyszła pora na nieco ambitniejsze zagadnienie – obsługę kolorowego, graficznego wyświetlacza LCD. Obecnie BASCOM oferuje wsparcie dla dwóch modeli kolorowych wyświetlaczy. Jednym z nich jest wyświetlacz oparty o sterownik PCF8833. Wyświetlacze takie swego czasu były popularnie stosowane w telefonach marki Nokia (np. model N6100). Wyświetlacze te jednak posiadają bardzo niewygodne złącza i tylko na niektórych starszych modelach znajdziemy specjalne pady, pod które łatwiej przylutować kabelki. Dodatkowo konieczna jest konwersja stanów logicznych z 5V na 3,3V oraz zapewnienie napięcia rzędu 6,5-7V dla podświetlania. Firma And-Tech ma w swojej ofercie gotowy moduł wyświetlacza (And-Graph132), który rozwiązuje wszystkie te problemy i na swoim „pokładzie” posiada dodatkowo joystick. Przygotowania Przygotowania do korzystania z modułu rozpoczniemy od połączenia całości z procesorem. Na początku podłączmy zasilanie do płytki naszego wyświetlacza (GND i VCC). Dodatkowo podłączmy pin BL do +5V. teraz obserwujemy wyświetlacz. Jeśli jego podświetlanie miga przy delikatnym przechylaniu samego wyświetlacza w prawo lub lewo, to oznacza iż mamy niewielki problem ze złączami1. W takiej sytuacji odpinamy wyświetlacz od płytki i w złączu od strony wyświetlacza delikatnie doginamy w stronę środka złącza wszystkie styki za pomocom cienkiej igły. UWAGA! Operację tę należy wykonać bardzo ostrożnie, gdyż zbytnie wygięcie styków może doprowadzić do ich uszkodzenia. Autor kursu nie ponosi żądnej odpowiedzialności za uszkodzenia spowodowane podczas tej czynności. Jeśli teraz wyświetlacz jest ciągle podświetlany, oznacza to, że złącze działa poprawnie. Kolejne połączenia z procesorem wykonujemy według opisów w kodach programów. 1 Pomimo tego, iż złącza są dokładnie opisane standardami, występują między nimi różnice rzędu dziesiątych i setnych części milimetra, co staje się przyczyną problemów. 2 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Pierwsze uruchomienie Teraz nadszedł czas aby zainicjalizować nasz wyświetlacz i wyświetlić na nim jakiś tekst. I tu zauważymy pierwszą różnicę między wyświetlaczami tekstowymi a graficznymi. Otóż konieczne jest dołączenie pliku zawierającego definicję czcionki, w której opisany jest układ pikseli tworzących każdą literę. Dodatkowo w przypadku naszego wyświetlacza mamy do wyboru różne ustawienia jego pracy, takie jak kontrast, czy obrót2. Inicjalizacji wyświetlacza oraz wyświetlenia prostych rysunków dokonuje poniższy prosty program. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" 'dołą czamy bibliotekę do obsługi wyświetlacza na sterowniku pcf8833 (zwykle cze rwone PCB) Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte 'stałe pomagają nam czytelnie zapisać konfigurację Cfg.color_mode = 1 'tryb kolorów 1 - kolory w formacie RRRGGGBB, 0 - kolory w formacie BBBGGGRR Cfg.line_order = 0 Cfg.ram_direction = 0 'parametry dotyczące kolejnosci przesyłania danych o pikselach pozostawiamy bez zmian Cfg.mirror_y = 0 'włą czanie/wy łą czanie odbicia lustrzanego względem osi Y Cfg.mirror_x = 1 'włą czanie/wy łą czanie odbicia lustrzanego względem osi X 'powyższe parametry powodują poprawną interpretację kolorów i ustawienie dołu wyświetlacza do joysticka Config Graphlcd = Color , Controlport = Portc , Cs = 7 , Rs = 4 , Scl = 6 , Sda = 5 'konfigurujemy wyświetlacz '( Powinniśmy Wykonać Następuj ące Połą czenia Pomiędzy Wyświetlaczem A Płytk ą: Wyświetlacz - Płytka Vcc - Vcc Gnd - Gnd 2 w rzeczywistości ustawiamy jedynie odwrócenie względem osi X (u nas równoległa do złącz) oraz Y (prostopadła do X) 3 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Bl - Vcc Cs - Pc7 Clk - Pc6 Dat - Pc5 Res - Pc4 ') Glcdcmd &H25 'wysyłamy polecenie ustawienia kontrastu Glcddata 50 'podajemy wartość kontrastu (z zakresu 0-127) Glcdcmd &H36 'wysyłamy polecenie zapisu konfiguracji Glcddata Cfg 'wysyłamy konfigurację Glcdcmd &H21 'włą czamy inwersję kolorów (aby kolory wyświetlały się poprawnie 'jeśli kolory są odwrócone zamiast powyższej komendy wysyłamy następuj ąc ą 'Glcdcmd &H20 'wyłą czamy inwersję kolorów Glcdcmd &H29 'wysyłamy komendę włą czaj ą c ą wyświetlacz Cls 'teraz możemy normalnie wyczyści ć wyświetlacz Pset 10 , 10 , &B111000000 Pset 20 , 0 , &B000111000 Pset 0 , 20 , &B000000011 'ustawiamy na ekranie 3 punkty 'składnia Pset X, Y, Kolor 'Uwaga! U nas X oznacza oś poziomą, a Y pionową. kolory zapisane w formacie &Brrrgggbb (taki wybraliśmy w ustawieniach) Line(50 , 50) -(131 , 50) , &B11111000 'Wyświetlamy pomarańczow ą linię podając współrz ę dne punktów początkowych i końc owych, oraz kolor 'składnia Line(Xp , Yp) -(Xk , Yk) , Kolor Box(55 , 55) -(131 , 131) , &B00011100 'Wyświetlamy zielony prostokąt 'składnia Box(Xp , Yp) -(Xk , Yk) , Kolor Circle(25 , 75) , 20 , &B11100011 'wyświetlamy fioletowy okrąg 'składnia Circle(X , Y) , Promień , Kolor End 4 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Tekst na wyświetlaczu graficznym Na wyświetlaczu graficznym, oprócz obrazków, na pewno zechcemy wyświetlić także tekst. Należy zwrócić tu uwagę na to, iż obsługa tego wyświetlacza wymaga dołączenia opisu każdego znaku piksel po pikselu. Stwarza to konieczność dołączenia takich plików do pamięci naszego programu, ale z drugiej strony daje nam możliwość stworzenia własnych czcionek o różnych rozmiarach. Podstawowa obsługa czcionek Na początku wykorzystamy dołączone do pakietu BASCOM przykładowe zestawy czcionek graficznych. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim A As Byte Dim S As String * 15 Const Blue = &B00000011 Const Yellow = &B11111100 Const Red = &B11100000 Const Green = &B00011100 Const Black = &B00000000 Const White = &B11111111 Const Brightgreen = &B00111110 Const Lightgreen = &B01111100 Const Darkgreen = &B00010100 Const Darkred = &B10100000 Const Darkblue = &B00000010 Const Brightblue = &B00011111 Const Orange = &B11111000 'definiujemy kilka stałych z kodami kolorów Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color , Controlport = Portc , Cs = 7 , Rs = 4 , Scl = 6 , Sda = 5 Glcdcmd &H25 5 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Setfont Color16x16 'wybieramy dużą czcionkę 'UWAGA! podana nazwa to nie nazwa pliku z czcionką, ale nazwa czcionki zapisana w tym pliku Lcdat 1 , 1 , "Test 16" , Black , White 'podajemy współrz ę dne początku tekstu (lewy górny róg) 'następnie tekst do wyświetlenia, a potem kolor tekstu i kolor tła Lcdat 18 , 1 , "Test 16" , Yellow , Red 'ten tekst będzie koloru żó ł tego na czerwonym tle Setfont Color8x8 'zmieniamy czcionkę na mniejszą Lcdat 36 , 1 , "Czcionka 8x8" , Black , Lightgreen A = 123 S = "Liczba:" S = S + Str(a) Lcdat 45 , 1 , S , Black , White 'aby wyświetlić liczby musimy ręcznie przekonwertować je na tekst End $include "color16x16.font" $include "color8x8.font" 'na samym końcu programu dołą czamy pliki czcionek 6 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Edycja własnych czcionek Do pakietu BASCOM dołączono program pozwalający na edycję czcionek dla wyświetlaczy graficznych, podobnie jak to robiliśmy w przypadku definiowania własnych znaków dla wyświetlaczy tekstowych. Najpierw musimy aktywować edytor. Aby to zrobić klikamy kolejno Tools > Plugin Manager. W oknie, które się pokaże, zaznaczamy pole przy napisie fonteditor.bpl. Następnie klikamy OK, potem kolejno na Tools > Plugins > Font Editor. Pokazuje się nam okno edytora czcionki. 7 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Do wyboru w menu File mamy następujące opcje: a) New – tworzymy nową czcionkę, w wyświetlonym oknie podajemy kolejno nazwę czcionki (bez spacji i znaków specjalnych), wysokość i szerokość jednego znaku w pikselach, ilość znaków (maksymalny kod ASCII, na końcu kursu została załączona tablica kodów ASCII, która może okazać się pomocna podczas tworzenia własnych czcionek). Dla naszego wyświetlacza koniecznie zaznaczamy opcję Color. b) Open – otwieramy istniejącą czcionkę do edycji, w tym trybie możemy edytować znaki istniejącej czcionki. Niestety nie możemy dodawać kolejnych znaków, ale za to możemy zastąpić istniejące, a nieużywane symbole np. polskimi znakami diakrytycznymi. c) Save – zapisujemy wyedytowaną czcionkę d) Exit – wyjście z programu Poza tym mamy do wyboru następujące opcje: a) Clear all – wyczyść wszystkie piksele b) Set all – zaznacz wszystkie piksele c) Clipboard – kopiowanie do schowka (nie funkcjonuje poprawnie) d) Suggest – zasugeruj wygląd znaku (nie zawsze działa poprawnie) 8 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Dodatkowo za pomocą strzałek możemy przesuwać cały znak w polu czcionki. Aby wybrać dany znak do edycji należy kliknąć na niego w kolumnie po lewej stronie. Dodatkowo obok widzimy numer kodu ASCII. Poniżej zamieszczam przykładowy zrzut z edycji znaku „ś”, a później program wykorzystujący tak przygotowaną czcionkę. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim A As Byte Dim S As String * 15 Const Const Const Const Const Blue = &B00000011 Yellow = &B11111100 Red = &B11100000 Green = &B00011100 Black = &B00000000 9 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Const White = &B11111111 Const Brightgreen = &B00111110 Const Lightgreen = &B01111100 Const Darkgreen = &B00010100 Const Darkred = &B10100000 Const Darkblue = &B00000010 Const Brightblue = &B00011111 Const Orange = &B11111000 'definiujemy kilka stałych z kodami kolorów Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color , Controlport = Portc , Cs = 7 , Rs = 4 , Scl = 6 , Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Setfont Color8x8 S = "Cze" + Chr(125) S = S + Chr(126) 'dodajemy wcześnie zastąpione znaki, tak aby uzyskać tekst Cześć Lcdat 2 , 2 , S , Black , White End $include "color8x8v2.font" 'dołą czamy zmienioną czcionkę ze znakimi: ś - pozycja 125 i ć – 126 10 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Obrazki na wyświetlaczu graficznym Umiemy już rysować na naszym wyświetlaczu proste rysunki i wyświetlać na nim tekst. Jednak rysowanie bardziej skomplikowanego obrazu, czy wyświetlenie zdjęcia wymagałoby nie lada wysiłku i rysowania wszystkiego za pomocą pojedynczych punktów. Na szczęście do pakietu BASCOM dołączony jest program LCDConvert3, który pozwala na rysowanie rysunków na komputerze (bardzo podobnie do programu PAINT) i konwersję plików *.bmp 4, *.ico lub *.gif do formatu obsługiwanego przez BASCOM. Aby narysować obrazek w menu Edit wpisujemy jego rozmiary i następnie rysujemy rysunek. Aby skonwertować obraz musimy wcześniej zmienić jego rozmiar na maksymalnie 132x132, a następnie otworzyć go klikając File > Open. Aby zapisać obrazek w obu przypadkach wybieramy File > Convert, potem File > Save -> Save Binary i wskazujemy miejsce do zapisania danych. Sposób wyświetlania zdjęć w programie przedstawia następujący program. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim A As Byte Dim S As String * 15 Const Blue = &B00000011 Const Yellow = &B11111100 Const Red = &B11100000 Const Green = &B00011100 Const Black = &B00000000 Const White = &B11111111 Const Brightgreen = &B00111110 Const Lightgreen = &B01111100 Const Darkgreen = &B00010100 Const Darkred = &B10100000 Const Darkblue = &B00000010 Const Brightblue = &B00011111 Const Orange = &B11111000 'definiujemy kilka stałych z kodami kolorów Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte 3 program znajdziemy w katalogu głównym programu BASCOM, możemy pobrać go także ze strony firmy MCS Electronics 4 pliki *.bmp importują się najlepiej. Podczas zapisywania pliku *.bmp (np. w programie Photoshop) koniecznie zaznaczmy opcje: tryb 8 bitów, kompresja RLE. Inaczej plik nie będzie mógł być konwertowany. 11 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color , Controlport = Portc , Cs = 7 , Rs = 4 , Scl = 6 , Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Do Showpic 0 , 0 , Obr2 'Wyświetlamy obrazek 'Podajemy współrz ę dne w których ma znaleźć się lewy górny róg obrazka, a następnie etykietę wskazując ą na plik ze zdjęciem Wait 2 Showpic 30 , 30 , Obr1 Wait 2 Showpic 0 , 0 , Obr3 Wait 2 Loop End Obr1: $bgf "test.bgc" 'po etykiecie dołą czamy plik ze zdjęciem Obr2: $bgf "foto.bgc" Obr3: $bgf "napis.bgc" 12 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Obsługa joysticka Teraz przyszła pora na obsługę joysticka znajdującego się na płytce naszego wyświetlacza. Joystick ten jest połączony za pomocom „drabinki rezystancyjnej”. Dzięki temu mierząc napięcie na końcowym pinie możemy zidentyfikować w jaki sposób został on wciśnięty. Do odpowiednich pomiarów wykorzystamy oczywiście przetwornik analogowo-cyfrowy. A więc do dzieła. Na początek po prostu wyświetlimy wartość jaką przyjmuje przetwornik przy poszczególnych funkcjach. Podłączamy pin UP z wyświetlacza do ADC0 (PA0) naszego procesora. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim W As Word Dim S As String * 15 Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color , Controlport = Portc , Cs = 7 , Rs = 4 , Scl = 6 , Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Config Adc = Single , Prescaler = Auto , Reference = Avcc 13 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Start Adc 'konfigurujemy przetwornik Setfont Color8x8 Do W = Getadc(0) S = "ADC = " + Str(w) S = S + " " Lcdat 2 , 2 , S , Black , White Loop End $include "color8x8.font" W moim przypadku wartości wynoszą odpowiednio: • 1023 – Nic nie wciśnięte • 0730 – Przyciśnięcie joysticka • 0501 – W prawo • 0325 – W dół • 0142 – W lewo • 0000 – W górę Teraz możemy odpowiednio dobrać zakresy, dla których będziemy pewni, że dany klawisz został wciśnięty. Nie możemy polegać na konkretnych wartościach, gdyż (jak zapewne sami zauważycie) nieco wahają się one. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" Dim W As Word Dim S As String * 15 Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 14 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Config Graphlcd = Color , Controlport = Portc , Cs = 7 , Rs = 4 , Scl = 6 , Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc 'konfigurujemy przetwornik Setfont Color8x8 Do W = Getadc(0) Select Case W Case 900 To 1023 : Lcdat 2 , 2 , "None " , 0 , 255 Case 600 To 899 : Lcdat 2 , 2 , "Press" , 0 , 255 Case 400 To 599 : Lcdat 2 , 2 , "Right" , 0 , 255 Case 200 To 399 : Lcdat 2 , 2 , "Down " , 0 , 255 Case 100 To 199 : Lcdat 2 , 2 , "Left " , 0 , 255 Case 0 To 99 : Lcdat 2 , 2 , "Up " , 0 , 255 End Select Loop End $include "color8x8.font" Całość oczywiście możemy ująć w odpowiednią funkcję, a dodatkowo dodając kilka stałych możemy sami określać jakie wartości mają być zwracane przy poszczególnych funkcjach. $regfile = "m644pdef.dat" '$regfile = "m32def.dat" '$regfile = "m16def.dat" $baud = 9600 $crystal = 16000000 $lib "lcd-pcf8833.lbx" 15 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Dim A As Byte Dim S As String * 15 Const Mirror_x = 7 Const Mirror_y = 6 Const Ram_direction = 5 Const Line_order = 4 Const Color_mode = 3 Dim Cfg As Byte Cfg.color_mode = 1 Cfg.line_order = 0 Cfg.ram_direction = 0 Cfg.mirror_y = 0 Cfg.mirror_x = 1 Const J_channel = 0 'kanał ADC, do którego podpięto Joystick Const J_none = 1 Const J_up = 2 Const J_down = 3 Const J_right = 4 Const J_left = 5 Const J_press = 6 'wartości zwracane przy poszczególnych funkcjach Declare Function Joystick()as Byte Dim Names(6) As String * 5 Names(1) = "None " Names(2) = "Up " Names(3) = "Down " Names(4) = "Right" Names(5) = "Left " Names(6) = "Press" 'zapisujemy teksty w tablicach Config Graphlcd = Color , Controlport = Portc , Cs = 7 , Rs = 4 , Scl = 6 , Sda = 5 Glcdcmd &H25 Glcddata 50 Glcdcmd &H36 Glcddata Cfg Glcdcmd &H21 'Glcdcmd &H20 Glcdcmd &H29 'dispaly on Cls Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc 'konfigurujemy przetwornik 16 Elektronika cyfrowa – mikrokontrolery dla początkujących BASCOM. Piotr Rzeszut Setfont Color8x8 Do A = Joystick() Lcdat 2 , 2 , Names(a) , 0 , 255 Loop End Function Joystick() As Byte Local Ad As Word Ad = Getadc(j_channel) Select Case Ad Case 900 To 1023 : Joystick = J_none Case 600 To 899 : Joystick = J_press Case 400 To 599 : Joystick = J_right Case 200 To 399 : Joystick = J_down Case 100 To 199 : Joystick = J_left Case 0 To 99 : Joystick = J_up End Select End Function $include "color8x8.font" Podsumowanie Teraz wykorzystaną wiedzę możemy wykorzystać w dowolny sposób. Załączam przykładowy kod zegarka „analogowego” wykorzystującego naszą płytkę i wyświetlacz. 17