UniGraphic library test using MPS2+
Dependencies: MMA8451Q SPI_STMPE610 UniGraphic mbed
Fork of testUniGraphic_150217 by
main.cpp
00001 #include "mbed.h" 00002 //#include "MMA8451Q.h" 00003 #include <ILI9341.h> 00004 #include "Arial12x12.h" 00005 #include "Arial24x23.h" 00006 #include "Arial28x28.h" 00007 #include "Arial43x48_numb.h" 00008 #include "SPI_STMPE610.h" 00009 #include "main.h" 00010 00011 DigitalOut myled(LED1); 00012 ILI9341 TFT(SPI_8, 48000000, 00013 PIN_MOSI, PIN_MISO, PIN_SCLK, 00014 PIN_CS_TFT, PIN_RESET_TFT, PIN_DC_TFT, "Adafruit2.8") ; 00015 00016 //SPI_STMPE610 TSC(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TSC) ; 00017 00018 DigitalOut backlight(PIN_BL_TFT) ; 00019 00020 #define MMA8451_I2C_ADDRESS (0x1d<<1) 00021 //MMA8451Q *acc = 0 ; 00022 00023 int page = 0 ; 00024 int numPage = 3 ; 00025 00026 void initTFT(void) 00027 { 00028 //Configure the display driver 00029 TFT.FastWindow(true) ; 00030 TFT.background(Black); 00031 TFT.foreground(White); 00032 wait(0.01) ; 00033 TFT.cls(); 00034 } 00035 00036 void screen1(void) // Welcome Screen 00037 { 00038 printf("screen1\n"); 00039 backlight = 0 ; 00040 TFT.BusEnable(true) ; 00041 TFT.background(White) ; 00042 TFT.cls() ; 00043 printf("screen clear\n"); 00044 00045 wait(0.1) ; 00046 TFT.set_font((unsigned char*) Arial24x23); 00047 TFT.foreground(Red) ; 00048 TFT.locate(80, 30) ; 00049 TFT.printf("MBED") ; 00050 TFT.foreground(Blue); 00051 TFT.locate(60, 60) ; 00052 TFT.printf("2.8\"TFT") ; 00053 TFT.locate(40, 90) ; 00054 TFT.printf("with touch") ; 00055 TFT.foreground(Green) ; 00056 TFT.locate(10, 130) ; 00057 TFT.printf("UniGraphic Ver.") ; 00058 TFT.foreground(Black); 00059 TFT.set_font((unsigned char*) Arial12x12); 00060 TFT.foreground(Blue) ; 00061 TFT.locate(20, 180) ; 00062 TFT.printf("This program is running on") ; 00063 TFT.locate(20, 200) ; 00064 TFT.printf("freescale FRDM-KL25Z with") ; 00065 TFT.locate(20, 220) ; 00066 TFT.printf("a program developed on mbed") ; 00067 TFT.foreground(Green) ; 00068 TFT.locate(20, 260) ; 00069 TFT.printf("To advance demo page, touch") ; 00070 TFT.locate(20, 280) ; 00071 TFT.printf("and hold right side of screen") ; 00072 TFT.locate(20, 300) ; 00073 TFT.printf("until the next screen starts") ; 00074 TFT.BusEnable(false) ; 00075 backlight = 1 ; 00076 } 00077 00078 void screen2(void) // Graphics 00079 { 00080 //Draw some graphics 00081 int i, x[2], y[2] ; 00082 backlight = 0 ; 00083 TFT.BusEnable(true) ; 00084 00085 TFT.background(Black); 00086 TFT.foreground(White); 00087 TFT.cls() ; 00088 TFT.set_font((unsigned char*) Arial12x12); 00089 TFT.locate(90,0); 00090 TFT.printf("Graphics"); 00091 00092 x[0] = 25 ; x[1] = 224 ; 00093 y[0] = 20 ; y[1] = 219 ; 00094 for (i = 20 ; i < 220 ; i += 10) { 00095 TFT.line(i+5, y[0], i+5, y[1], Blue) ; 00096 TFT.line(x[0], i, x[1], i, Blue) ; 00097 } 00098 TFT.line(125, y[0], 125, y[1], Green) ; 00099 TFT.line(x[0], 120, x[1], 120, Green) ; 00100 TFT.rect(x[0],y[0], x[1], y[1], Green) ; 00101 TFT.locate(10, 20) ; 00102 TFT.printf("V") ; 00103 TFT.locate(0, 115) ; 00104 TFT.printf("0.0") ; 00105 TFT.locate(115, 225) ; 00106 TFT.printf("0.0") ; 00107 TFT.locate(215, 225) ; 00108 TFT.printf("T") ; 00109 00110 double s; 00111 for (int i = x[0]; i < 225; i++) { 00112 s = 40 * sin((long double)i / 20); 00113 TFT.pixel(i, 120 + (int)s, White); 00114 } 00115 00116 TFT.fillrect(10, 240, 229, 309, White) ; 00117 TFT.rect(10, 240, 229, 309, Red) ; 00118 TFT.rect(11, 241, 228, 308, Red) ; 00119 00120 TFT.background(White) ; 00121 TFT.foreground(Black) ; 00122 TFT.locate(20, 250) ; 00123 TFT.printf("With QVGA resolution") ; 00124 TFT.locate(20, 270) ; 00125 TFT.printf("simple graphics drawing") ; 00126 TFT.locate(20, 290) ; 00127 TFT.printf("capability is provided") ; 00128 00129 TFT.BusEnable(false) ; 00130 backlight = 1 ; 00131 } 00132 00133 double clip(double src) 00134 { 00135 double value ; 00136 value = src ; 00137 if (value < 0.0) { 00138 value = 0.0 ; 00139 } else if (value > 2.0) { 00140 value = 2.0 ; 00141 } 00142 return( value ) ; 00143 } 00144 00145 void screen3(void) 00146 { 00147 int t = 0 ; 00148 int pt = 0 ; // previous t 00149 int i, x, y ; 00150 unsigned int data[3] ; // for x, y, z 00151 unsigned int prev[3] ; 00152 unsigned short signalHeight = 39 ; 00153 unsigned short xoffset = 30 ; 00154 unsigned short yoffset = 120 ; 00155 unsigned short zoffset = 210 ; 00156 unsigned short paneX[2] = {20, 235} ; 00157 unsigned short paneH = 81 ; 00158 00159 backlight = 0 ; 00160 TFT.BusEnable(true) ; 00161 TFT.background(Black) ; 00162 TFT.foreground(White) ; 00163 // TFT.cls() ; 00164 00165 00166 TFT.fillrect(paneX[0], xoffset, paneX[1], xoffset+paneH, Black) ; 00167 TFT.fillrect(paneX[0], yoffset, paneX[1], yoffset+paneH, Black) ; 00168 TFT.fillrect(paneX[0], zoffset, paneX[1], zoffset+paneH, Black) ; 00169 TFT.fillrect(paneX[0], xoffset, paneX[1], xoffset+paneH, Black) ; 00170 for (i = 0 ; i < 10 ; i++ ) { 00171 y = i * 8 ; 00172 TFT.line(paneX[0], xoffset + y, paneX[1], xoffset + y, Blue) ; 00173 TFT.line(paneX[0], yoffset + y, paneX[1], yoffset + y, Blue) ; 00174 TFT.line(paneX[0], zoffset + y, paneX[1], zoffset + y, Blue) ; 00175 } 00176 for (x = 30 ; x < paneX[1] ; x += 10 ) { 00177 TFT.line(x, xoffset, x, xoffset+paneH, Blue) ; 00178 TFT.line(x, yoffset, x, yoffset+paneH, Blue) ; 00179 TFT.line(x, zoffset, x, zoffset+paneH, Blue) ; 00180 } 00181 TFT.rect(paneX[0], xoffset, paneX[1], xoffset+paneH, White) ; 00182 TFT.rect(paneX[0], yoffset, paneX[1], yoffset+paneH, White) ; 00183 TFT.rect(paneX[0], zoffset, paneX[1], zoffset+paneH, White) ; 00184 TFT.set_font((unsigned char*) Arial12x12); 00185 TFT.locate(5, xoffset+30) ; 00186 TFT.printf("X") ; 00187 TFT.locate(5, yoffset+30) ; 00188 TFT.printf("Y") ; 00189 TFT.locate(5, zoffset+30) ; 00190 TFT.printf("Z") ; 00191 TFT.locate(50, 10) ; 00192 TFT.printf("Xtrinsic Accelerometer") ; 00193 TFT.locate(90, 300) ; 00194 TFT.printf("MMA8451Q") ; 00195 #if 0 00196 prev[0] = xoffset + (signalHeight * clip((1.0 + acc->getAccX()))) ; 00197 prev[1] = yoffset + (signalHeight * clip((1.0 + acc->getAccY()))) ; 00198 prev[2] = zoffset + (signalHeight * clip((1.0 + acc->getAccZ()))) ; 00199 pt = paneX[0] ; 00200 backlight = 1 ; 00201 for(t = 21 ; t < paneX[1] ; t++) { 00202 data[0] = xoffset + (signalHeight * clip((1.0 + acc->getAccX()))) ; 00203 data[1] = yoffset + (signalHeight * clip((1.0 + acc->getAccY()))) ; 00204 data[2] = zoffset + (signalHeight * clip((1.0 + acc->getAccZ()))) ; 00205 TFT.line(pt, prev[0], t, data[0], Red) ; 00206 TFT.line(pt, prev[1], t, data[1], Green) ; 00207 TFT.line(pt, prev[2], t, data[2], Yellow) ; 00208 prev[0] = data[0] ; 00209 prev[1] = data[1] ; 00210 prev[2] = data[2] ; 00211 pt = t ; 00212 wait(0.01) ; 00213 } 00214 TFT.BusEnable(false) ; 00215 #endif 00216 } 00217 00218 void incPage(void) 00219 { 00220 page++ ; 00221 if (page >= numPage) { 00222 page = 0 ; 00223 } 00224 } 00225 00226 void decPage(void) 00227 { 00228 page-- ; 00229 if (page < 0) { 00230 page = numPage - 1 ; 00231 } 00232 } 00233 00234 int main() { 00235 uint16_t x, y, z ; 00236 int prevPage = 0 ; 00237 00238 //acc = new MMA8451Q(PTE25, PTE24, MMA8451_I2C_ADDRESS) ; 00239 00240 printf("\nInitializing TFT module\n") ; 00241 initTFT() ; 00242 printf("Initialized TFT module\n") ; 00243 00244 screen1() ; 00245 00246 printf("Program Started!\n\r") ; 00247 00248 for(;;) { 00249 printf("%02d: TFT width = %d, height = %d\n\r", page, TFT.width(), TFT.height()) ; 00250 switch(page) { 00251 case 0: 00252 if (prevPage != page) { 00253 screen1() ; 00254 } 00255 break ; 00256 case 1: 00257 if (prevPage != page) { 00258 screen2() ; 00259 } 00260 break ; 00261 case 2: 00262 if (prevPage != page) { 00263 TFT.BusEnable(true) ; 00264 TFT.background(Black) ; 00265 TFT.foreground(White) ; 00266 TFT.cls() ; 00267 TFT.BusEnable(false) ; 00268 } 00269 screen3() ; 00270 wait(2) ; 00271 break ; 00272 default: 00273 page = 0 ; 00274 break ; 00275 } 00276 prevPage = page ; 00277 00278 #if 0 00279 TSC.getRAWPoint(&x, &y, &z) ; 00280 if ((x != 0)||(y != 0) || (z != 0)) { 00281 if (x < 1000) { // left 00282 decPage() ; 00283 } else if (x > 3000) { // right 00284 incPage() ; 00285 } 00286 } 00287 #else 00288 page++; 00289 #endif 00290 wait(1) ; 00291 } 00292 }
Generated on Wed Jul 13 2022 02:06:54 by 1.7.2