#include #include #include #include "font_Arial.h" #include "font_ArialBold.h" #include "font_ComicSansMS.h" #include "font_OpenSans.h" #include "font_DroidSans.h" #include "font_Michroma.h" #include "font_Crystal.h" #include "font_ChanceryItalic.h" #define CENTER ILI9488_t3::CENTER // maybe a few GFX FOnts? #include #include typedef struct { const ILI9488_t3_font_t *ili_font; const GFXfont *gfx_font; const char *font_name; uint16_t font_fg_color; uint16_t font_bg_color; } ili_fonts_test_t; const ili_fonts_test_t font_test_list[] = { {&Arial_12, nullptr, "Arial_12", ILI9488_WHITE, ILI9488_WHITE}, {&Arial_12_Bold, nullptr, "ArialBold 12", ILI9488_YELLOW, ILI9488_YELLOW}, {&ComicSansMS_12, nullptr, "ComicSansMS 12", ILI9488_GREEN, ILI9488_GREEN}, {&DroidSans_12, nullptr, "DroidSans_12", ILI9488_WHITE, ILI9488_WHITE}, {&Michroma_12, nullptr, "Michroma_12", ILI9488_YELLOW, ILI9488_YELLOW}, {&Crystal_16_Italic, nullptr, "CRYSTAL_16", ILI9488_BLACK, ILI9488_YELLOW}, {&Chancery_16_Italic, nullptr, "Chancery_16_Italic", ILI9488_GREEN, ILI9488_GREEN}, {&OpenSans16, nullptr, "OpenSans 16", ILI9488_RED, ILI9488_YELLOW}, {nullptr, &FreeMono9pt7b, "GFX FreeMono9pt7b", ILI9488_WHITE, ILI9488_WHITE}, {nullptr, &FreeMono9pt7b, "GFX FreeMono9pt7b", ILI9488_RED, ILI9488_YELLOW}, {nullptr, &FreeSerif9pt7b, "GFX FreeSerif9pt7b", ILI9488_WHITE, ILI9488_WHITE}, {nullptr, &FreeSerif9pt7b, "GFX FreeSerif9pt7b", ILI9488_RED, ILI9488_YELLOW}, } ; #define ILI9488_CS 10 #define ILI9488_DC 9 #define ILI9488_RST 8 ILI9488_t3 tft = ILI9488_t3(&SPI, ILI9488_CS, ILI9488_DC, ILI9488_RST); uint8_t test_screen_rotation = 0; void setup() { Serial.begin(38400); long unsigned debug_start = millis (); while (!Serial && ((millis () - debug_start) <= 5000)) ; Serial.println("Setup"); // begin display: Choose from: ILI9488_480x272, ILI9488_800x480, ILI9488_800x480ALT, Adafruit_480x272, Adafruit_800x480 tft.begin(60000000u); tft.setRotation(4); tft.fillScreen(ILI9488_BLACK); tft.setTextColor(ILI9488_WHITE); tft.setFont(Arial_12); tft.println("Arial_12"); displayStuff(); tft.setTextColor(ILI9488_YELLOW); tft.setFont(Arial_12_Bold); tft.println("ArialBold 12"); displayStuff(); nextPage(); tft.setTextColor(ILI9488_GREEN); tft.setFont(ComicSansMS_12); tft.println("ComicSansMS 12"); displayStuff(); tft.setTextColor(ILI9488_WHITE); tft.setFont(DroidSans_12); tft.println("DroidSans_12"); displayStuff(); nextPage(); tft.setTextColor(ILI9488_YELLOW); tft.setFont(Michroma_12); tft.println("Michroma_12"); displayStuff(); tft.setTextColor(ILI9488_BLACK, ILI9488_YELLOW); tft.setFont(Crystal_16_Italic); tft.println("CRYSTAL_16"); displayStuff(); nextPage(); tft.setTextColor(ILI9488_GREEN); tft.setFont(Chancery_16_Italic); tft.println("Chancery_16_Italic"); displayStuff(); //anti-alias font OpenSans tft.setTextColor(ILI9488_RED, ILI9488_YELLOW); tft.setFont(OpenSans16); tft.println("OpenSans 18"); displayStuff(); Serial.println("Basic Font Display Complete"); Serial.println("Loop test for alt colors + font"); } void loop() { tft.setFont(Arial_12); Serial.printf("\nRotation: %d\n", test_screen_rotation); tft.setRotation(test_screen_rotation); tft.fillScreen(ILI9488_RED); tft.setCursor(CENTER, CENTER); tft.printf("Rotation: %d", test_screen_rotation); test_screen_rotation = (test_screen_rotation + 1) & 0x3; /* tft.setCursor(200, 300); Serial.printf(" Set cursor(200, 300), retrieved(%d %d)", tft.getCursorX(), tft.getCursorY()); */ tft.setCursor(25, 25); tft.write('0'); tft.setCursor(tft.width() - 25, 25); tft.write('1'); tft.setCursor(25, tft.height() - 25); tft.write('2'); tft.setCursor(tft.width() - 25, tft.height() - 25); tft.write('3'); for (uint8_t font_index = 0; font_index < (sizeof(font_test_list) / sizeof(font_test_list[0])); font_index++) { nextPage(); if (font_test_list[font_index].font_fg_color != font_test_list[font_index].font_bg_color) tft.setTextColor(font_test_list[font_index].font_fg_color, font_test_list[font_index].font_bg_color); else tft.setTextColor(font_test_list[font_index].font_fg_color); if (font_test_list[font_index].ili_font) tft.setFont(*font_test_list[font_index].ili_font); else tft.setFont(font_test_list[font_index].gfx_font); tft.println(font_test_list[font_index].font_name); displayStuff1(); } nextPage(); } uint32_t displayStuff() { elapsedMillis elapsed_time = 0; tft.println("ABCDEFGHIJKLM"); tft.println("nopqrstuvwxyz"); tft.println("0123456789"); tft.println("!@#$%^ &*()-"); tft.println(); tft.println(); return (uint32_t) elapsed_time; } uint32_t displayStuff1() { elapsedMillis elapsed_time = 0; tft.println("ABCDEFGHIJKLM"); tft.println("nopqrstuvwxyz"); tft.println("0123456789"); tft.println("!@#$%^ &*()-"); int16_t cursorX = tft.getCursorX(); int16_t cursorY = tft.getCursorY(); uint16_t width = tft.width(); uint16_t height = tft.height(); Serial.printf("DS1 (%d,%d) %d %d\n", cursorX, cursorY, width, height); uint16_t rect_x = width / 2 - 50; uint16_t rect_y = height - 50; tft.drawRect(rect_x, rect_y, 100, 40, ILI9488_WHITE); for (uint16_t y = rect_y + 5; y < rect_y + 40; y += 5) tft.drawFastHLine(rect_x + 1, y, 98, ILI9488_PINK); for (uint16_t x = rect_x + 5; x < rect_x + 100; x += 5) tft.drawFastVLine(x, rect_y + 1, 38, ILI9488_PINK); tft.setCursor(width / 2, height - 30, true); tft.print("Center"); // Lets try again with CENTER X keyword. rect_y -= 60; tft.drawRect(rect_x, rect_y, 100, 40, ILI9488_PINK); for (uint16_t y = rect_y + 5; y < rect_y + 40; y += 5) tft.drawFastHLine(rect_x + 1, y, 98, ILI9488_CYAN); for (uint16_t x = rect_x + 5; x < rect_x + 100; x += 5) tft.drawFastVLine(x, rect_y + 1, 38, ILI9488_CYAN); tft.setCursor(CENTER, rect_y); tft.print("XCENTR"); // Lets try again with CENTER Y keyword. rect_x = 50; rect_y = tft.height() / 2 - 25; tft.drawRect(rect_x, rect_y, 100, 50, ILI9488_CYAN); for (uint16_t y = rect_y + 5; y < rect_y + 50; y += 5) tft.drawFastHLine(rect_x + 1, y, 98, ILI9488_PINK); for (uint16_t x = rect_x + 5; x < rect_x + 100; x += 5) tft.setCursor(50, CENTER); tft.print("YCENTR"); tft.setCursor(cursorX, cursorY); static const char alternating_text[] = "AbCdEfGhIjKlM\rNoPqRsTuVwXyZ"; for (uint8_t i = 0; i < (sizeof(alternating_text) - 1); i++) { if (i & 1) tft.setTextColor(ILI9488_WHITE, ILI9488_RED); else tft.setTextColor(ILI9488_YELLOW, ILI9488_BLUE); tft.write(alternating_text[i]); } tft.println(); tft.println(); return (uint32_t) elapsed_time; } void nextPage() { Serial.println("Press anykey to continue"); while (Serial.read() == -1) ; while (Serial.read() != -1) ; tft.fillScreen(ILI9488_BLACK); tft.setCursor(0, 0); }