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.
Dependents: LPC1768_Mini-DK_EasyWeb_DM9161 LPC1768_Mini-DK LPC1768_Mini-DK
Fork of Mini-DK by
TouchADS7843/Touch.h@19:6816fa47b39e, 2013-01-11 (annotated)
- Committer:
- frankvnk
- Date:
- Fri Jan 11 16:22:03 2013 +0000
- Revision:
- 19:6816fa47b39e
- Parent:
- 18:f045ae645960
- Child:
- 20:5feb12e3801f
In Mini_DK.h #include "SPI_TFT.h" renamed to #include "SPI_TFT_ILI9320.h"
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| frankvnk | 7:ffdd4e75b366 | 1 | /****************************************************************** |
| frankvnk | 7:ffdd4e75b366 | 2 | ***** ***** |
| frankvnk | 7:ffdd4e75b366 | 3 | ***** Name: Touch.h ***** |
| frankvnk | 7:ffdd4e75b366 | 4 | ***** Ver.: 1.0 ***** |
| frankvnk | 7:ffdd4e75b366 | 5 | ***** Date: 04/01/2013 ***** |
| frankvnk | 7:ffdd4e75b366 | 6 | ***** Auth: Frank Vannieuwkerke ***** |
| frankvnk | 7:ffdd4e75b366 | 7 | ***** Erik Olieman ***** |
| frankvnk | 7:ffdd4e75b366 | 8 | ***** Func: Touch driver for use with ADS7843 ***** |
| frankvnk | 7:ffdd4e75b366 | 9 | ***** ***** |
| frankvnk | 7:ffdd4e75b366 | 10 | ******************************************************************/ |
| frankvnk | 2:d0acbd263ec7 | 11 | |
| frankvnk | 2:d0acbd263ec7 | 12 | #ifndef MBED_Touch_H |
| frankvnk | 2:d0acbd263ec7 | 13 | #define MBED_Touch_H |
| frankvnk | 2:d0acbd263ec7 | 14 | |
| frankvnk | 18:f045ae645960 | 15 | #include "SPI_TFT_ILI9320.h" |
| frankvnk | 2:d0acbd263ec7 | 16 | #include "mbed.h" |
| frankvnk | 2:d0acbd263ec7 | 17 | |
| frankvnk | 2:d0acbd263ec7 | 18 | typedef struct |
| frankvnk | 2:d0acbd263ec7 | 19 | { |
| frankvnk | 2:d0acbd263ec7 | 20 | int x; |
| frankvnk | 2:d0acbd263ec7 | 21 | int y; |
| frankvnk | 2:d0acbd263ec7 | 22 | } Coordinate; |
| frankvnk | 2:d0acbd263ec7 | 23 | |
| frankvnk | 2:d0acbd263ec7 | 24 | typedef struct |
| frankvnk | 2:d0acbd263ec7 | 25 | { |
| frankvnk | 2:d0acbd263ec7 | 26 | int An, |
| frankvnk | 2:d0acbd263ec7 | 27 | Bn, |
| frankvnk | 2:d0acbd263ec7 | 28 | Cn, |
| frankvnk | 2:d0acbd263ec7 | 29 | Dn, |
| frankvnk | 2:d0acbd263ec7 | 30 | En, |
| frankvnk | 2:d0acbd263ec7 | 31 | Fn, |
| frankvnk | 2:d0acbd263ec7 | 32 | Divider ; |
| frankvnk | 2:d0acbd263ec7 | 33 | } Matrix; |
| frankvnk | 2:d0acbd263ec7 | 34 | |
| frankvnk | 2:d0acbd263ec7 | 35 | class TouchScreenADS7843 { |
| frankvnk | 2:d0acbd263ec7 | 36 | public: |
| frankvnk | 2:d0acbd263ec7 | 37 | Coordinate display; |
| frankvnk | 2:d0acbd263ec7 | 38 | Coordinate screen; |
| frankvnk | 2:d0acbd263ec7 | 39 | |
| frankvnk | 3:fb4d62b5ffb3 | 40 | /* |
| frankvnk | 3:fb4d62b5ffb3 | 41 | * Create a Touchscreen object connected to SPI and two pins |
| frankvnk | 3:fb4d62b5ffb3 | 42 | * |
| frankvnk | 3:fb4d62b5ffb3 | 43 | * @param mosi,miso,sclk SPI |
| frankvnk | 3:fb4d62b5ffb3 | 44 | * @param cs pin connected to CS of ADS7843 |
| frankvnk | 3:fb4d62b5ffb3 | 45 | * @param irq pin connected to IRQ of ADS7843 |
| frankvnk | 3:fb4d62b5ffb3 | 46 | * @param pointer to SPI_TFT constructor |
| frankvnk | 3:fb4d62b5ffb3 | 47 | * |
| frankvnk | 3:fb4d62b5ffb3 | 48 | */ |
| frankvnk | 3:fb4d62b5ffb3 | 49 | TouchScreenADS7843(PinName tp_mosi, PinName tp_miso, PinName tp_sclk, PinName tp_cs, PinName tp_irq, SPI_TFT *_LCD); |
| frankvnk | 2:d0acbd263ec7 | 50 | |
| frankvnk | 7:ffdd4e75b366 | 51 | /* |
| frankvnk | 7:ffdd4e75b366 | 52 | * Draw a 2 by 2 dot on the LCD screen |
| frankvnk | 7:ffdd4e75b366 | 53 | * |
| frankvnk | 7:ffdd4e75b366 | 54 | * @param x (horizontal position) |
| frankvnk | 7:ffdd4e75b366 | 55 | * @param y (vertical position) |
| frankvnk | 7:ffdd4e75b366 | 56 | * @param color (16 bit pixel color) |
| frankvnk | 7:ffdd4e75b366 | 57 | * |
| frankvnk | 7:ffdd4e75b366 | 58 | */ |
| frankvnk | 2:d0acbd263ec7 | 59 | void TP_DrawPoint(unsigned int Xpos,unsigned int Ypos,unsigned int color); |
| frankvnk | 7:ffdd4e75b366 | 60 | |
| frankvnk | 7:ffdd4e75b366 | 61 | /* |
| frankvnk | 7:ffdd4e75b366 | 62 | * Obtain averaged data from ADS7846 |
| frankvnk | 7:ffdd4e75b366 | 63 | * does 9 consecutive reads and only stores averaged data |
| frankvnk | 7:ffdd4e75b366 | 64 | * when the 9 points are within the treshold limits. |
| frankvnk | 7:ffdd4e75b366 | 65 | * |
| frankvnk | 7:ffdd4e75b366 | 66 | * @param screenPTR (pointer to store data) |
| frankvnk | 7:ffdd4e75b366 | 67 | * @returns 1 on success |
| frankvnk | 7:ffdd4e75b366 | 68 | * @returns 0 on failure |
| frankvnk | 7:ffdd4e75b366 | 69 | * |
| frankvnk | 7:ffdd4e75b366 | 70 | * If called with screenPTR = NULL - 'screen' variable is used, otherwise (parameter) is used. |
| frankvnk | 7:ffdd4e75b366 | 71 | * |
| frankvnk | 7:ffdd4e75b366 | 72 | */ |
| frankvnk | 3:fb4d62b5ffb3 | 73 | unsigned char Read_Ads7846(Coordinate * screenPtr = NULL); |
| frankvnk | 7:ffdd4e75b366 | 74 | |
| frankvnk | 7:ffdd4e75b366 | 75 | /* |
| frankvnk | 7:ffdd4e75b366 | 76 | * Calibrate the touch panel. |
| frankvnk | 7:ffdd4e75b366 | 77 | * Three crosshairs are drawn and need to be touched in sequence. |
| frankvnk | 7:ffdd4e75b366 | 78 | * A calibration matrix is set accordingly. |
| frankvnk | 7:ffdd4e75b366 | 79 | * |
| frankvnk | 7:ffdd4e75b366 | 80 | */ |
| frankvnk | 2:d0acbd263ec7 | 81 | void TouchPanel_Calibrate(void); |
| frankvnk | 7:ffdd4e75b366 | 82 | |
| frankvnk | 7:ffdd4e75b366 | 83 | /* |
| frankvnk | 7:ffdd4e75b366 | 84 | * Obtain real x,y coordinates |
| frankvnk | 7:ffdd4e75b366 | 85 | * The x,y coordinates are calculated using the calibration matrix. |
| frankvnk | 7:ffdd4e75b366 | 86 | * |
| frankvnk | 7:ffdd4e75b366 | 87 | */ |
| frankvnk | 2:d0acbd263ec7 | 88 | unsigned char getDisplayPoint(void); |
| frankvnk | 2:d0acbd263ec7 | 89 | |
| frankvnk | 2:d0acbd263ec7 | 90 | SPI_TFT *LCD; |
| frankvnk | 2:d0acbd263ec7 | 91 | SPI _tp_spi; |
| frankvnk | 2:d0acbd263ec7 | 92 | DigitalOut _tp_cs; |
| frankvnk | 2:d0acbd263ec7 | 93 | DigitalIn _tp_irq; |
| frankvnk | 2:d0acbd263ec7 | 94 | |
| frankvnk | 2:d0acbd263ec7 | 95 | protected: |
| frankvnk | 2:d0acbd263ec7 | 96 | |
| frankvnk | 3:fb4d62b5ffb3 | 97 | #define SPI_RD_DELAY 1 |
| frankvnk | 3:fb4d62b5ffb3 | 98 | #define CHX 0xd0 // 12 bit mode |
| frankvnk | 3:fb4d62b5ffb3 | 99 | #define CHY 0x90 |
| frankvnk | 2:d0acbd263ec7 | 100 | |
| frankvnk | 3:fb4d62b5ffb3 | 101 | Coordinate DisplaySample[3]; |
| frankvnk | 3:fb4d62b5ffb3 | 102 | Coordinate ScreenSample[3]; |
| frankvnk | 3:fb4d62b5ffb3 | 103 | Matrix matrix; |
| frankvnk | 3:fb4d62b5ffb3 | 104 | |
| frankvnk | 7:ffdd4e75b366 | 105 | /* |
| frankvnk | 7:ffdd4e75b366 | 106 | * Obtain raw x,y data from ADS7846 |
| frankvnk | 7:ffdd4e75b366 | 107 | * |
| frankvnk | 7:ffdd4e75b366 | 108 | * @param pointer to raw x and y coordinates (pointer to store data) |
| frankvnk | 7:ffdd4e75b366 | 109 | * @returns x (horizontal position) |
| frankvnk | 7:ffdd4e75b366 | 110 | * @returns y (vertical position) |
| frankvnk | 7:ffdd4e75b366 | 111 | * |
| frankvnk | 7:ffdd4e75b366 | 112 | */ |
| frankvnk | 3:fb4d62b5ffb3 | 113 | void TP_GetAdXY(int *x,int *y); |
| frankvnk | 7:ffdd4e75b366 | 114 | |
| frankvnk | 7:ffdd4e75b366 | 115 | /* |
| frankvnk | 7:ffdd4e75b366 | 116 | * Obtain raw single channel data from ADS7846 (Called by TP_GetADXY) |
| frankvnk | 7:ffdd4e75b366 | 117 | * |
| frankvnk | 7:ffdd4e75b366 | 118 | * @param channel to be read (CHX or CHY) |
| frankvnk | 7:ffdd4e75b366 | 119 | * @returns raw scaled down value (return value range must be between 0 and 1024) |
| frankvnk | 7:ffdd4e75b366 | 120 | * |
| frankvnk | 7:ffdd4e75b366 | 121 | */ |
| frankvnk | 2:d0acbd263ec7 | 122 | int Read_XY(unsigned char XY); |
| frankvnk | 7:ffdd4e75b366 | 123 | |
| frankvnk | 7:ffdd4e75b366 | 124 | /* |
| frankvnk | 7:ffdd4e75b366 | 125 | * Draw a calibration crosshair on the LCD screen |
| frankvnk | 7:ffdd4e75b366 | 126 | * |
| frankvnk | 7:ffdd4e75b366 | 127 | * @param x (horizontal position) |
| frankvnk | 7:ffdd4e75b366 | 128 | * @param y (vertical position) |
| frankvnk | 7:ffdd4e75b366 | 129 | * |
| frankvnk | 7:ffdd4e75b366 | 130 | */ |
| frankvnk | 2:d0acbd263ec7 | 131 | void DrawCross(unsigned int Xpos,unsigned int Ypos); |
| frankvnk | 7:ffdd4e75b366 | 132 | |
| frankvnk | 7:ffdd4e75b366 | 133 | /* |
| frankvnk | 7:ffdd4e75b366 | 134 | * Set the calibration matrix |
| frankvnk | 7:ffdd4e75b366 | 135 | * |
| frankvnk | 7:ffdd4e75b366 | 136 | * @param displayPTR (pointer to display data) |
| frankvnk | 7:ffdd4e75b366 | 137 | * @param screenPTR (pointer to screen data) |
| frankvnk | 7:ffdd4e75b366 | 138 | * @param matrixPTR (pointer to calibration matrix) |
| frankvnk | 7:ffdd4e75b366 | 139 | * |
| frankvnk | 7:ffdd4e75b366 | 140 | * @returns 0 when matrix.divider != 0 |
| frankvnk | 7:ffdd4e75b366 | 141 | * @returns 1 when matrix.divider = 0 |
| frankvnk | 7:ffdd4e75b366 | 142 | * |
| frankvnk | 7:ffdd4e75b366 | 143 | */ |
| frankvnk | 2:d0acbd263ec7 | 144 | unsigned char setCalibrationMatrix( Coordinate * displayPtr,Coordinate * screenPtr,Matrix * matrixPtr); |
| frankvnk | 2:d0acbd263ec7 | 145 | |
| frankvnk | 2:d0acbd263ec7 | 146 | }; |
| frankvnk | 2:d0acbd263ec7 | 147 | #endif |
