// Demo based on: // UTFT_Demo_320x240 by Henning Karlsen // web: http://www.henningkarlsen.com/electronics // /* This sketch uses the GLCD and font 2 only. Make sure all the display driver and pin connections are correct by editing the User_Setup.h file in the TFT_eSPI library folder. ######################################################################### ###### DON'T FORGET TO UPDATE THE User_Setup.h FILE IN THE LIBRARY ###### ######################################################################### */ #include "SPI.h" #include "TFT_eSPI.h" #define TFT_GREY 0x7BEF TFT_eSPI myGLCD = TFT_eSPI(); // Invoke custom library unsigned long runTime = 0; void setup() { randomSeed(analogRead(A0)); // Setup the LCD myGLCD.init(); myGLCD.setRotation(1); } void loop() { randomSeed(millis()); //randomSeed(1234); // This ensure test is repeatable with exact same draws each loop int buf[318]; int x, x2; int y, y2; int r; runTime = millis(); // Clear the screen and draw the frame myGLCD.fillScreen(TFT_BLACK); myGLCD.fillRect(0, 0, 319, 14,TFT_RED); myGLCD.fillRect(0, 226, 319, 14,TFT_GREY); myGLCD.setTextColor(TFT_BLACK,TFT_RED); myGLCD.drawCentreString("* TFT_eSPI *", 160, 4, 1); myGLCD.setTextColor(TFT_YELLOW,TFT_GREY); myGLCD.drawCentreString("Adapted by Bodmer", 160, 228,1); myGLCD.drawRect(0, 14, 319, 211, TFT_BLUE); // Draw crosshairs myGLCD.drawLine(159, 15, 159, 224,TFT_BLUE); myGLCD.drawLine(1, 119, 318, 119,TFT_BLUE); for (int i=9; i<310; i+=10) myGLCD.drawLine(i, 117, i, 121,TFT_BLUE); for (int i=19; i<220; i+=10) myGLCD.drawLine(157, i, 161, i,TFT_BLUE); // Draw sin-, cos- and tan-lines myGLCD.setTextColor(TFT_CYAN); myGLCD.drawString("Sin", 5, 15,2); for (int i=1; i<318; i++) { myGLCD.drawPixel(i,119+(sin(((i*1.13)*3.14)/180)*95),TFT_CYAN); } myGLCD.setTextColor(TFT_RED); myGLCD.drawString("Cos", 5, 30,2); for (int i=1; i<318; i++) { myGLCD.drawPixel(i,119+(cos(((i*1.13)*3.14)/180)*95),TFT_RED); } myGLCD.setTextColor(TFT_YELLOW); myGLCD.drawString("Tan", 5, 45,2); for (int i=1; i<318; i++) { myGLCD.drawPixel(i,119+(tan(((i*1.13)*3.14)/180)),TFT_YELLOW); } delay(0); myGLCD.fillRect(1,15,317,209,TFT_BLACK); myGLCD.drawLine(159, 15, 159, 224,TFT_BLUE); myGLCD.drawLine(1, 119, 318, 119,TFT_BLUE); int col = 0; // Draw a moving sinewave x=1; for (int i=1; i<(317*20); i++) { x++; if (x==318) x=1; if (i>318) { if ((x==159)||(buf[x-1]==119)) col = TFT_BLUE; else myGLCD.drawPixel(x,buf[x-1],TFT_BLACK); } y=119+(sin(((i*1.1)*3.14)/180)*(90-(i / 100))); myGLCD.drawPixel(x,y,TFT_BLUE); buf[x-1]=y; } delay(0); myGLCD.fillRect(1,15,317,209,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; } myGLCD.fillRect(70+(i*20), 30+(i*20), 60, 60,col); } delay(0); myGLCD.fillRect(1,15,317,209,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; } myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 60,60, 3,col); } delay(0); myGLCD.fillRect(1,15,317,209,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; } myGLCD.fillCircle(100+(i*20),60+(i*20), 30,col); } delay(0); myGLCD.fillRect(1,15,317,209,TFT_BLACK); // Draw some lines in a pattern for (int i=15; i<224; i+=5) { myGLCD.drawLine(1, i, (i*1.44)-10, 223,TFT_RED); } for (int i=223; i>15; i-=5) { myGLCD.drawLine(317, i, (i*1.44)-11, 15,TFT_RED); } for (int i=223; i>15; i-=5) { myGLCD.drawLine(1, i, 331-(i*1.44), 15,TFT_CYAN); } for (int i=15; i<224; i+=5) { myGLCD.drawLine(317, i, 330-(i*1.44), 223,TFT_CYAN); } delay(0); myGLCD.fillRect(1,15,317,209,TFT_BLACK); // Draw some random circles for (int i=0; i<100; i++) { x=32+random(256); y=45+random(146); r=random(30); myGLCD.drawCircle(x, y, r,random(0xFFFF)); } delay(0); myGLCD.fillRect(1,15,317,209,TFT_BLACK); // Draw some random rectangles for (int i=0; i<100; i++) { x=2+random(316); y=16+random(207); x2=2+random(316); y2=16+random(207); if (x2