Teraz chciałbym zaprezentować moje eksperymenty z grafiką na wyświetlaczu ST7735 oraz pod kontrolą python-a.
I choć robiłem wcześniej amatorsko jakieś ekrany na kolorowych wyświetlaczach to ich grafika sprowadzała się do wykorzystania prymitywnych operacji: piksel, linia, kwadrat, czasem okrąg koło oraz tekst w różnych rozmiarach i zazdrościłem profesjonalnym wyświetlaczom gdzie były dowolne kształty oraz płynnie zmieniające się kolory.
Rozwiązaniem jest ładowanie grafiki wprost do pamięci wyświetlacza a python dostarcza dość prostego ale skutecznego narzędzia do tego celu.
Użyłem 12 klatek (z domeny publicznej) ładowanych w pętli przez procesor wprost do pamięci a efektem tego jest
test działania wyświetlacza z ładowaniem grafiki na cały i na 1/4 ekranu
Czasy podane przy pomiarach działania pętli (liczba z lewej) i pojedynczej klatki (liczba z prawej) są podane w [ms].

A to jedna z klatek użytych w tym celu.
l.j.
Bazując na pokazanych wcześniej doświadczeniach z animacji rysunków mogłem przystąpić do wykonania ekranu/skali trx-a.
Proszę traktować to co zrobiłem nie jako szczytowe osiągnięcie w tej dziedzinie ale raczej jako wprawkę nadającą się do pokazania. Dojście do tego wyniku oznaczało kilkanaście, o ile nie więcej, godzin związanych z doborem odpowiednich narzędzi oraz z samym procesem utworzenia właściwej grafiki i zaprogramowania całości.
Jako, że pracuje głównie z linux-em to większość narzędzi jakich użyłem pochodzi właśnie z "tego swiata" i są to głównie narzędzie "open source", poza tym mam pewną biegłość w posługiwaniu się bash-em co dodatkowo ułatwia mi manipulacje dotyczące przygotowania odpowiedniej treści tworzącej ekra.
Zasadniczo ekran podzielony jest na trzy części, pierwsza z nich, górna jest animowana i zajmuje obszar 128x71 pixel-i. Dotyczy ona skali s-metra oraz skali swr-metra podczas nadawania. Skalę tworzy 13 rysunków odpowiadających położeniom wskazówki skali od wartości minimalnej (lewe skrajne położenie) do maksymalnej (prawe skrajne położenie).

To przykład źródła wykonanego za pomocą programu Inkscape (grafika wektorowa) - z lewej i pomniejszonego do rozmiaru 128x71 pixel-i wersji prawie "produkcyjnej". Piszę prawie, bo ostateczny plik jaki jest ładowany przez program na wyświetlacz poddawany jest jeszcze pewnej kompresji do postaci png565, oczywiście za pomocą open-surce translatora pngto565 a działanie tej translacji polega na zubożeniu ilości bitów reprezentujących każdy kolor co zmniejsza rozmiar grafiki. Właśnie Inkscape pozwala na efektowne, tęczowe połączenie kolorów na łuku, Gimp służył mi do zmiany zmniejszania rozmiaru. Oczywiście musiałem wykonać 13 takich par ale zmiany położenia wskazówki w Inkscape to w zasadzie żaden problem bo jak wspomniałem to program do obróbki wektorowej.

Podobny zestaw 13 par rysunków zrobiłem dla skali podczas nadawania gdzie znajduje się wskaźnik swr oraz pomiar mocy. Wszystkie rysunki zawierają niebieskie tło co pozwala połączyć poszczególne składniki ekranu.
Część środkowa o rozmiarze 128x58 pixel-i to owalne pola na wskaźniki typu RIT, tryb pracy, nr pamięci itp. Ta część nie wymaga animacji a jedynie owalne pola sa modyfikowane przez aktualne dane.
Główna częstotliwość pracy urządzenia montowana jest z pojedynczych elementów (cyfr) w odpowiednim kolorze a nizej znajdujący się napis częstotliwości zapasowej tworzony jest klasycznie za pomocą funkcji text-u natywnego sterownika ST7735.

Część dolna to kolejna animacja przypominająca skalę analogową. Dla tych celów wykonałem 10 grafik zeskalowanych do rozmiaru 128x31 pixel-i dla każdej z pozycji od 0 do 9. Oczywiście i te rysunki przed przesłaniem do procesora zmodyfikowałem za pomocą skryptu pngto565.
Nazwy poszczególnych grafik nawiązują bezpośrednio do cyfry lub pozycji jaką mają wskazywać co istotnie ułatwia później programowanie działania skali.
Jak wspomniałem, wszystkie grafiki mają niebieskie tło co ukrywa miejsca połączenia poszczególnych elementów.
Efekt jaki uzyskałem dzięki opisanym czynnościom można obejrzeć na filmie.
Mówiłem już, że to w zasadzie moje pierwsze podejście do takiej grafiki. Po podstawowym opanowaniu narzędzi zrobiłbym na pewno całość kilkukrotnie szybciej a poza tym gdyby pomagał mi grafik to efekt byłby pewnie znacznie bardziej efektowny. Niemniej, jestem zadowolony z uzyskanych efektów co było możliwe z procesorem ESP32, który ma pamięć zarówno na obszerny program jak i na dane graficzne.
l.j.