Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
TouchPanel.cpp@2:a31069f27cd5, 2013-09-14 (annotated)
- Committer:
- vcraciun
- Date:
- Sat Sep 14 13:03:33 2013 +0000
- Revision:
- 2:a31069f27cd5
- Parent:
- 1:e7ae315a1ceb
added experimental calibration method
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| vcraciun | 0:55a3f0eda74d | 1 | #include "TouchPanel.h" |
| vcraciun | 0:55a3f0eda74d | 2 | |
| vcraciun | 2:a31069f27cd5 | 3 | #define DEBUG_TOUCH_CALIBRATED //chestia asta ar trebui sa afiseze punctele de calibrare a touchului pe seriala |
| vcraciun | 2:a31069f27cd5 | 4 | |
| vcraciun | 0:55a3f0eda74d | 5 | Matrix matrix ; |
| vcraciun | 0:55a3f0eda74d | 6 | Coordinate display ; |
| vcraciun | 0:55a3f0eda74d | 7 | Coordinate ScreenSample[3]; |
| vcraciun | 0:55a3f0eda74d | 8 | Coordinate DisplaySample[3] = {{30, 45}, |
| vcraciun | 0:55a3f0eda74d | 9 | {250, 70}, |
| vcraciun | 0:55a3f0eda74d | 10 | {160,210}}; |
| vcraciun | 2:a31069f27cd5 | 11 | |
| vcraciun | 2:a31069f27cd5 | 12 | extern Serial debug; |
| vcraciun | 0:55a3f0eda74d | 13 | |
| vcraciun | 0:55a3f0eda74d | 14 | Touch::Touch(SSD1289_LCD *lcd,SPI *spi, DigitalOut *cs, DigitalIn *irq) |
| vcraciun | 0:55a3f0eda74d | 15 | { |
| vcraciun | 0:55a3f0eda74d | 16 | _cs=cs; |
| vcraciun | 0:55a3f0eda74d | 17 | *_cs=1; |
| vcraciun | 0:55a3f0eda74d | 18 | _spi=spi; |
| vcraciun | 0:55a3f0eda74d | 19 | _irq=irq; |
| vcraciun | 0:55a3f0eda74d | 20 | _lcd=lcd; |
| vcraciun | 0:55a3f0eda74d | 21 | } |
| vcraciun | 0:55a3f0eda74d | 22 | |
| vcraciun | 0:55a3f0eda74d | 23 | void Touch::InitializeTouch() |
| vcraciun | 0:55a3f0eda74d | 24 | { |
| vcraciun | 0:55a3f0eda74d | 25 | _spi->format(8,0); |
| vcraciun | 0:55a3f0eda74d | 26 | _spi->frequency(100000); |
| vcraciun | 0:55a3f0eda74d | 27 | *_cs = 1; |
| vcraciun | 0:55a3f0eda74d | 28 | } |
| vcraciun | 0:55a3f0eda74d | 29 | |
| vcraciun | 1:e7ae315a1ceb | 30 | int Touch::RDAD(void) |
| vcraciun | 0:55a3f0eda74d | 31 | { |
| vcraciun | 0:55a3f0eda74d | 32 | unsigned short buf,temp; |
| vcraciun | 0:55a3f0eda74d | 33 | |
| vcraciun | 0:55a3f0eda74d | 34 | temp=_spi->write(0); |
| vcraciun | 0:55a3f0eda74d | 35 | buf=temp<<8; |
| vcraciun | 0:55a3f0eda74d | 36 | temp=_spi->write(0); |
| vcraciun | 0:55a3f0eda74d | 37 | buf|=temp; |
| vcraciun | 0:55a3f0eda74d | 38 | buf>>=3; |
| vcraciun | 0:55a3f0eda74d | 39 | buf&=0xFFF; |
| vcraciun | 0:55a3f0eda74d | 40 | return buf; |
| vcraciun | 0:55a3f0eda74d | 41 | } |
| vcraciun | 0:55a3f0eda74d | 42 | |
| vcraciun | 1:e7ae315a1ceb | 43 | int Touch::ReadX(void) |
| vcraciun | 0:55a3f0eda74d | 44 | { |
| vcraciun | 0:55a3f0eda74d | 45 | int i; |
| vcraciun | 0:55a3f0eda74d | 46 | *_cs=0; |
| vcraciun | 0:55a3f0eda74d | 47 | wait(0.000001); |
| vcraciun | 0:55a3f0eda74d | 48 | _spi->write(CHX); |
| vcraciun | 0:55a3f0eda74d | 49 | wait(0.000001); |
| vcraciun | 1:e7ae315a1ceb | 50 | i=RDAD(); |
| vcraciun | 0:55a3f0eda74d | 51 | *_cs=1; |
| vcraciun | 0:55a3f0eda74d | 52 | return i; |
| vcraciun | 0:55a3f0eda74d | 53 | } |
| vcraciun | 0:55a3f0eda74d | 54 | |
| vcraciun | 1:e7ae315a1ceb | 55 | int Touch::ReadY(void) |
| vcraciun | 0:55a3f0eda74d | 56 | { |
| vcraciun | 0:55a3f0eda74d | 57 | int i; |
| vcraciun | 0:55a3f0eda74d | 58 | *_cs=0; |
| vcraciun | 0:55a3f0eda74d | 59 | wait(0.000001); |
| vcraciun | 0:55a3f0eda74d | 60 | _spi->write(CHY); |
| vcraciun | 0:55a3f0eda74d | 61 | wait(0.000001); |
| vcraciun | 1:e7ae315a1ceb | 62 | i=RDAD(); |
| vcraciun | 0:55a3f0eda74d | 63 | *_cs=1; |
| vcraciun | 0:55a3f0eda74d | 64 | return i; |
| vcraciun | 0:55a3f0eda74d | 65 | } |
| vcraciun | 0:55a3f0eda74d | 66 | |
| vcraciun | 1:e7ae315a1ceb | 67 | void Touch::GetAdXY(int *x,int *y) |
| vcraciun | 0:55a3f0eda74d | 68 | { |
| vcraciun | 0:55a3f0eda74d | 69 | int adx,ady; |
| vcraciun | 1:e7ae315a1ceb | 70 | adx=ReadX(); |
| vcraciun | 0:55a3f0eda74d | 71 | wait(0.000001); |
| vcraciun | 1:e7ae315a1ceb | 72 | ady=ReadY(); |
| vcraciun | 0:55a3f0eda74d | 73 | *x=adx; |
| vcraciun | 0:55a3f0eda74d | 74 | *y=ady; |
| vcraciun | 0:55a3f0eda74d | 75 | } |
| vcraciun | 0:55a3f0eda74d | 76 | |
| vcraciun | 1:e7ae315a1ceb | 77 | void Touch::DrawPoint(int Xpos,int Ypos) |
| vcraciun | 0:55a3f0eda74d | 78 | { |
| vcraciun | 0:55a3f0eda74d | 79 | _lcd->DrawPixel(Xpos,Ypos,COLOR_BLUE); |
| vcraciun | 0:55a3f0eda74d | 80 | _lcd->DrawPixel(Xpos+1,Ypos,COLOR_BLUE); |
| vcraciun | 0:55a3f0eda74d | 81 | _lcd->DrawPixel(Xpos,Ypos+1,COLOR_BLUE); |
| vcraciun | 0:55a3f0eda74d | 82 | _lcd->DrawPixel(Xpos+1,Ypos+1,COLOR_BLUE); |
| vcraciun | 0:55a3f0eda74d | 83 | } |
| vcraciun | 0:55a3f0eda74d | 84 | |
| vcraciun | 0:55a3f0eda74d | 85 | void Touch::DrawCross(int Xpos,int Ypos) |
| vcraciun | 0:55a3f0eda74d | 86 | { |
| vcraciun | 0:55a3f0eda74d | 87 | _lcd->DrawLine(Xpos-15,Ypos,Xpos-2,Ypos,COLOR_WHITE); |
| vcraciun | 0:55a3f0eda74d | 88 | _lcd->DrawLine(Xpos+2,Ypos,Xpos+15,Ypos,COLOR_WHITE); |
| vcraciun | 0:55a3f0eda74d | 89 | _lcd->DrawLine(Xpos,Ypos-15,Xpos,Ypos-2,COLOR_WHITE); |
| vcraciun | 0:55a3f0eda74d | 90 | _lcd->DrawLine(Xpos,Ypos+2,Xpos,Ypos+15,COLOR_WHITE); |
| vcraciun | 0:55a3f0eda74d | 91 | |
| vcraciun | 0:55a3f0eda74d | 92 | _lcd->DrawLine(Xpos-15,Ypos+15,Xpos-7,Ypos+15,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 93 | _lcd->DrawLine(Xpos-15,Ypos+7,Xpos-15,Ypos+15,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 94 | |
| vcraciun | 0:55a3f0eda74d | 95 | _lcd->DrawLine(Xpos-15,Ypos-15,Xpos-7,Ypos-15,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 96 | _lcd->DrawLine(Xpos-15,Ypos-7,Xpos-15,Ypos-15,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 97 | |
| vcraciun | 0:55a3f0eda74d | 98 | _lcd->DrawLine(Xpos+7,Ypos+15,Xpos+15,Ypos+15,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 99 | _lcd->DrawLine(Xpos+15,Ypos+7,Xpos+15,Ypos+15,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 100 | |
| vcraciun | 0:55a3f0eda74d | 101 | _lcd->DrawLine(Xpos+7,Ypos-15,Xpos+15,Ypos-15,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 102 | _lcd->DrawLine(Xpos+15,Ypos-15,Xpos+15,Ypos-7,RGB(184,158,131)); |
| vcraciun | 0:55a3f0eda74d | 103 | } |
| vcraciun | 0:55a3f0eda74d | 104 | |
| vcraciun | 1:e7ae315a1ceb | 105 | Coordinate *Touch::ReadAds7846(void) |
| vcraciun | 0:55a3f0eda74d | 106 | { |
| vcraciun | 0:55a3f0eda74d | 107 | static Coordinate screen; |
| vcraciun | 0:55a3f0eda74d | 108 | int m0,m1,m2,TP_X[1],TP_Y[1],temp[3]; |
| vcraciun | 0:55a3f0eda74d | 109 | uint8_t count=0; |
| vcraciun | 0:55a3f0eda74d | 110 | int buffer[2][9]={{0},{0}}; |
| vcraciun | 0:55a3f0eda74d | 111 | |
| vcraciun | 0:55a3f0eda74d | 112 | do |
| vcraciun | 0:55a3f0eda74d | 113 | { |
| vcraciun | 1:e7ae315a1ceb | 114 | GetAdXY(TP_X,TP_Y); |
| vcraciun | 0:55a3f0eda74d | 115 | buffer[0][count]=TP_X[0]; |
| vcraciun | 0:55a3f0eda74d | 116 | buffer[1][count]=TP_Y[0]; |
| vcraciun | 0:55a3f0eda74d | 117 | count++; |
| vcraciun | 0:55a3f0eda74d | 118 | } |
| vcraciun | 0:55a3f0eda74d | 119 | |
| vcraciun | 0:55a3f0eda74d | 120 | while((!_irq->read()) && count<9) |
| vcraciun | 0:55a3f0eda74d | 121 | ; |
| vcraciun | 0:55a3f0eda74d | 122 | |
| vcraciun | 0:55a3f0eda74d | 123 | if(count==9) |
| vcraciun | 0:55a3f0eda74d | 124 | { |
| vcraciun | 0:55a3f0eda74d | 125 | temp[0]=(buffer[0][0]+buffer[0][1]+buffer[0][2])/3; |
| vcraciun | 0:55a3f0eda74d | 126 | temp[1]=(buffer[0][3]+buffer[0][4]+buffer[0][5])/3; |
| vcraciun | 0:55a3f0eda74d | 127 | temp[2]=(buffer[0][6]+buffer[0][7]+buffer[0][8])/3; |
| vcraciun | 0:55a3f0eda74d | 128 | |
| vcraciun | 0:55a3f0eda74d | 129 | m0=temp[0]-temp[1]; |
| vcraciun | 0:55a3f0eda74d | 130 | m1=temp[1]-temp[2]; |
| vcraciun | 0:55a3f0eda74d | 131 | m2=temp[2]-temp[0]; |
| vcraciun | 0:55a3f0eda74d | 132 | |
| vcraciun | 0:55a3f0eda74d | 133 | m0=m0>0?m0:(-m0); |
| vcraciun | 0:55a3f0eda74d | 134 | m1=m1>0?m1:(-m1); |
| vcraciun | 0:55a3f0eda74d | 135 | m2=m2>0?m2:(-m2); |
| vcraciun | 0:55a3f0eda74d | 136 | |
| vcraciun | 0:55a3f0eda74d | 137 | if( m0>THRESHOLD && m1>THRESHOLD && m2>THRESHOLD ) |
| vcraciun | 0:55a3f0eda74d | 138 | return 0; |
| vcraciun | 0:55a3f0eda74d | 139 | |
| vcraciun | 0:55a3f0eda74d | 140 | if(m0<m1) |
| vcraciun | 0:55a3f0eda74d | 141 | { |
| vcraciun | 0:55a3f0eda74d | 142 | if(m2<m0) |
| vcraciun | 0:55a3f0eda74d | 143 | screen.x=(temp[0]+temp[2])/2; |
| vcraciun | 0:55a3f0eda74d | 144 | else |
| vcraciun | 0:55a3f0eda74d | 145 | screen.x=(temp[0]+temp[1])/2; |
| vcraciun | 0:55a3f0eda74d | 146 | } |
| vcraciun | 0:55a3f0eda74d | 147 | else if(m2<m1) |
| vcraciun | 0:55a3f0eda74d | 148 | screen.x=(temp[0]+temp[2])/2; |
| vcraciun | 0:55a3f0eda74d | 149 | else |
| vcraciun | 0:55a3f0eda74d | 150 | screen.x=(temp[1]+temp[2])/2; |
| vcraciun | 0:55a3f0eda74d | 151 | |
| vcraciun | 0:55a3f0eda74d | 152 | temp[0]=(buffer[1][0]+buffer[1][1]+buffer[1][2])/3; |
| vcraciun | 0:55a3f0eda74d | 153 | temp[1]=(buffer[1][3]+buffer[1][4]+buffer[1][5])/3; |
| vcraciun | 0:55a3f0eda74d | 154 | temp[2]=(buffer[1][6]+buffer[1][7]+buffer[1][8])/3; |
| vcraciun | 0:55a3f0eda74d | 155 | |
| vcraciun | 0:55a3f0eda74d | 156 | m0=temp[0]-temp[1]; |
| vcraciun | 0:55a3f0eda74d | 157 | m1=temp[1]-temp[2]; |
| vcraciun | 0:55a3f0eda74d | 158 | m2=temp[2]-temp[0]; |
| vcraciun | 0:55a3f0eda74d | 159 | |
| vcraciun | 0:55a3f0eda74d | 160 | m0=m0>0?m0:(-m0); |
| vcraciun | 0:55a3f0eda74d | 161 | m1=m1>0?m1:(-m1); |
| vcraciun | 0:55a3f0eda74d | 162 | m2=m2>0?m2:(-m2); |
| vcraciun | 0:55a3f0eda74d | 163 | |
| vcraciun | 0:55a3f0eda74d | 164 | if(m0>THRESHOLD&&m1>THRESHOLD&&m2>THRESHOLD) |
| vcraciun | 0:55a3f0eda74d | 165 | return 0; |
| vcraciun | 0:55a3f0eda74d | 166 | |
| vcraciun | 0:55a3f0eda74d | 167 | if(m0<m1) |
| vcraciun | 0:55a3f0eda74d | 168 | { |
| vcraciun | 0:55a3f0eda74d | 169 | if(m2<m0) |
| vcraciun | 0:55a3f0eda74d | 170 | screen.y=(temp[0]+temp[2])/2; |
| vcraciun | 0:55a3f0eda74d | 171 | else |
| vcraciun | 0:55a3f0eda74d | 172 | screen.y=(temp[0]+temp[1])/2; |
| vcraciun | 0:55a3f0eda74d | 173 | } |
| vcraciun | 0:55a3f0eda74d | 174 | else if(m2<m1) |
| vcraciun | 0:55a3f0eda74d | 175 | screen.y=(temp[0]+temp[2])/2; |
| vcraciun | 0:55a3f0eda74d | 176 | else |
| vcraciun | 0:55a3f0eda74d | 177 | screen.y=(temp[1]+temp[2])/2; |
| vcraciun | 0:55a3f0eda74d | 178 | |
| vcraciun | 0:55a3f0eda74d | 179 | return &screen; |
| vcraciun | 0:55a3f0eda74d | 180 | } |
| vcraciun | 0:55a3f0eda74d | 181 | return 0; |
| vcraciun | 0:55a3f0eda74d | 182 | } |
| vcraciun | 0:55a3f0eda74d | 183 | |
| vcraciun | 0:55a3f0eda74d | 184 | bool Touch::setCalibrationMatrix( Coordinate * displayPtr, Coordinate * screenPtr, Matrix * matrixPtr) |
| vcraciun | 0:55a3f0eda74d | 185 | { |
| vcraciun | 0:55a3f0eda74d | 186 | bool retTHRESHOLD = true ; |
| vcraciun | 0:55a3f0eda74d | 187 | |
| vcraciun | 0:55a3f0eda74d | 188 | matrixPtr->Divider = ((screenPtr[0].x - screenPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) - ((screenPtr[1].x - screenPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ; |
| vcraciun | 0:55a3f0eda74d | 189 | if( matrixPtr->Divider == 0 ) |
| vcraciun | 0:55a3f0eda74d | 190 | { |
| vcraciun | 0:55a3f0eda74d | 191 | retTHRESHOLD = false; |
| vcraciun | 0:55a3f0eda74d | 192 | } |
| vcraciun | 0:55a3f0eda74d | 193 | else |
| vcraciun | 0:55a3f0eda74d | 194 | { |
| vcraciun | 0:55a3f0eda74d | 195 | matrixPtr->An = ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].y - screenPtr[2].y)) - ((displayPtr[1].x - displayPtr[2].x) * (screenPtr[0].y - screenPtr[2].y)) ; |
| vcraciun | 0:55a3f0eda74d | 196 | matrixPtr->Bn = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].x - displayPtr[2].x)) - ((displayPtr[0].x - displayPtr[2].x) * (screenPtr[1].x - screenPtr[2].x)) ; |
| vcraciun | 0:55a3f0eda74d | 197 | matrixPtr->Cn = (screenPtr[2].x * displayPtr[1].x - screenPtr[1].x * displayPtr[2].x) * screenPtr[0].y + (screenPtr[0].x * displayPtr[2].x - screenPtr[2].x * displayPtr[0].x) * screenPtr[1].y + (screenPtr[1].x * displayPtr[0].x - screenPtr[0].x * displayPtr[1].x) * screenPtr[2].y ; |
| vcraciun | 0:55a3f0eda74d | 198 | matrixPtr->Dn = ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].y - screenPtr[2].y)) - ((displayPtr[1].y - displayPtr[2].y) * (screenPtr[0].y - screenPtr[2].y)) ; |
| vcraciun | 0:55a3f0eda74d | 199 | matrixPtr->En = ((screenPtr[0].x - screenPtr[2].x) * (displayPtr[1].y - displayPtr[2].y)) - ((displayPtr[0].y - displayPtr[2].y) * (screenPtr[1].x - screenPtr[2].x)) ; |
| vcraciun | 0:55a3f0eda74d | 200 | matrixPtr->Fn = (screenPtr[2].x * displayPtr[1].y - screenPtr[1].x * displayPtr[2].y) * screenPtr[0].y + (screenPtr[0].x * displayPtr[2].y - screenPtr[2].x * displayPtr[0].y) * screenPtr[1].y + (screenPtr[1].x * displayPtr[0].y - screenPtr[0].x * displayPtr[1].y) * screenPtr[2].y ; |
| vcraciun | 0:55a3f0eda74d | 201 | } |
| vcraciun | 0:55a3f0eda74d | 202 | return( retTHRESHOLD ) ; |
| vcraciun | 0:55a3f0eda74d | 203 | } |
| vcraciun | 0:55a3f0eda74d | 204 | |
| vcraciun | 2:a31069f27cd5 | 205 | bool Touch::getDisplayPoint(Coordinate * displayPtr,Coordinate * screenPtr,Matrix * matrixPtr ) |
| vcraciun | 2:a31069f27cd5 | 206 | { |
| vcraciun | 2:a31069f27cd5 | 207 | bool retTHRESHOLD =true ; |
| vcraciun | 2:a31069f27cd5 | 208 | |
| vcraciun | 2:a31069f27cd5 | 209 | if( matrixPtr->Divider != 0 ) |
| vcraciun | 2:a31069f27cd5 | 210 | { |
| vcraciun | 2:a31069f27cd5 | 211 | displayPtr->x = ( (matrixPtr->An * screenPtr->x) + (matrixPtr->Bn * screenPtr->y) + matrixPtr->Cn ) / matrixPtr->Divider ; |
| vcraciun | 2:a31069f27cd5 | 212 | displayPtr->y = ( (matrixPtr->Dn * screenPtr->x) + (matrixPtr->En * screenPtr->y) + matrixPtr->Fn ) / matrixPtr->Divider ; |
| vcraciun | 2:a31069f27cd5 | 213 | } |
| vcraciun | 2:a31069f27cd5 | 214 | else |
| vcraciun | 2:a31069f27cd5 | 215 | { |
| vcraciun | 2:a31069f27cd5 | 216 | retTHRESHOLD = false; |
| vcraciun | 2:a31069f27cd5 | 217 | } |
| vcraciun | 2:a31069f27cd5 | 218 | |
| vcraciun | 2:a31069f27cd5 | 219 | return(retTHRESHOLD); |
| vcraciun | 2:a31069f27cd5 | 220 | } |
| vcraciun | 2:a31069f27cd5 | 221 | |
| vcraciun | 2:a31069f27cd5 | 222 | |
| vcraciun | 2:a31069f27cd5 | 223 | void Touch::TouchPanelCalibrate(void) |
| vcraciun | 0:55a3f0eda74d | 224 | { |
| vcraciun | 0:55a3f0eda74d | 225 | uint8_t i; |
| vcraciun | 0:55a3f0eda74d | 226 | Coordinate * Ptr; |
| vcraciun | 0:55a3f0eda74d | 227 | |
| vcraciun | 0:55a3f0eda74d | 228 | for(i=0;i<3;i++) |
| vcraciun | 0:55a3f0eda74d | 229 | { |
| vcraciun | 0:55a3f0eda74d | 230 | _lcd->ClearScreen(); |
| vcraciun | 0:55a3f0eda74d | 231 | _lcd->SetFont( &Font8x16 ); |
| vcraciun | 0:55a3f0eda74d | 232 | _lcd->Print("Calibrare Touch-Screen",CENTER,10,COLOR_WHITE,COLOR_BLACK,0); |
| vcraciun | 0:55a3f0eda74d | 233 | wait(0.3); |
| vcraciun | 0:55a3f0eda74d | 234 | DrawCross(DisplaySample[i].x,DisplaySample[i].y); |
| vcraciun | 0:55a3f0eda74d | 235 | do |
| vcraciun | 0:55a3f0eda74d | 236 | { |
| vcraciun | 2:a31069f27cd5 | 237 | Ptr=ReadAds7846(); |
| vcraciun | 0:55a3f0eda74d | 238 | } |
| vcraciun | 0:55a3f0eda74d | 239 | while( Ptr == (void*)0 ); |
| vcraciun | 2:a31069f27cd5 | 240 | ScreenSample[i].x= Ptr->x; |
| vcraciun | 2:a31069f27cd5 | 241 | ScreenSample[i].y= Ptr->y; |
| vcraciun | 2:a31069f27cd5 | 242 | #ifdef DEBUG_TOUCH_CALIBRATED |
| vcraciun | 2:a31069f27cd5 | 243 | debug.printf("Touch-Point: x=[%d] | y=[%d]\r\n",Ptr->x,Ptr->y); |
| vcraciun | 2:a31069f27cd5 | 244 | #endif |
| vcraciun | 0:55a3f0eda74d | 245 | } |
| vcraciun | 0:55a3f0eda74d | 246 | setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix ); |
| vcraciun | 0:55a3f0eda74d | 247 | } |
| vcraciun | 2:a31069f27cd5 | 248 | |
| vcraciun | 2:a31069f27cd5 | 249 | void Touch::TouchPanelExperimentalCalibrate(int *values) |
| vcraciun | 2:a31069f27cd5 | 250 | { |
| vcraciun | 2:a31069f27cd5 | 251 | int i; |
| vcraciun | 2:a31069f27cd5 | 252 | |
| vcraciun | 2:a31069f27cd5 | 253 | for (i=0;i<3;i++) |
| vcraciun | 2:a31069f27cd5 | 254 | { |
| vcraciun | 2:a31069f27cd5 | 255 | ScreenSample[i].x = values[i*2]; |
| vcraciun | 2:a31069f27cd5 | 256 | ScreenSample[i].y = values[i*2+1]; |
| vcraciun | 2:a31069f27cd5 | 257 | } |
| vcraciun | 2:a31069f27cd5 | 258 | setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix ); |
| vcraciun | 2:a31069f27cd5 | 259 | } |