/*
Przykład dla biblioteki TFT_eSPI
Ten przykład pokazuje użycie czcionki Adafruit_GFX z własnym krojem,
która obsługuje zakres kodów znaków 32–255, co oznacza, że dostępne są
znaki akcentowane (między innymi).
Plik z niestandardową czcionką jest dołączony do tego szkicu jako plik nagłówkowy.
Dane czcionki zostały wygenerowane zgodnie z instrukcją tutaj:
https://www.youtube.com/watch?v=L8MmTISmwZ8
Zwróć uwagę, że dostępne są konwertery online dla czcionek zgodnych z Adafruit_GFX,
ale zazwyczaj używają one tylko znaków z zakresu 32–127,
a więc nie zawierają znaków akcentowanych. Te konwertery online
nadal można używać z tym szkicem, ale tekst testowy trzeba wtedy zmienić.
Arduino IDE używa kodowania UTF-8 dla takich znaków.
Biblioteka TFT_eSPI również oczekuje, że znaki z zakresu 128–255
będą zakodowane w UTF-8. Szczegóły tutaj:
https://playground.arduino.cc/Code/UTF-8
Podsumowując: znaki UTF-8 są kodowane jako więcej niż 1 bajt, więc trzeba uważać:
char c = 'µ'; // Źle
char bad[4] = "5µA"; // Źle
char good[] = "5µA"; // Dobrze
String okay = "5µA"; // Dobrze
Utworzone przez Bodmer 08/02/19
Upewnij się, że LOAD_GFXFF jest zdefiniowane w używanym pliku User_Setup
w folderze biblioteki.
#########################################################################
###### NIE ZAPOMNIJ ZAKTUALIZOWAĆ User_Setup.h W BIBLIOTECE ######
###### ABY WYBRAĆ TYP WYŚWIETLACZA, PINY ORAZ WŁĄCZYĆ CZCIONKI ######
#########################################################################
*/
// Tekst, który będzie wyświetlany na ekranie w tej czcionce
#define TEST_TEXT "ĄąĆćĘꣳŃńÓ󌜯żŹź"
#include <SPI.h>
#include <TFT_eSPI.h>
// Dołączamy plik z niestandardową czcionką, dołączony do tego szkicu
#include "MyFont.h"
// Odniesienie do wbudowanej czcionki i GFXFF
#define GFXFF 1
// Łatwiejsza do zapamiętania nazwa dla czcionki
#define MYFONT32 &myFont32pt8b
// Użycie sprzętowego SPI
TFT_eSPI tft = TFT_eSPI();
void setup(void) {
Serial.begin(250000);
tft.begin();
tft.setRotation(1);
}
void loop() {
// Prezentacja niestandardowych czcionek
// Gdy rozmiar czcionki rośnie, ekran nie jest czyszczony, bo większe czcionki nadpisują mniejsze kolorem tła
// Możemy ustawić punkt odniesienia tekstu (text datum) pionowo na: górę, środek, dół oraz poziomo na: lewo, środek i prawo. Dostępne punkty odniesienia:
// TL_DATUM = Góra-lewo (domyślnie)
// TC_DATUM = Góra-środek
// TR_DATUM = Góra-prawo
// ML_DATUM = Środek-lewo
// MC_DATUM = Środek-środek <<< Tego użyto poniżej
// MR_DATUM = Środek-prawo
// BL_DATUM = Dół-lewo
// BC_DATUM = Dół-środek
// BR_DATUM = Dół-prawo
// L_BASELINE = Lewa linia bazowa znaku (linia, na której stoi znak 'A')
// C_BASELINE = Środkowa linia bazowa znaku
// R_BASELINE = Prawa linia bazowa znaku
// Serial.println();
// Ustaw punkt odniesienia tekstu na środek-środek (MC_DATUM)
tft.setTextDatum(MC_DATUM);
// Ustaw kolor tekstu na biały z czarnym tłem
// W odróżnieniu od standardowej biblioteki Adafruit_GFX, biblioteka TFT_eSPI
// MOŻE rysować kolor tła dla czcionek niestandardowych i Free Fonts przy użyciu drawString()
// Białe znaki na czarnym tle
tft.setTextColor(TFT_WHITE, TFT_BLACK);
// lub białe znaki, bez tła
// tft.setTextColor(TFT_WHITE);
// Wyczyść ekran
tft.fillScreen(TFT_BLUE);
// Wybierz czcionkę
tft.setFreeFont(MYFONT32);
// Wyświetl nazwę czcionki
tft.drawString("ĄąĆćĘꣳŃńÓ󌜯żŹź", 160, 60, GFXFF);
// Ponownie wybierz czcionkę
tft.setFreeFont(MYFONT32);
// Wyświetl tekst testowy w czcionce custom
tft.drawString(TEST_TEXT, 160, 140, GFXFF);
delay(2000);
// Zmiana textDatum nie ma wpływu, gdy używamy tft.print
// Wyczyść ekran
tft.fillScreen(TFT_BLUE);
// Aby być kompatybilnym z Adafruit_GFX, kursor ma zawsze punkt odniesienia w lewym dolnym rogu
tft.setCursor(0, 60);
// Przy użyciu tft.print tło tekstu NIGDY nie jest renderowane
tft.print("ĄąĆćĘꣳŃńÓ󌜯żŹź");
delay(2000);
// Zresetuj padding tekstu do zera (wartość domyślna)
tft.setTextPadding(0);
}