LPC1768 Mini-DK board with 2.8" SPI TFT and SPI touch
Dependencies: Mini-DK mbed SDFileSystem
WARNING: filetoflash (SD to CPU flash)
The SPI_TFT library called from Mini-DK.lib contains an option to copy an image from the SD card to the CPU flash memory. This allows you to use an image as background without speed loss when writing other text and graphics.
By default, this option is enabled.
It can be disabled by uncommenting the #define mentioned below in Mini_DK.h:
#define NO_FLASH_BUFFER
Since the flash memory has limited write endurance, DO NOT use this feature when you intend to read multiple images from the SD card (eg: when used as a photo frame).
main.cpp@17:2975b628064f, 2014-11-04 (annotated)
- Committer:
- frankvnk
- Date:
- Tue Nov 04 21:44:46 2014 +0000
- Revision:
- 17:2975b628064f
- Parent:
- 16:784a071dec0e
Updated SPI_TFT_ILI9320 library to the latest version (auto-detect ILI9320, 9325 and 9328)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
frankvnk | 10:d07f76421408 | 1 | /* |
frankvnk | 10:d07f76421408 | 2 | This file contains 3 examples: |
frankvnk | 10:d07f76421408 | 3 | |
frankvnk | 10:d07f76421408 | 4 | ONE : Original example with paint demo. |
frankvnk | 10:d07f76421408 | 5 | TWO : Example for displaying a bitmap read from SD card. |
frankvnk | 10:d07f76421408 | 6 | Download the house.bmp bitmap file from http://mbed.org/media/uploads/frankvnk/house.bmp |
frankvnk | 10:d07f76421408 | 7 | Copy this file to the root of an SD card, insert it into the Mini-DK. |
frankvnk | 10:d07f76421408 | 8 | THREE : Example for copying a bitmap from SD to flash memory, use it as background and |
frankvnk | 10:d07f76421408 | 9 | write text without disrupting the background image. |
frankvnk | 10:d07f76421408 | 10 | Download the house.bmp bitmap file from http://mbed.org/media/uploads/frankvnk/house.bmp |
frankvnk | 10:d07f76421408 | 11 | Copy this file to the root of an SD card, insert it into the Mini-DK. |
frankvnk | 10:d07f76421408 | 12 | |
frankvnk | 10:d07f76421408 | 13 | IMPORTANT: |
frankvnk | 13:a10300cac491 | 14 | If copy to flash option is not needed - enable //#define NO_FLASH_BUFFER in Mini_DK.h |
frankvnk | 13:a10300cac491 | 15 | |
frankvnk | 10:d07f76421408 | 16 | |
frankvnk | 10:d07f76421408 | 17 | UNCOMMENT THE DESIRED CODE TO TEST. |
frankvnk | 10:d07f76421408 | 18 | |
frankvnk | 10:d07f76421408 | 19 | */ |
frankvnk | 10:d07f76421408 | 20 | |
frankvnk | 10:d07f76421408 | 21 | // ========================================================================================================= |
frankvnk | 10:d07f76421408 | 22 | // ================================================== ONE ================================================== |
frankvnk | 10:d07f76421408 | 23 | // ========================================================================================================= |
frankvnk | 9:3e117b89c705 | 24 | #include "stdio.h" |
frankvnk | 9:3e117b89c705 | 25 | #include "mbed.h" |
frankvnk | 9:3e117b89c705 | 26 | #include "Mini_DK.h" |
frankvnk | 9:3e117b89c705 | 27 | |
frankvnk | 9:3e117b89c705 | 28 | extern unsigned char p1[]; // the mbed logo |
frankvnk | 9:3e117b89c705 | 29 | #define RGB565CONVERT(red, green, blue) (uint16_t)( (( red >> 3 ) << 11 ) | (( green >> 2 ) << 5 ) | ( blue >> 3 )) |
frankvnk | 9:3e117b89c705 | 30 | |
frankvnk | 9:3e117b89c705 | 31 | DigitalOut led(DK_LED1); |
frankvnk | 9:3e117b89c705 | 32 | // TFT -> mosi, miso, sclk, cs |
frankvnk | 9:3e117b89c705 | 33 | SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT"); |
frankvnk | 9:3e117b89c705 | 34 | // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT |
frankvnk | 9:3e117b89c705 | 35 | TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT); |
frankvnk | 9:3e117b89c705 | 36 | |
frankvnk | 9:3e117b89c705 | 37 | int main() |
frankvnk | 9:3e117b89c705 | 38 | { |
frankvnk | 16:784a071dec0e | 39 | // Structs for storing touchpanel calibration data. |
frankvnk | 16:784a071dec0e | 40 | // Can be written to external storage (eg : eeprom), |
frankvnk | 16:784a071dec0e | 41 | // read back on startup and written to the touchpanel. |
frankvnk | 16:784a071dec0e | 42 | // As a result, the real calibration only needs to be done once. |
frankvnk | 16:784a071dec0e | 43 | Matrix matrix; |
frankvnk | 16:784a071dec0e | 44 | Coordinate ScreenSample[3]; |
frankvnk | 16:784a071dec0e | 45 | |
frankvnk | 9:3e117b89c705 | 46 | unsigned short LCD_id; |
frankvnk | 9:3e117b89c705 | 47 | TFT.claim(stdout); // send stdout to the TFT display |
frankvnk | 15:5059751d2fa2 | 48 | // Disable stdout buffering, allows us to omit \n with printf. |
frankvnk | 15:5059751d2fa2 | 49 | // More info at http://www.cplusplus.com/reference/cstdio/setvbuf/ |
frankvnk | 15:5059751d2fa2 | 50 | setvbuf ( stdout , NULL , _IONBF , NULL ); |
frankvnk | 9:3e117b89c705 | 51 | |
frankvnk | 9:3e117b89c705 | 52 | TFT.background(Black); // set background to black |
frankvnk | 9:3e117b89c705 | 53 | TFT.foreground(White); // set chars to white |
frankvnk | 9:3e117b89c705 | 54 | |
frankvnk | 9:3e117b89c705 | 55 | |
frankvnk | 9:3e117b89c705 | 56 | // LCD demo |
frankvnk | 9:3e117b89c705 | 57 | // first show the 4 directions |
frankvnk | 9:3e117b89c705 | 58 | TFT.cls(); |
frankvnk | 9:3e117b89c705 | 59 | TFT.set_font((unsigned char*) Arial12x12); |
frankvnk | 9:3e117b89c705 | 60 | TFT.set_orientation(0); |
frankvnk | 9:3e117b89c705 | 61 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 62 | printf(" Hello Mbed 0"); |
frankvnk | 9:3e117b89c705 | 63 | TFT.set_orientation(1); |
frankvnk | 9:3e117b89c705 | 64 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 65 | printf(" Hello Mbed 1"); |
frankvnk | 9:3e117b89c705 | 66 | TFT.set_orientation(2); |
frankvnk | 9:3e117b89c705 | 67 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 68 | printf(" Hello Mbed 2"); |
frankvnk | 9:3e117b89c705 | 69 | TFT.set_orientation(3); |
frankvnk | 9:3e117b89c705 | 70 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 71 | printf(" Hello Mbed 3"); |
frankvnk | 9:3e117b89c705 | 72 | TFT.set_orientation(1); |
frankvnk | 9:3e117b89c705 | 73 | TFT.set_font((unsigned char*) Arial24x23); |
frankvnk | 9:3e117b89c705 | 74 | TFT.locate(50,100); |
frankvnk | 10:d07f76421408 | 75 | printf("TFT orientation"); |
frankvnk | 9:3e117b89c705 | 76 | |
frankvnk | 9:3e117b89c705 | 77 | wait(2); |
frankvnk | 9:3e117b89c705 | 78 | |
frankvnk | 9:3e117b89c705 | 79 | // draw some graphics |
frankvnk | 9:3e117b89c705 | 80 | TFT.cls(); |
frankvnk | 9:3e117b89c705 | 81 | TFT.set_orientation(1); |
frankvnk | 9:3e117b89c705 | 82 | TFT.set_font((unsigned char*) Arial24x23); |
frankvnk | 9:3e117b89c705 | 83 | TFT.locate(120,115); |
frankvnk | 10:d07f76421408 | 84 | printf("Graphic"); |
frankvnk | 9:3e117b89c705 | 85 | TFT.line(0,0,100,200,Green); |
frankvnk | 9:3e117b89c705 | 86 | TFT.rect(100,50,50,50,Red); |
frankvnk | 9:3e117b89c705 | 87 | TFT.fillrect(180,25,40,45,Blue); |
frankvnk | 9:3e117b89c705 | 88 | TFT.draw_ellipse(80, 150, 33, 33, White); |
frankvnk | 9:3e117b89c705 | 89 | TFT.fill_ellipse(80, 50, 33, 33, White); |
frankvnk | 9:3e117b89c705 | 90 | wait(2); |
frankvnk | 9:3e117b89c705 | 91 | TFT.cls(); |
frankvnk | 9:3e117b89c705 | 92 | TFT.draw_ellipse(160, 120, 100, 50, Yellow); |
frankvnk | 9:3e117b89c705 | 93 | TFT.draw_ellipse(160, 120, 100, 100, Blue); |
frankvnk | 9:3e117b89c705 | 94 | TFT.fill_ellipse(160, 120, 80, 40, Green); |
frankvnk | 9:3e117b89c705 | 95 | wait(2); |
frankvnk | 9:3e117b89c705 | 96 | |
frankvnk | 9:3e117b89c705 | 97 | // bigger text |
frankvnk | 9:3e117b89c705 | 98 | TFT.foreground(White); |
frankvnk | 9:3e117b89c705 | 99 | TFT.background(Blue); |
frankvnk | 9:3e117b89c705 | 100 | TFT.cls(); |
frankvnk | 9:3e117b89c705 | 101 | TFT.set_font((unsigned char*) Arial24x23); |
frankvnk | 9:3e117b89c705 | 102 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 103 | printf("Different Fonts :"); |
frankvnk | 9:3e117b89c705 | 104 | |
frankvnk | 9:3e117b89c705 | 105 | TFT.set_font((unsigned char*) Neu42x35); |
frankvnk | 9:3e117b89c705 | 106 | TFT.locate(0,50); |
frankvnk | 10:d07f76421408 | 107 | printf("Hello"); |
frankvnk | 9:3e117b89c705 | 108 | TFT.set_font((unsigned char*) Arial24x23); |
frankvnk | 9:3e117b89c705 | 109 | TFT.locate(50,100); |
frankvnk | 10:d07f76421408 | 110 | printf("Hello"); |
frankvnk | 9:3e117b89c705 | 111 | TFT.set_font((unsigned char*) Arial12x12); |
frankvnk | 9:3e117b89c705 | 112 | TFT.locate(55,150); |
frankvnk | 10:d07f76421408 | 113 | printf("Hello"); |
frankvnk | 9:3e117b89c705 | 114 | |
frankvnk | 9:3e117b89c705 | 115 | TFT.set_orientation(2); |
frankvnk | 9:3e117b89c705 | 116 | TFT.set_font((unsigned char*) Arial24x23); |
frankvnk | 9:3e117b89c705 | 117 | TFT.locate(10,10); |
frankvnk | 10:d07f76421408 | 118 | printf("Hi mbed"); |
frankvnk | 9:3e117b89c705 | 119 | wait(2); |
frankvnk | 9:3e117b89c705 | 120 | |
frankvnk | 9:3e117b89c705 | 121 | // mbed logo |
frankvnk | 9:3e117b89c705 | 122 | TFT.set_orientation(1); |
frankvnk | 9:3e117b89c705 | 123 | TFT.background(Black); |
frankvnk | 9:3e117b89c705 | 124 | TFT.cls(); |
frankvnk | 9:3e117b89c705 | 125 | TFT.Bitmap(90,90,172,55,p1); |
frankvnk | 9:3e117b89c705 | 126 | |
frankvnk | 9:3e117b89c705 | 127 | // Read LCD ID |
frankvnk | 9:3e117b89c705 | 128 | TFT.set_orientation(0); |
frankvnk | 9:3e117b89c705 | 129 | LCD_id = TFT.Read_ID(); |
frankvnk | 9:3e117b89c705 | 130 | TFT.locate(10,10); |
frankvnk | 10:d07f76421408 | 131 | printf("LCD: ILI%04X", LCD_id); |
frankvnk | 9:3e117b89c705 | 132 | wait(2); |
frankvnk | 9:3e117b89c705 | 133 | |
frankvnk | 9:3e117b89c705 | 134 | // RGB color wheel demo (cycle through all colors) |
frankvnk | 9:3e117b89c705 | 135 | TFT.cls(); |
frankvnk | 9:3e117b89c705 | 136 | TFT.foreground(Yellow); // set chars to yellow |
frankvnk | 9:3e117b89c705 | 137 | TFT.set_font((unsigned char*) Arial12x12); |
frankvnk | 9:3e117b89c705 | 138 | TFT.locate(10,10); |
frankvnk | 10:d07f76421408 | 139 | printf("RGB color wheel (2x)"); |
frankvnk | 9:3e117b89c705 | 140 | |
frankvnk | 9:3e117b89c705 | 141 | uint8_t r = 255, g = 0, b = 0, step = 1, i; |
frankvnk | 9:3e117b89c705 | 142 | for (i=0;i<2;i++) |
frankvnk | 9:3e117b89c705 | 143 | { |
frankvnk | 9:3e117b89c705 | 144 | for(;g<255;g+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FF0000 to FFFF00 : red to yellow |
frankvnk | 9:3e117b89c705 | 145 | for(;r>0;r-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FFFF00 to 00FF00 : yellow to green |
frankvnk | 9:3e117b89c705 | 146 | for(;b<255;b+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 00FF00 to 00FFFF : green to cyan |
frankvnk | 9:3e117b89c705 | 147 | for(;g>0;g-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 00FFFF to 0000FF : cyan to blue |
frankvnk | 9:3e117b89c705 | 148 | for(;r<255;r+=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from 0000FF to FF00FF : blue to purple |
frankvnk | 9:3e117b89c705 | 149 | for(;b>0;b-=step) {TFT.fillrect(70,110,100,100,RGB565CONVERT(r, g, b));} // Cycle from FF00FF to FF0000 : purple to red |
frankvnk | 9:3e117b89c705 | 150 | } |
frankvnk | 9:3e117b89c705 | 151 | wait(2); |
frankvnk | 9:3e117b89c705 | 152 | |
frankvnk | 9:3e117b89c705 | 153 | // Touchpanel demo |
frankvnk | 9:3e117b89c705 | 154 | TP.TouchPanel_Calibrate(); |
frankvnk | 9:3e117b89c705 | 155 | TFT.set_font((unsigned char*) Arial12x12); |
frankvnk | 9:3e117b89c705 | 156 | TFT.set_orientation(0); |
frankvnk | 16:784a071dec0e | 157 | |
frankvnk | 16:784a071dec0e | 158 | TFT.cls(); |
frankvnk | 16:784a071dec0e | 159 | TFT.locate(0,20); |
frankvnk | 16:784a071dec0e | 160 | // read calibration results |
frankvnk | 16:784a071dec0e | 161 | TP.GetCalibration(&matrix, &ScreenSample[0]); |
frankvnk | 16:784a071dec0e | 162 | printf("Read calibration results.\n"); |
frankvnk | 16:784a071dec0e | 163 | printf("matrix.An = %d\n", matrix.An); |
frankvnk | 16:784a071dec0e | 164 | printf("matrix.Bn = %d\n", matrix.Bn); |
frankvnk | 16:784a071dec0e | 165 | printf("matrix.Cn = %d\n", matrix.Cn); |
frankvnk | 16:784a071dec0e | 166 | printf("matrix.Dn = %d\n", matrix.Dn); |
frankvnk | 16:784a071dec0e | 167 | printf("matrix.En = %d\n", matrix.En); |
frankvnk | 16:784a071dec0e | 168 | printf("matrix.Fn = %d\n", matrix.Fn); |
frankvnk | 16:784a071dec0e | 169 | printf("matrix.Di = %d\n", matrix.Divider); |
frankvnk | 16:784a071dec0e | 170 | for (i=0;i<3;i++) |
frankvnk | 16:784a071dec0e | 171 | printf("sample x[%d] = %d\nsample y[%d] = %d\n", i, ScreenSample[i].x, i, ScreenSample[i].y); |
frankvnk | 16:784a071dec0e | 172 | // Write calibration results |
frankvnk | 16:784a071dec0e | 173 | printf("\nWrite calibration results...\n"); |
frankvnk | 16:784a071dec0e | 174 | TP.SetCalibration(&matrix, &ScreenSample[0]); |
frankvnk | 16:784a071dec0e | 175 | printf("Done.\nTouch panel to read again.\n"); |
frankvnk | 16:784a071dec0e | 176 | while(TP._tp_irq); |
frankvnk | 16:784a071dec0e | 177 | // read calibration results |
frankvnk | 16:784a071dec0e | 178 | TFT.cls(); |
frankvnk | 16:784a071dec0e | 179 | TFT.locate(0,20); |
frankvnk | 16:784a071dec0e | 180 | printf("Calibration results.\n\n"); |
frankvnk | 16:784a071dec0e | 181 | printf("matrix.An = %d\n", matrix.An); |
frankvnk | 16:784a071dec0e | 182 | printf("matrix.Bn = %d\n", matrix.Bn); |
frankvnk | 16:784a071dec0e | 183 | printf("matrix.Cn = %d\n", matrix.Cn); |
frankvnk | 16:784a071dec0e | 184 | printf("matrix.Dn = %d\n", matrix.Dn); |
frankvnk | 16:784a071dec0e | 185 | printf("matrix.En = %d\n", matrix.En); |
frankvnk | 16:784a071dec0e | 186 | printf("matrix.Fn = %d\n", matrix.Fn); |
frankvnk | 16:784a071dec0e | 187 | printf("matrix.Di = %d\n", matrix.Divider); |
frankvnk | 16:784a071dec0e | 188 | for (i=0;i<3;i++) |
frankvnk | 16:784a071dec0e | 189 | printf("sample x[%d] = %d\nsample y[%d] = %d\n", i, ScreenSample[i].x, i, ScreenSample[i].y); |
frankvnk | 16:784a071dec0e | 190 | |
frankvnk | 9:3e117b89c705 | 191 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 192 | printf(" X:"); |
frankvnk | 9:3e117b89c705 | 193 | TFT.locate(70,0); |
frankvnk | 10:d07f76421408 | 194 | printf(" Y:"); |
frankvnk | 9:3e117b89c705 | 195 | while (1) |
frankvnk | 9:3e117b89c705 | 196 | { |
frankvnk | 9:3e117b89c705 | 197 | if (!TP._tp_irq) |
frankvnk | 9:3e117b89c705 | 198 | { |
frankvnk | 15:5059751d2fa2 | 199 | if (TP.Read_Ads7843()) |
frankvnk | 9:3e117b89c705 | 200 | { |
frankvnk | 9:3e117b89c705 | 201 | TP.getDisplayPoint() ; |
frankvnk | 9:3e117b89c705 | 202 | TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue); |
frankvnk | 9:3e117b89c705 | 203 | TFT.locate(25,0); |
frankvnk | 10:d07f76421408 | 204 | printf("%03d",TP.display.x); |
frankvnk | 9:3e117b89c705 | 205 | TFT.locate(95,0); |
frankvnk | 10:d07f76421408 | 206 | printf("%03d",TP.display.y); |
frankvnk | 9:3e117b89c705 | 207 | // Touchscreen area is larger than LCD area. |
frankvnk | 9:3e117b89c705 | 208 | // We use the bottom area outside the LCD area to clear the screen (y value > 320). |
frankvnk | 9:3e117b89c705 | 209 | if (TP.display.y > 320) |
frankvnk | 9:3e117b89c705 | 210 | { |
frankvnk | 9:3e117b89c705 | 211 | TFT.cls(); |
frankvnk | 9:3e117b89c705 | 212 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 213 | printf(" X:"); |
frankvnk | 9:3e117b89c705 | 214 | TFT.locate(70,0); |
frankvnk | 10:d07f76421408 | 215 | printf(" Y:"); |
frankvnk | 9:3e117b89c705 | 216 | } |
frankvnk | 9:3e117b89c705 | 217 | } |
frankvnk | 9:3e117b89c705 | 218 | } |
frankvnk | 9:3e117b89c705 | 219 | } |
frankvnk | 9:3e117b89c705 | 220 | } |
frankvnk | 10:d07f76421408 | 221 | |
frankvnk | 10:d07f76421408 | 222 | /* |
frankvnk | 10:d07f76421408 | 223 | // ========================================================================================================= |
frankvnk | 10:d07f76421408 | 224 | // ================================================== TWO ================================================== |
frankvnk | 10:d07f76421408 | 225 | // ========================================================================================================= |
frankvnk | 10:d07f76421408 | 226 | |
frankvnk | 10:d07f76421408 | 227 | #include "stdio.h" |
frankvnk | 10:d07f76421408 | 228 | #include "mbed.h" |
frankvnk | 10:d07f76421408 | 229 | #include "SDFileSystem.h" |
frankvnk | 10:d07f76421408 | 230 | #include "Mini_DK.h" |
frankvnk | 10:d07f76421408 | 231 | |
frankvnk | 10:d07f76421408 | 232 | // SD card |
frankvnk | 10:d07f76421408 | 233 | SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd"); |
frankvnk | 10:d07f76421408 | 234 | // TFT -> mosi, miso, sclk, cs |
frankvnk | 10:d07f76421408 | 235 | SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT"); |
frankvnk | 10:d07f76421408 | 236 | // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT |
frankvnk | 10:d07f76421408 | 237 | TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT); |
frankvnk | 10:d07f76421408 | 238 | |
frankvnk | 10:d07f76421408 | 239 | int main() |
frankvnk | 10:d07f76421408 | 240 | { |
frankvnk | 10:d07f76421408 | 241 | TFT.background(Black); // set background to black |
frankvnk | 10:d07f76421408 | 242 | TFT.foreground(White); // set chars to white |
frankvnk | 10:d07f76421408 | 243 | |
frankvnk | 10:d07f76421408 | 244 | TFT.claim(stdout); // send stdout to the TFT display |
frankvnk | 15:5059751d2fa2 | 245 | // Disable stdout buffering, allows us to omit \n with printf. |
frankvnk | 15:5059751d2fa2 | 246 | // More info at http://www.cplusplus.com/reference/cstdio/setvbuf/ |
frankvnk | 15:5059751d2fa2 | 247 | setvbuf ( stdout , NULL , _IONBF , NULL ); |
frankvnk | 15:5059751d2fa2 | 248 | |
frankvnk | 10:d07f76421408 | 249 | TFT.cls(); |
frankvnk | 10:d07f76421408 | 250 | TFT.set_font((unsigned char*) Arial12x12); |
frankvnk | 10:d07f76421408 | 251 | TFT.set_orientation(1); |
frankvnk | 10:d07f76421408 | 252 | |
frankvnk | 10:d07f76421408 | 253 | DISABLE_LCD_MISO; |
frankvnk | 10:d07f76421408 | 254 | int dummy = TFT.Bitmap(0,0,"/sd/house.bmp"); |
frankvnk | 10:d07f76421408 | 255 | ENABLE_LCD_MISO; |
frankvnk | 10:d07f76421408 | 256 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 257 | printf("%02d",dummy); |
frankvnk | 10:d07f76421408 | 258 | } |
frankvnk | 10:d07f76421408 | 259 | */ |
frankvnk | 10:d07f76421408 | 260 | |
frankvnk | 10:d07f76421408 | 261 | /* |
frankvnk | 10:d07f76421408 | 262 | // ========================================================================================================= |
frankvnk | 10:d07f76421408 | 263 | // ================================================= THREE ================================================= |
frankvnk | 10:d07f76421408 | 264 | // ========================================================================================================= |
frankvnk | 10:d07f76421408 | 265 | |
frankvnk | 10:d07f76421408 | 266 | #include "stdio.h" |
frankvnk | 10:d07f76421408 | 267 | #include "mbed.h" |
frankvnk | 10:d07f76421408 | 268 | #include "SDFileSystem.h" |
frankvnk | 10:d07f76421408 | 269 | #include "Mini_DK.h" |
frankvnk | 10:d07f76421408 | 270 | |
frankvnk | 10:d07f76421408 | 271 | // SD card |
frankvnk | 10:d07f76421408 | 272 | SDFileSystem sd(SD_SDI, SD_SDO, SD_SCK, SD_CS, "sd"); |
frankvnk | 10:d07f76421408 | 273 | // TFT -> mosi, miso, sclk, cs |
frankvnk | 10:d07f76421408 | 274 | SPI_TFT TFT(LCD_SDI, LCD_SDO, LCD_SCK, LCD_CS,"TFT"); |
frankvnk | 10:d07f76421408 | 275 | // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT |
frankvnk | 10:d07f76421408 | 276 | TouchScreenADS7843 TP(TP_SDI ,TP_SDO ,TP_SCK ,TP_CS ,TP_IRQ, &TFT); |
frankvnk | 10:d07f76421408 | 277 | |
frankvnk | 10:d07f76421408 | 278 | |
frankvnk | 10:d07f76421408 | 279 | Timer timer; |
frankvnk | 10:d07f76421408 | 280 | |
frankvnk | 10:d07f76421408 | 281 | int main() |
frankvnk | 10:d07f76421408 | 282 | { |
frankvnk | 10:d07f76421408 | 283 | DISABLE_LCD_MISO; |
frankvnk | 10:d07f76421408 | 284 | TFT.background(Black); // set background to black |
frankvnk | 10:d07f76421408 | 285 | TFT.foreground(White); // set chars to white |
frankvnk | 10:d07f76421408 | 286 | |
frankvnk | 10:d07f76421408 | 287 | TFT.claim(stdout); // send stdout to the TFT display |
frankvnk | 15:5059751d2fa2 | 288 | // Disable stdout buffering, allows us to omit \n with printf. |
frankvnk | 15:5059751d2fa2 | 289 | // More info at http://www.cplusplus.com/reference/cstdio/setvbuf/ |
frankvnk | 15:5059751d2fa2 | 290 | setvbuf ( stdout , NULL , _IONBF , NULL ); |
frankvnk | 15:5059751d2fa2 | 291 | |
frankvnk | 10:d07f76421408 | 292 | TFT.cls(); |
frankvnk | 10:d07f76421408 | 293 | TFT.set_font((unsigned char*) Arial12x12); |
frankvnk | 10:d07f76421408 | 294 | TFT.set_orientation(1); |
frankvnk | 10:d07f76421408 | 295 | |
frankvnk | 10:d07f76421408 | 296 | TFT.locate(0,200); |
frankvnk | 10:d07f76421408 | 297 | printf("Loading from SD..."); |
frankvnk | 10:d07f76421408 | 298 | TFT.Bitmap(0,0,"/sd/house.bmp"); |
frankvnk | 10:d07f76421408 | 299 | |
frankvnk | 10:d07f76421408 | 300 | TFT.locate(0,0); |
frankvnk | 10:d07f76421408 | 301 | printf("Copying to flash..."); |
frankvnk | 10:d07f76421408 | 302 | TFT.fileToFlash("/sd/house.bmp"); |
frankvnk | 10:d07f76421408 | 303 | TFT.locate(0,40); |
frankvnk | 10:d07f76421408 | 304 | printf("Done: CLS in 2 seconds"); |
frankvnk | 10:d07f76421408 | 305 | wait(2); |
frankvnk | 10:d07f76421408 | 306 | TFT.backgroundImage(false); |
frankvnk | 10:d07f76421408 | 307 | TFT.cls(); |
frankvnk | 10:d07f76421408 | 308 | wait(2); |
frankvnk | 10:d07f76421408 | 309 | TFT.backgroundImage(true); |
frankvnk | 10:d07f76421408 | 310 | |
frankvnk | 10:d07f76421408 | 311 | |
frankvnk | 10:d07f76421408 | 312 | timer.reset(); |
frankvnk | 10:d07f76421408 | 313 | timer.start(); |
frankvnk | 10:d07f76421408 | 314 | TFT.cls(); |
frankvnk | 10:d07f76421408 | 315 | timer.stop(); |
frankvnk | 10:d07f76421408 | 316 | TFT.foreground(Black); |
frankvnk | 10:d07f76421408 | 317 | TFT.locate(0,200); |
frankvnk | 10:d07f76421408 | 318 | printf("Wrote background in %d ms",timer.read_ms()); |
frankvnk | 10:d07f76421408 | 319 | TFT.foreground(Black); |
frankvnk | 10:d07f76421408 | 320 | |
frankvnk | 10:d07f76421408 | 321 | TFT.set_orientation(3); |
frankvnk | 10:d07f76421408 | 322 | TFT.locate(0,200); |
frankvnk | 10:d07f76421408 | 323 | printf("Wrote background in %d ms",timer.read_ms()); |
frankvnk | 10:d07f76421408 | 324 | |
frankvnk | 10:d07f76421408 | 325 | wait(5); |
frankvnk | 10:d07f76421408 | 326 | TFT.cls(); |
frankvnk | 10:d07f76421408 | 327 | TFT.set_font((unsigned char*) Neu42x35); |
frankvnk | 10:d07f76421408 | 328 | TFT.locate(0,50); |
frankvnk | 10:d07f76421408 | 329 | printf("Orient = 3"); |
frankvnk | 10:d07f76421408 | 330 | TFT.set_orientation(0); |
frankvnk | 10:d07f76421408 | 331 | TFT.locate(0,50); |
frankvnk | 10:d07f76421408 | 332 | printf("Orient = 0"); |
frankvnk | 10:d07f76421408 | 333 | wait(5); |
frankvnk | 10:d07f76421408 | 334 | |
frankvnk | 10:d07f76421408 | 335 | TFT.set_orientation(0); |
frankvnk | 10:d07f76421408 | 336 | TFT.cls(); |
frankvnk | 10:d07f76421408 | 337 | TFT.locate(0,50); |
frankvnk | 10:d07f76421408 | 338 | printf("Orient = 0"); |
frankvnk | 10:d07f76421408 | 339 | |
frankvnk | 10:d07f76421408 | 340 | while(1); |
frankvnk | 10:d07f76421408 | 341 | } |
frankvnk | 15:5059751d2fa2 | 342 | */ |