test for the SPI_TFT Lib

Dependencies:   SPI_TFT TFT_fonts mbed

Fork of TFT_Test1 by Peter Drescher

Committer:
MACRUM
Date:
Tue Feb 21 13:51:31 2017 +0000
Revision:
6:d1db150d8e55
Parent:
5:a6e8dc7bd7e3
Update library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 5:a6e8dc7bd7e3 1 // example to test the TFT Display
MACRUM 5:a6e8dc7bd7e3 2 // Thanks to the GraphicsDisplay and TextDisplay classes from
dreschpe 2:64fbd5e91109 3
dreschpe 2:64fbd5e91109 4 #include "stdio.h"
dreschpe 2:64fbd5e91109 5 #include "mbed.h"
dreschpe 2:64fbd5e91109 6 #include "SPI_TFT.h"
dreschpe 2:64fbd5e91109 7 #include "string"
dreschpe 2:64fbd5e91109 8 #include "Arial12x12.h"
dreschpe 2:64fbd5e91109 9 #include "Arial24x23.h"
dreschpe 2:64fbd5e91109 10 #include "Arial28x28.h"
dreschpe 2:64fbd5e91109 11 #include "font_big.h"
dreschpe 2:64fbd5e91109 12
dreschpe 2:64fbd5e91109 13 extern unsigned char p1[]; // the mbed logo
dreschpe 2:64fbd5e91109 14
MACRUM 5:a6e8dc7bd7e3 15 // the TFT is connected to SPI pin 5-7
MACRUM 5:a6e8dc7bd7e3 16 //SPI_TFT TFT(p11, p12, p13, p14, p15,"TFT"); // mosi, miso, sclk, cs, reset
MACRUM 5:a6e8dc7bd7e3 17 SPI_TFT TFT(CLCD_MOSI, CLCD_MISO, CLCD_SCLK, CLCD_SSEL , CLCD_RESET, "TFT"); // mosi, miso, sclk, cs, reset
MACRUM 5:a6e8dc7bd7e3 18 Serial pc(USBTX, USBRX);
MACRUM 5:a6e8dc7bd7e3 19
MACRUM 5:a6e8dc7bd7e3 20 const uint16_t colorTable[18] = {
MACRUM 5:a6e8dc7bd7e3 21 Black,
MACRUM 5:a6e8dc7bd7e3 22 Navy,
MACRUM 5:a6e8dc7bd7e3 23 DarkGreen,
MACRUM 5:a6e8dc7bd7e3 24 DarkCyan,
MACRUM 5:a6e8dc7bd7e3 25 Maroon,
MACRUM 5:a6e8dc7bd7e3 26 Purple,
MACRUM 5:a6e8dc7bd7e3 27 Olive,
MACRUM 5:a6e8dc7bd7e3 28 LightGrey,
MACRUM 5:a6e8dc7bd7e3 29 DarkGrey,
MACRUM 5:a6e8dc7bd7e3 30 Blue,
MACRUM 5:a6e8dc7bd7e3 31 Green,
MACRUM 5:a6e8dc7bd7e3 32 Cyan,
MACRUM 5:a6e8dc7bd7e3 33 Red,
MACRUM 5:a6e8dc7bd7e3 34 Magenta,
MACRUM 5:a6e8dc7bd7e3 35 Yellow,
MACRUM 5:a6e8dc7bd7e3 36 White,
MACRUM 5:a6e8dc7bd7e3 37 Orange,
MACRUM 5:a6e8dc7bd7e3 38 GreenYellow
MACRUM 5:a6e8dc7bd7e3 39 };
MACRUM 5:a6e8dc7bd7e3 40
MACRUM 5:a6e8dc7bd7e3 41 void screen2(void) // Graphics
MACRUM 5:a6e8dc7bd7e3 42 {
MACRUM 5:a6e8dc7bd7e3 43 //Draw some graphics
MACRUM 5:a6e8dc7bd7e3 44 int i, x[2], y[2] ;
MACRUM 5:a6e8dc7bd7e3 45
MACRUM 5:a6e8dc7bd7e3 46 TFT.background(Black);
MACRUM 5:a6e8dc7bd7e3 47 TFT.foreground(White);
MACRUM 5:a6e8dc7bd7e3 48 TFT.cls() ;
MACRUM 5:a6e8dc7bd7e3 49 TFT.set_font((unsigned char*) Arial12x12);
MACRUM 5:a6e8dc7bd7e3 50 TFT.locate(90,0);
MACRUM 5:a6e8dc7bd7e3 51 TFT.printf("Graphics");
dreschpe 2:64fbd5e91109 52
MACRUM 5:a6e8dc7bd7e3 53 x[0] = 25 ;
MACRUM 5:a6e8dc7bd7e3 54 x[1] = 224 ;
MACRUM 5:a6e8dc7bd7e3 55 y[0] = 20 ;
MACRUM 5:a6e8dc7bd7e3 56 y[1] = 219 ;
MACRUM 5:a6e8dc7bd7e3 57 for (i = 20 ; i < 220 ; i += 10) {
MACRUM 5:a6e8dc7bd7e3 58 TFT.line(i+5, y[0], i+5, y[1], Blue) ;
MACRUM 5:a6e8dc7bd7e3 59 TFT.line(x[0], i, x[1], i, Blue) ;
MACRUM 5:a6e8dc7bd7e3 60 }
MACRUM 5:a6e8dc7bd7e3 61 TFT.line(125, y[0], 125, y[1], Green) ;
MACRUM 5:a6e8dc7bd7e3 62 TFT.line(x[0], 120, x[1], 120, Green) ;
MACRUM 5:a6e8dc7bd7e3 63 TFT.rect(x[0],y[0], x[1], y[1], Green) ;
MACRUM 5:a6e8dc7bd7e3 64 TFT.locate(10, 20) ;
MACRUM 5:a6e8dc7bd7e3 65 TFT.printf("V") ;
MACRUM 5:a6e8dc7bd7e3 66 TFT.locate(0, 115) ;
MACRUM 5:a6e8dc7bd7e3 67 TFT.printf("0.0") ;
MACRUM 5:a6e8dc7bd7e3 68 TFT.locate(115, 225) ;
MACRUM 5:a6e8dc7bd7e3 69 TFT.printf("0.0") ;
MACRUM 5:a6e8dc7bd7e3 70 TFT.locate(215, 225) ;
MACRUM 5:a6e8dc7bd7e3 71 TFT.printf("T") ;
MACRUM 5:a6e8dc7bd7e3 72
MACRUM 5:a6e8dc7bd7e3 73 double s;
MACRUM 5:a6e8dc7bd7e3 74 for (int i = x[0]; i < 225; i++) {
MACRUM 5:a6e8dc7bd7e3 75 s = 40 * sin((long double)i / 20);
MACRUM 5:a6e8dc7bd7e3 76 TFT.pixel(i, 120 + (int)s, White);
MACRUM 5:a6e8dc7bd7e3 77 }
MACRUM 5:a6e8dc7bd7e3 78 #if 0
MACRUM 5:a6e8dc7bd7e3 79 TFT.fillrect(10, 240, 229, 309, White) ;
MACRUM 5:a6e8dc7bd7e3 80 TFT.rect(10, 240, 229, 309, Red) ;
MACRUM 5:a6e8dc7bd7e3 81 TFT.rect(11, 241, 228, 308, Red) ;
MACRUM 5:a6e8dc7bd7e3 82
MACRUM 5:a6e8dc7bd7e3 83 TFT.background(White) ;
MACRUM 5:a6e8dc7bd7e3 84 TFT.foreground(Black) ;
MACRUM 5:a6e8dc7bd7e3 85 TFT.locate(20, 250) ;
MACRUM 5:a6e8dc7bd7e3 86 TFT.printf("With QVGA resolution") ;
MACRUM 5:a6e8dc7bd7e3 87 TFT.locate(20, 270) ;
MACRUM 5:a6e8dc7bd7e3 88 TFT.printf("simple graphics drawing") ;
MACRUM 5:a6e8dc7bd7e3 89 TFT.locate(20, 290) ;
MACRUM 5:a6e8dc7bd7e3 90 TFT.printf("capability is provided") ;
MACRUM 5:a6e8dc7bd7e3 91 #endif
MACRUM 5:a6e8dc7bd7e3 92 }
MACRUM 5:a6e8dc7bd7e3 93
MACRUM 5:a6e8dc7bd7e3 94 int main()
MACRUM 5:a6e8dc7bd7e3 95 {
MACRUM 5:a6e8dc7bd7e3 96 pc.baud(38400);
MACRUM 5:a6e8dc7bd7e3 97 pc.printf("Hello, mbed world.\n");
MACRUM 5:a6e8dc7bd7e3 98 pc.printf("System core lock : %d\n", SystemCoreClock);
MACRUM 5:a6e8dc7bd7e3 99
MACRUM 5:a6e8dc7bd7e3 100 TFT.claim(stdout); // send stdout to the TFT display
dreschpe 2:64fbd5e91109 101 //TFT.claim(stderr); // send stderr to the TFT display
dreschpe 2:64fbd5e91109 102
MACRUM 5:a6e8dc7bd7e3 103 while(1) {
MACRUM 5:a6e8dc7bd7e3 104 TFT.background(Black); // set background to black
MACRUM 5:a6e8dc7bd7e3 105 TFT.foreground(White); // set chars to white
MACRUM 5:a6e8dc7bd7e3 106 TFT.cls(); // clear the screen
MACRUM 5:a6e8dc7bd7e3 107 TFT.set_font((unsigned char*) Arial12x12); // select the font
MACRUM 5:a6e8dc7bd7e3 108
MACRUM 5:a6e8dc7bd7e3 109 // first show the 4 directions
MACRUM 5:a6e8dc7bd7e3 110 TFT.set_orientation(0);
MACRUM 5:a6e8dc7bd7e3 111 TFT.locate(0,0);
MACRUM 5:a6e8dc7bd7e3 112 printf(" Hello Mbed 0");
MACRUM 5:a6e8dc7bd7e3 113 TFT.set_orientation(1);
MACRUM 5:a6e8dc7bd7e3 114 TFT.locate(0,0);
MACRUM 5:a6e8dc7bd7e3 115 printf(" Hello Mbed 1");
MACRUM 5:a6e8dc7bd7e3 116 TFT.set_orientation(2);
MACRUM 5:a6e8dc7bd7e3 117 TFT.locate(0,0);
MACRUM 5:a6e8dc7bd7e3 118 printf(" Hello Mbed 2");
MACRUM 5:a6e8dc7bd7e3 119 TFT.set_orientation(3);
MACRUM 5:a6e8dc7bd7e3 120 TFT.locate(0,0);
MACRUM 5:a6e8dc7bd7e3 121 printf(" Hello Mbed 3");
MACRUM 5:a6e8dc7bd7e3 122 TFT.set_orientation(1);
MACRUM 5:a6e8dc7bd7e3 123 TFT.set_font((unsigned char*) Arial24x23);
MACRUM 5:a6e8dc7bd7e3 124 TFT.locate(50,100);
MACRUM 5:a6e8dc7bd7e3 125 TFT.printf("TFT orientation");
MACRUM 5:a6e8dc7bd7e3 126
MACRUM 5:a6e8dc7bd7e3 127 wait(5); // wait two seconds
MACRUM 5:a6e8dc7bd7e3 128
MACRUM 5:a6e8dc7bd7e3 129 screen2();
MACRUM 5:a6e8dc7bd7e3 130 wait(5);
MACRUM 5:a6e8dc7bd7e3 131
MACRUM 5:a6e8dc7bd7e3 132 // draw some graphics
MACRUM 5:a6e8dc7bd7e3 133 TFT.background(Black); // set background to black
MACRUM 5:a6e8dc7bd7e3 134 TFT.foreground(White); // set chars to white
MACRUM 5:a6e8dc7bd7e3 135 TFT.cls();
MACRUM 5:a6e8dc7bd7e3 136 TFT.set_orientation(1);
MACRUM 5:a6e8dc7bd7e3 137 TFT.set_font((unsigned char*) Arial24x23);
MACRUM 5:a6e8dc7bd7e3 138 TFT.locate(120,30);
MACRUM 5:a6e8dc7bd7e3 139 TFT.printf("Graphic");
MACRUM 5:a6e8dc7bd7e3 140
MACRUM 5:a6e8dc7bd7e3 141 /*
MACRUM 5:a6e8dc7bd7e3 142 TFT.line(0,0,100,200,Green);
MACRUM 5:a6e8dc7bd7e3 143 TFT.rect(100,50,150,100,Red);
MACRUM 5:a6e8dc7bd7e3 144 TFT.fillrect(180,25,220,70,Blue);
MACRUM 5:a6e8dc7bd7e3 145 TFT.circle(80,150,33,White);
MACRUM 5:a6e8dc7bd7e3 146 */
MACRUM 5:a6e8dc7bd7e3 147
MACRUM 5:a6e8dc7bd7e3 148 int c = 0;
MACRUM 5:a6e8dc7bd7e3 149 for(int i = 0; i < 32; i++) {
MACRUM 5:a6e8dc7bd7e3 150 TFT.fillrect(i*10, i*7, i*10 + 20, i*7 + 20, colorTable[c++]);
MACRUM 5:a6e8dc7bd7e3 151 TFT.rect(i*10, 240 - i*7,i*10 + 20, 240 - i*7 - 20, colorTable[c++]);
MACRUM 5:a6e8dc7bd7e3 152 TFT.circle(i*10, 120, 20, colorTable[c++]);
MACRUM 5:a6e8dc7bd7e3 153 if (c > 18)
MACRUM 5:a6e8dc7bd7e3 154 c = 0;
MACRUM 5:a6e8dc7bd7e3 155 }
MACRUM 5:a6e8dc7bd7e3 156
MACRUM 5:a6e8dc7bd7e3 157 wait(5); // wait two seconds
MACRUM 5:a6e8dc7bd7e3 158
MACRUM 5:a6e8dc7bd7e3 159 // bigger text
MACRUM 5:a6e8dc7bd7e3 160 TFT.foreground(White);
MACRUM 5:a6e8dc7bd7e3 161 TFT.background(Blue);
MACRUM 5:a6e8dc7bd7e3 162 TFT.cls();
MACRUM 5:a6e8dc7bd7e3 163 TFT.set_font((unsigned char*) Arial24x23);
MACRUM 5:a6e8dc7bd7e3 164 TFT.locate(0,0);
MACRUM 5:a6e8dc7bd7e3 165 TFT.printf("Different Fonts :");
MACRUM 5:a6e8dc7bd7e3 166
MACRUM 5:a6e8dc7bd7e3 167 TFT.set_font((unsigned char*) Neu42x35);
MACRUM 5:a6e8dc7bd7e3 168 TFT.locate(0,30);
MACRUM 5:a6e8dc7bd7e3 169 TFT.printf("Hello Mbed 1");
MACRUM 5:a6e8dc7bd7e3 170 TFT.set_font((unsigned char*) Arial24x23);
MACRUM 5:a6e8dc7bd7e3 171 TFT.locate(20,80);
MACRUM 5:a6e8dc7bd7e3 172 TFT.printf("Hello Mbed 2");
MACRUM 5:a6e8dc7bd7e3 173 TFT.set_font((unsigned char*) Arial12x12);
MACRUM 5:a6e8dc7bd7e3 174 TFT.locate(35,120);
MACRUM 5:a6e8dc7bd7e3 175 TFT.printf("Hello Mbed 3");
MACRUM 5:a6e8dc7bd7e3 176 wait(5);
MACRUM 5:a6e8dc7bd7e3 177
MACRUM 5:a6e8dc7bd7e3 178 // mbed logo
MACRUM 5:a6e8dc7bd7e3 179 TFT.set_orientation(1);
MACRUM 5:a6e8dc7bd7e3 180 TFT.background(Black);
MACRUM 5:a6e8dc7bd7e3 181 TFT.cls();
MACRUM 5:a6e8dc7bd7e3 182 TFT.Bitmap(90,90,172,55,p1);
MACRUM 5:a6e8dc7bd7e3 183 wait(5);
MACRUM 5:a6e8dc7bd7e3 184 }
dreschpe 2:64fbd5e91109 185 }
dreschpe 2:64fbd5e91109 186