// Demo based on: // UTFT_Demo by Henning Karlsen // web: http://www.henningkarlsen.com/electronics /* The delay between tests is set to 0. The tests run so fast you will need to change the WAIT value below to see what is being plotted! This sketch uses the GLCD and font 2 only. Make sure all the required fonts are loaded by editting the User_Setup.h file in the TFT_eSPI library folder. ######################################################################### ###### DON'T FORGET TO UPDATE THE User_Setup.h FILE IN THE LIBRARY ###### ###### TO SELECT THE FONTS YOU USE, SEE ABOVE ###### ######################################################################### */ // Delay between demo pages #define WAIT 0 // Delay between tests, set to 0 to demo speed, 2000 to see what it does! #define CENTRE 240 #include // Hardware-specific library #include TFT_eSPI tft = TFT_eSPI(); // Invoke custom library with default width and height #define TFT_GREY 0x7BEF uint32_t runTime = 0; void setup() { randomSeed(analogRead(0)); Serial.begin(38400); // Setup the LCD tft.init(); tft.setRotation(1); } void loop() { int buf[478]; int x, x2; int y, y2; int r; runTime = millis(); // Clear the screen and draw the frame tft.fillScreen(TFT_BLACK); tft.fillRect(0, 0, 480, 13, TFT_RED); tft.fillRect(0, 305, 480, 320, TFT_GREY); tft.setTextColor(TFT_BLACK,TFT_RED); tft.drawCentreString("* TFT_eSPI *", CENTRE, 3, 1); tft.setTextColor(TFT_YELLOW,TFT_GREY); tft.drawCentreString("Adapted by Bodmer", CENTRE, 309,1); tft.drawRect(0, 14, 479, 305-14, TFT_BLUE); // Draw crosshairs tft.drawLine(239, 15, 239, 304, TFT_BLUE); tft.drawLine(1, 159, 478, 159, TFT_BLUE); for (int i=9; i<470; i+=10) tft.drawLine(i, 157, i, 161, TFT_BLUE); for (int i=19; i<220; i+=10) tft.drawLine(237, i, 241, i, TFT_BLUE); // Draw sin-, cos- and tan-lines tft.setTextColor(TFT_CYAN); tft.drawString("Sin", 5, 15,2); for (int i=1; i<478; i++) { tft.drawPixel(i,159+(sin(((i*1.13)*3.14)/180)*95),TFT_CYAN); } tft.setTextColor(TFT_RED); tft.drawString("Cos", 5, 30,2); for (int i=1; i<478; i++) { tft.drawPixel(i,159+(cos(((i*1.13)*3.14)/180)*95),TFT_RED); } tft.setTextColor(TFT_YELLOW); tft.drawString("Tan", 5, 45,2); for (int i=1; i<478; i++) { tft.drawPixel(i,159+(tan(((i*1.13)*3.14)/180)),TFT_YELLOW); } delay(WAIT); tft.fillRect(1,15,478-1,304-15,TFT_BLACK); tft.drawLine(239, 15, 239, 304,TFT_BLUE); tft.drawLine(1, 159, 478, 159,TFT_BLUE); // Draw a moving sinewave int col = 0; x=1; for (int i=1; i<(477*15); i++) { x++; if (x==478) x=1; if (i>478) { if ((x==239)||(buf[x-1]==159)) col = TFT_BLUE; else tft.drawPixel(x,buf[x-1],TFT_BLACK); } y=159+(sin(((i*0.7)*3.14)/180)*(90-(i / 100))); tft.drawPixel(x,y, TFT_BLUE); buf[x-1]=y; } delay(WAIT); tft.fillRect(1,15,478-1,304-15,TFT_BLACK); // Draw some filled rectangles for (int i=1; i<6; i++) { switch (i) { case 1: col = TFT_MAGENTA; break; case 2: col = TFT_RED; break; case 3: col = TFT_GREEN; break; case 4: col = TFT_BLUE; break; case 5: col = TFT_YELLOW; break; } tft.fillRect(150+(i*20), 70+(i*20), 60, 60,col); } delay(WAIT); tft.fillRect(1,15,478-1,304-15,TFT_BLACK); // Draw some filled, rounded rectangles for (int i=1; i<6; i++) { switch (i) { case 1: col = TFT_MAGENTA; break; case 2: col = TFT_RED; break; case 3: col = TFT_GREEN; break; case 4: col = TFT_BLUE; break; case 5: col = TFT_YELLOW; break; } tft.fillRoundRect(270-(i*20), 70+(i*20), 60, 60, 3, col); } delay(WAIT); tft.fillRect(1,15,478-1,304-15,TFT_BLACK); // Draw some filled circles for (int i=1; i<6; i++) { switch (i) { case 1: col = TFT_MAGENTA; break; case 2: col = TFT_RED; break; case 3: col = TFT_GREEN; break; case 4: col = TFT_BLUE; break; case 5: col = TFT_YELLOW; break; } tft.fillCircle(180+(i*20),100+(i*20), 30,col); } delay(WAIT); tft.fillRect(1,15,478-1,304-15,TFT_BLACK); // Draw some lines in a pattern for (int i=15; i<304; i+=5) { tft.drawLine(1, i, (i*1.6)-10, 303, TFT_RED); } for (int i=304; i>15; i-=5) { tft.drawLine(477, i, (i*1.6)-11, 15, TFT_RED); } for (int i=304; i>15; i-=5) { tft.drawLine(1, i, 491-(i*1.6), 15, TFT_CYAN); } for (int i=15; i<304; i+=5) { tft.drawLine(477, i, 490-(i*1.6), 303, TFT_CYAN); } delay(WAIT); tft.fillRect(1,15,478-1,304-15,TFT_BLACK); // Draw some random circles for (int i=0; i<100; i++) { x=32+random(416); y=45+random(226); r=random(30); tft.drawCircle(x, y, r,random(0xFFFF)); } delay(WAIT); tft.fillRect(1,15,478-1,304-15,TFT_BLACK); // Draw some random rectangles for (int i=0; i<100; i++) { x=2+random(476); y=16+random(289); x2=2+random(476); y2=16+random(289); if (x2