Paint for the FRDM-KL25Z

Dependencies:   mbed TFT_fonts SPI_TFT_ILI9341

Committer:
ecowboy
Date:
Mon Jan 07 06:40:27 2019 +0000
Revision:
0:42ec9a44bc24
Child:
1:33506fcfdd95
Initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ecowboy 0:42ec9a44bc24 1 #include "mbed.h"
ecowboy 0:42ec9a44bc24 2 #include "ILI932x.h"
ecowboy 0:42ec9a44bc24 3
ecowboy 0:42ec9a44bc24 4 //#include "SDFileSystem.h"
ecowboy 0:42ec9a44bc24 5 //#include "SPI.h"
ecowboy 0:42ec9a44bc24 6 #include "BMP565.h"
ecowboy 0:42ec9a44bc24 7 #include "Arial12x12.h"
ecowboy 0:42ec9a44bc24 8 #include "stdio.h"
ecowboy 0:42ec9a44bc24 9 #include "touch.h"
ecowboy 0:42ec9a44bc24 10
ecowboy 0:42ec9a44bc24 11 // For better pressure precision, we need to know the resistance
ecowboy 0:42ec9a44bc24 12 // between X+ and X- Use any multimeter to read it
ecowboy 0:42ec9a44bc24 13 // The 2.8" TFT Touch shield has 300 ohms across the X plate
ecowboy 0:42ec9a44bc24 14
ecowboy 0:42ec9a44bc24 15 //Measured ADC values for (0,0) and (210-1,320-1)
ecowboy 0:42ec9a44bc24 16 //TS_MINX corresponds to ADC value when X = 0
ecowboy 0:42ec9a44bc24 17 //TS_MINY corresponds to ADC value when Y = 0
ecowboy 0:42ec9a44bc24 18 //TS_MAXX corresponds to ADC value when X = 240 -1
ecowboy 0:42ec9a44bc24 19 //TS_MAXY corresponds to ADC value when Y = 320 -1
ecowboy 0:42ec9a44bc24 20
ecowboy 0:42ec9a44bc24 21 #define TS_MINX 116*2
ecowboy 0:42ec9a44bc24 22 #define TS_MAXX 890*2
ecowboy 0:42ec9a44bc24 23 #define TS_MINY 83*2
ecowboy 0:42ec9a44bc24 24 #define TS_MAXY 913*2
ecowboy 0:42ec9a44bc24 25
ecowboy 0:42ec9a44bc24 26 #define PIN_YP PTB3 // must be an analog pin, use "An" notation!
ecowboy 0:42ec9a44bc24 27 #define PIN_XM PTB2 // must be an analog pin, use "An" notation!
ecowboy 0:42ec9a44bc24 28 #define PIN_YM PTD5 // can be a digital pin
ecowboy 0:42ec9a44bc24 29 #define PIN_XP PTA13 // can be a digital pin
ecowboy 0:42ec9a44bc24 30
ecowboy 0:42ec9a44bc24 31 #define PIN_CS_TFT PTB3
ecowboy 0:42ec9a44bc24 32 #define PIN_RST_TFT PTC2
ecowboy 0:42ec9a44bc24 33 #define PIN_DC_TFT PTB2
ecowboy 0:42ec9a44bc24 34 #define PIN_WR_TFT PTB1
ecowboy 0:42ec9a44bc24 35 #define PIN_RD_TFT PTB0
ecowboy 0:42ec9a44bc24 36
ecowboy 0:42ec9a44bc24 37 #if 0
ecowboy 0:42ec9a44bc24 38 #define PIN_CS_SD PTD0
ecowboy 0:42ec9a44bc24 39 #define PIN_MOSI PTD2
ecowboy 0:42ec9a44bc24 40 #define PIN_MISO PTD3
ecowboy 0:42ec9a44bc24 41 #define PIN_SCLK PTD1
ecowboy 0:42ec9a44bc24 42 #endif
ecowboy 0:42ec9a44bc24 43
ecowboy 0:42ec9a44bc24 44 #define PIN_CS_TSC PTD0
ecowboy 0:42ec9a44bc24 45 #define PIN_MOSI PTD2
ecowboy 0:42ec9a44bc24 46 #define PIN_MISO PTD3
ecowboy 0:42ec9a44bc24 47 #define PIN_SCLK PTD1
ecowboy 0:42ec9a44bc24 48
ecowboy 0:42ec9a44bc24 49 PinName dataBus[] = {PTA13,PTD5,PTD4,PTA12,PTA4,PTA5,PTC8,PTC9};
ecowboy 0:42ec9a44bc24 50
ecowboy 0:42ec9a44bc24 51 ILI932x TFT(BUS_8, dataBus, PIN_CS_TFT, PIN_RST_TFT, PIN_DC_TFT, PIN_WR_TFT, PIN_RD_TFT, "TFT", 240, 320);
ecowboy 0:42ec9a44bc24 52
ecowboy 0:42ec9a44bc24 53 //SDFileSystem sd(PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_SD, "sd");
ecowboy 0:42ec9a44bc24 54
ecowboy 0:42ec9a44bc24 55 // Paint application - Demonstate both TFT and Touch Screen
ecowboy 0:42ec9a44bc24 56 int ColorPaletteHigh = 30;
ecowboy 0:42ec9a44bc24 57 int color = White; //Paint brush color
ecowboy 0:42ec9a44bc24 58 unsigned int colors[8] = {Red, Green, Blue, Cyan, Yellow, Black, White, LightGrey};
ecowboy 0:42ec9a44bc24 59
ecowboy 0:42ec9a44bc24 60
ecowboy 0:42ec9a44bc24 61 TouchScreen tft(PIN_XP, PIN_YP, PIN_XM, PIN_YM); //init TouchScreen port pins
ecowboy 0:42ec9a44bc24 62
ecowboy 0:42ec9a44bc24 63
ecowboy 0:42ec9a44bc24 64 int main(){
ecowboy 0:42ec9a44bc24 65
ecowboy 0:42ec9a44bc24 66 TFT.claim(stdout); // send stdout to the TFT display
ecowboy 0:42ec9a44bc24 67 TFT.set_orientation(0);
ecowboy 0:42ec9a44bc24 68 //TFT.Bitmap(28,90,265,65,p1);
ecowboy 0:42ec9a44bc24 69 //wait(1);
ecowboy 0:42ec9a44bc24 70 //TFT.cls();
ecowboy 0:42ec9a44bc24 71 TFT.set_font((unsigned char*) Arial12x12);
ecowboy 0:42ec9a44bc24 72 TFT.foreground(Cyan); // set chars to Cyan
ecowboy 0:42ec9a44bc24 73 TFT.locate(80,90);
ecowboy 0:42ec9a44bc24 74 //printf("Initializing z...\r\n");
ecowboy 0:42ec9a44bc24 75 for(int i = 0; i<8; i++){
ecowboy 0:42ec9a44bc24 76 TFT.fillrect(i*30, 0, 30*(i+1), ColorPaletteHigh, colors[i]);
ecowboy 0:42ec9a44bc24 77 }
ecowboy 0:42ec9a44bc24 78 int zz=0;
ecowboy 0:42ec9a44bc24 79 while(1){
ecowboy 0:42ec9a44bc24 80 zz = zz + 1;
ecowboy 0:42ec9a44bc24 81 // a point object holds x y and z coordinates.
ecowboy 0:42ec9a44bc24 82 //Point p = tft.getPoint(p);
ecowboy 0:42ec9a44bc24 83 Point c(100,120,25);
ecowboy 0:42ec9a44bc24 84 //map the ADC value read to into pixel co-ordinates
ecowboy 0:42ec9a44bc24 85 //p.x = map(p.x, TS_MINX, TS_MAXX, 0, 240);
ecowboy 0:42ec9a44bc24 86 //p.y = map(p.y, TS_MINY, TS_MAXY, 0, 320);
ecowboy 0:42ec9a44bc24 87
ecowboy 0:42ec9a44bc24 88 // we have some minimum pressure we consider 'valid'
ecowboy 0:42ec9a44bc24 89 // pressure of 0 means no pressing!
ecowboy 0:42ec9a44bc24 90 TFT.locate(60,90);
ecowboy 0:42ec9a44bc24 91 printf("z = %d \r\n", c.x);
ecowboy 0:42ec9a44bc24 92 TFT.locate(60,120);
ecowboy 0:42ec9a44bc24 93 printf("Initializing z...%d \r\n",zz);
ecowboy 0:42ec9a44bc24 94 /*if (p.z > PRESSURE) {
ecowboy 0:42ec9a44bc24 95 // Detect paint brush color change
ecowboy 0:42ec9a44bc24 96 if(p.y < ColorPaletteHigh+2){
ecowboy 0:42ec9a44bc24 97 color = colors[p.x/30];
ecowboy 0:42ec9a44bc24 98 }else{
ecowboy 0:42ec9a44bc24 99 TFT.fillcircle(p.x,p.y,2,color);
ecowboy 0:42ec9a44bc24 100 }
ecowboy 0:42ec9a44bc24 101 }*/
ecowboy 0:42ec9a44bc24 102 }
ecowboy 0:42ec9a44bc24 103 }