08Jun 2016

Zmiana czcionki w MAX7456

Układ scalony MAX7456, który jest sercem użytego przeze mnie OSD Shield, ma możliwość zmiany wyświetlanych czcionek i znaków graficznych. W bibliotece obsługi tego układu, w podkatalogu examples/UploadFont/, został załączony przykładowy program. Krój czcionek i znaków graficznych domyślnie wgranych do układu, delikatnie mówiąc, nie zachwyca: MAXIM.png
Dlatego zdecydowałem się na wgranie zestawu "CUSTOM", który prezentuje się zdecydowanie lepiej: CUSTOM.png
W tym celu należy otworzyć plik źródłowy UploadFont.ino i w sposób normalny wgrać do VTI. Po restarcie Arduino, na ekranie podłączonego pod złącze TV OUT odbiornika, powinniśmy zobaczyć coś takiego:
vlc1.jpg
Definicja czcionek i znaków znajduje się w plikach: CUSTOM.mcm, ASCII.mcm oraz MAXIM.mcm (domyślny). Ja zdecydowałem się na wgranie pliku CUSTOM.mcm. W tym celu musimy posłużyć się oprogramowaniem umożliwiającym transmisję szeregową w standardzie XMODEM. W systemie Windows może to być np. HyperTerminal. Osobiście wykorzystałem program Minicom w systemie Xubuntu 14.04 LTS. Po jego uruchomieniu i ustawieniu prawidłowych parametrów transmisji (38400 8N1, w moim systemie port: /dev/ttyACM0) powinniśmy zobaczyć w oknie terminala komunikat informujący o gotowości urządzenia do transmisji danych: minicom1.jpg
Naciskamy sekwencję klawiszy Ctrl-A, Z i S oraz wybieramy do przesłania plik CUSTOM.mcm: minicom3.jpg
i protokół transmisji XMODEM: minicom2.jpg
Cały proces powinien zająć kilkadziesiąt sekund: minicom4.jpg
Po ponownym uruchomieniu VTI, na ekranie podłączonego pod złącze TV OUT odbiornika, powinniśmy zobaczyć zestaw nowych czcionek i znaków: vlc2.jpg
Ostatnim krokiem jest ponowne wgranie oprogramowania VTI. Po restarcie urządzenia możemy się cieszyć nowymi czcionkami: vlc3.png
vlc4.png

UWAGA! Aby po zmianie czcionek VTI działał prawidłowo, koniecznie musimy wprowadzić w kodzie niewielką poprawkę. Linię:

// OSD.setCharEncoding( MAX7456_ASCII ); // Only needed if ascii font.


zmieniamy (usuwamy komentarz) na:

OSD.setCharEncoding( MAX7456_ASCII ); // Only needed if ascii font.