acid-drop- Hacking the planet from a LilyGo T-Deck using custom firmware |
git clone git://git.acid.vegas/acid-drop.git |
Log | Files | Refs | Archive | README | LICENSE |
TFT_Custom_Fonts.ino (5805B)
1 /* 2 Example for TFT_eSPI library 3 4 Created by Bodmer 11/03/17 5 6 Make sure LOAD_GFXFF is defined in the used User_Setup file 7 within the library folder. 8 9 --------------------------- NOTE ---------------------------------------- 10 The free font encoding format does not lend itself easily to plotting 11 the background without flicker. For values that changes on screen it is 12 better to use Fonts 1- 8 which are encoded specifically for rapid 13 drawing with background. 14 ------------------------------------------------------------------------- 15 16 ######################################################################### 17 ###### DON'T FORGET TO UPDATE THE User_Setup.h FILE IN THE LIBRARY ###### 18 ###### TO SELECT YOUR DISPLAY TYPE, PINS USED AND ENABLE FONTS ###### 19 ######################################################################### 20 */ 21 22 // Note the the tilda symbol ~ does not exist in some fonts at the moment 23 #define TEXT "abc MWy 123 |" // Text that will be printed on screen in any font 24 25 #include "SPI.h" 26 #include "TFT_eSPI.h" 27 28 // Stock font and GFXFF reference handle 29 #define GFXFF 1 30 #define FF18 &FreeSans12pt7b 31 32 // Custom are fonts added to library "TFT_eSPI\Fonts\Custom" folder 33 // a #include must also be added to the "User_Custom_Fonts.h" file 34 // in the "TFT_eSPI\User_Setups" folder. See example entries. 35 #define CF_OL24 &Orbitron_Light_24 36 #define CF_OL32 &Orbitron_Light_32 37 #define CF_RT24 &Roboto_Thin_24 38 #define CF_S24 &Satisfy_24 39 #define CF_Y32 &Yellowtail_32 40 41 42 // Use hardware SPI 43 TFT_eSPI tft = TFT_eSPI(); 44 45 void setup(void) { 46 47 Serial.begin(250000); 48 49 tft.begin(); 50 51 tft.setRotation(1); 52 53 } 54 55 void loop() { 56 57 // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 58 // Show custom fonts 59 // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 60 61 // Where font sizes increase the screen is not cleared as the larger fonts overwrite 62 // the smaller one with the background colour. 63 64 // We can set the text datum to be Top, Middle, Bottom vertically and Left, Centre 65 // and Right horizontally. These are the text datums that can be used: 66 // TL_DATUM = Top left (default) 67 // TC_DATUM = Top centre 68 // TR_DATUM = Top right 69 // ML_DATUM = Middle left 70 // MC_DATUM = Middle centre <<< This is used below 71 // MR_DATUM = Middle right 72 // BL_DATUM = Bottom left 73 // BC_DATUM = Bottom centre 74 // BR_DATUM = Bottom right 75 // L_BASELINE = Left character baseline (Line the 'A' character would sit on) 76 // C_BASELINE = Centre character baseline 77 // R_BASELINE = Right character baseline 78 79 //Serial.println(); 80 81 // Set text datum to middle centre (MC_DATUM) 82 tft.setTextDatum(MC_DATUM); 83 84 // Set text colour to white with black background 85 // Unlike the stock Adafruit_GFX library, the TFT_eSPI library DOES draw the background 86 // for the custom and Free Fonts 87 tft.setTextColor(TFT_WHITE, TFT_BLACK); 88 89 tft.fillScreen(TFT_MAGENTA); // Clear screen 90 tft.setFreeFont(FF18); // Select the font 91 tft.drawString("Yellowtail 32", 160, 60, GFXFF);// Print the string name of the font 92 tft.setFreeFont(CF_Y32); // Select the font 93 tft.drawString(TEXT, 160, 120, GFXFF);// Print the string name of the font 94 delay(2000); 95 96 tft.fillScreen(TFT_BLUE); // Clear screen 97 tft.setFreeFont(FF18); // Select the font 98 tft.drawString("Satisfy 24", 160, 60, GFXFF);// Print the string name of the font 99 tft.setFreeFont(CF_S24); // Select the font 100 tft.drawString(TEXT, 160, 120, GFXFF);// Print the test text in the custom font 101 delay(2000); 102 103 tft.fillScreen(TFT_RED); // Clear screen 104 tft.setFreeFont(FF18); // Select the font 105 tft.drawString("Roboto 24", 160, 60, GFXFF);// Print the string name of the font 106 tft.setFreeFont(CF_RT24); // Select the font 107 tft.drawString(TEXT, 160, 120, GFXFF);// Print the test text in the custom font 108 delay(2000); 109 110 tft.fillScreen(TFT_DARKGREY); // Clear screen 111 tft.setFreeFont(FF18); // Select the font 112 tft.drawString("Orbitron 24", 160, 60, GFXFF);// Print the string name of the font 113 tft.setFreeFont(CF_OL24); // Select the font 114 tft.drawString(TEXT, 160, 120, GFXFF);// Print the test text in the custom font 115 delay(2000); 116 117 // Here we do not clear the screen and rely on the new text over-writing the old 118 tft.setFreeFont(FF18); // Select the font 119 tft.drawString("Orbitron 32", 160, 60, GFXFF);// Print the string name of the font 120 tft.setFreeFont(CF_OL32); // Select the font 121 tft.drawString(TEXT, 160, 120, GFXFF);// Print the test text in the custom font 122 delay(2000); 123 124 // Here we use text background padding to over-write the old text 125 tft.fillScreen(TFT_YELLOW); // Clear screen 126 tft.setTextColor(TFT_WHITE, TFT_BLACK); 127 128 // Here we use text background padding to over-write the old text 129 tft.setTextPadding(tft.width() - 20); // Blanked area will be width of screen minus 20 pixels 130 tft.setFreeFont(FF18); // Select the font 131 tft.drawString("Orbitron 32 with padding", 160, 60, GFXFF);// Print the string name of the font 132 tft.setFreeFont(CF_OL32); // Select the font 133 tft.drawString(TEXT, 160, 120, GFXFF);// Print the test text in the custom font 134 delay(2000); 135 136 // Use 80 pixel wide padding so old numbers over-write old ones 137 // One of the problrms with proportionally spaced numbers is that they jiggle position 138 tft.setTextPadding(80); 139 tft.setTextDatum(MC_DATUM); 140 tft.setFreeFont(CF_OL32); 141 for( int i = 100; i > 0; i--) 142 { 143 tft.drawNumber( i, 160, 200); 144 delay(500); 145 } 146 147 // Reset text padding to zero (default) 148 tft.setTextPadding(0); 149 } 150