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_Rainbow.ino (3738B)
1 /* 2 An example showing rainbow colours on a 1.8" TFT LCD screen 3 and to show a basic example of font use. 4 5 Make sure all the display driver and pin connections are correct by 6 editing the User_Setup.h file in the TFT_eSPI library folder. 7 8 Note that yield() or delay(0) must be called in long duration for/while 9 loops to stop the ESP8266 watchdog triggering. 10 11 ######################################################################### 12 ###### DON'T FORGET TO UPDATE THE User_Setup.h FILE IN THE LIBRARY ###### 13 ######################################################################### 14 */ 15 16 #include <TFT_eSPI.h> // Graphics and font library for ST7735 driver chip 17 #include <SPI.h> 18 19 TFT_eSPI tft = TFT_eSPI(); // Invoke library, pins defined in User_Setup.h 20 21 unsigned long targetTime = 0; 22 byte red = 31; 23 byte green = 0; 24 byte blue = 0; 25 byte state = 0; 26 unsigned int colour = red << 11; 27 28 void setup(void) { 29 tft.init(); 30 tft.setRotation(1); 31 tft.fillScreen(TFT_BLACK); 32 33 targetTime = millis() + 1000; 34 } 35 36 void loop() { 37 38 if (targetTime < millis()) { 39 targetTime = millis() + 10000; 40 41 // Colour changing state machine 42 for (int i = 0; i < 160; i++) { 43 tft.drawFastVLine(i, 0, tft.height(), colour); 44 switch (state) { 45 case 0: 46 green += 2; 47 if (green == 64) { 48 green = 63; 49 state = 1; 50 } 51 break; 52 case 1: 53 red--; 54 if (red == 255) { 55 red = 0; 56 state = 2; 57 } 58 break; 59 case 2: 60 blue ++; 61 if (blue == 32) { 62 blue = 31; 63 state = 3; 64 } 65 break; 66 case 3: 67 green -= 2; 68 if (green == 255) { 69 green = 0; 70 state = 4; 71 } 72 break; 73 case 4: 74 red ++; 75 if (red == 32) { 76 red = 31; 77 state = 5; 78 } 79 break; 80 case 5: 81 blue --; 82 if (blue == 255) { 83 blue = 0; 84 state = 0; 85 } 86 break; 87 } 88 colour = red << 11 | green << 5 | blue; 89 } 90 91 // The standard ADAFruit font still works as before 92 tft.setTextColor(TFT_BLACK); 93 tft.setCursor (12, 5); 94 tft.print("Original ADAfruit font!"); 95 96 // The new larger fonts do not use the .setCursor call, coords are embedded 97 tft.setTextColor(TFT_BLACK, TFT_BLACK); // Do not plot the background colour 98 99 // Overlay the black text on top of the rainbow plot (the advantage of not drawing the backgorund colour!) 100 tft.drawCentreString("Font size 2", 80, 14, 2); // Draw text centre at position 80, 12 using font 2 101 102 //tft.drawCentreString("Font size 2",81,12,2); // Draw text centre at position 80, 12 using font 2 103 104 tft.drawCentreString("Font size 4", 80, 30, 4); // Draw text centre at position 80, 24 using font 4 105 106 tft.drawCentreString("12.34", 80, 54, 6); // Draw text centre at position 80, 24 using font 6 107 108 tft.drawCentreString("12.34 is in font size 6", 80, 92, 2); // Draw text centre at position 80, 90 using font 2 109 110 // Note the x position is the top left of the font! 111 112 // draw a floating point number 113 float pi = 3.14159; // Value to print 114 int precision = 3; // Number of digits after decimal point 115 int xpos = 50; // x position 116 int ypos = 110; // y position 117 int font = 2; // font number only 2,4,6,7 valid. Font 6 only contains characters [space] 0 1 2 3 4 5 6 7 8 9 0 : a p m 118 xpos += tft.drawFloat(pi, precision, xpos, ypos, font); // Draw rounded number and return new xpos delta for next print position 119 tft.drawString(" is pi", xpos, ypos, font); // Continue printing from new x position 120 } 121 } 122 123 124 125 126 127