Mario Poneder / TFT_TouchPanel
Committer:
MarioPoneder
Date:
Tue Jan 28 10:55:53 2014 +0000
Revision:
0:e38c94c549f4
Child:
1:007113101ef7
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MarioPoneder 0:e38c94c549f4 1 /***************************************************************************//**
MarioPoneder 0:e38c94c549f4 2 * @file TouchPanel.h
MarioPoneder 0:e38c94c549f4 3 * @brief Header of the touch panel driver for the
MarioPoneder 0:e38c94c549f4 4 * TFT color display MI0283QT-9A (320x240).
MarioPoneder 0:e38c94c549f4 5 * @author Mario Poneder
MarioPoneder 0:e38c94c549f4 6 * @date 28/01/2013
MarioPoneder 0:e38c94c549f4 7 *******************************************************************************/
MarioPoneder 0:e38c94c549f4 8
MarioPoneder 0:e38c94c549f4 9 #ifndef __TOUCHPANEL_H__
MarioPoneder 0:e38c94c549f4 10 #define __TOUCHPANEL_H__
MarioPoneder 0:e38c94c549f4 11
MarioPoneder 0:e38c94c549f4 12 /******************************************************************************/
MarioPoneder 0:e38c94c549f4 13 /***************************** Include Files **********************************/
MarioPoneder 0:e38c94c549f4 14 /******************************************************************************/
MarioPoneder 0:e38c94c549f4 15 #include "mbed.h"
MarioPoneder 0:e38c94c549f4 16 #include "math.h"
MarioPoneder 0:e38c94c549f4 17
MarioPoneder 0:e38c94c549f4 18 /******************************************************************************/
MarioPoneder 0:e38c94c549f4 19 /****************************** TouchPanel ************************************/
MarioPoneder 0:e38c94c549f4 20 /******************************************************************************/
MarioPoneder 0:e38c94c549f4 21
MarioPoneder 0:e38c94c549f4 22 /* The touch panel is polled in 50ms intervals. */
MarioPoneder 0:e38c94c549f4 23 #define POLLING_INVERVAL 0.05f
MarioPoneder 0:e38c94c549f4 24
MarioPoneder 0:e38c94c549f4 25 /* X or Y coordinate if no touch was detected. */
MarioPoneder 0:e38c94c549f4 26 #define NO_TOUCH_VAL 0xFFFF
MarioPoneder 0:e38c94c549f4 27
MarioPoneder 0:e38c94c549f4 28 /* If the absolute value of the difference between the values of coherent
MarioPoneder 0:e38c94c549f4 29 * +/- inputs pins does not exceed this value the panel was touched. */
MarioPoneder 0:e38c94c549f4 30 #define TOUCH_THRESHOLD 0.005f
MarioPoneder 0:e38c94c549f4 31
MarioPoneder 0:e38c94c549f4 32 /* The width of the TFT display in px. */
MarioPoneder 0:e38c94c549f4 33 #define WIDTH 320
MarioPoneder 0:e38c94c549f4 34 /* The height of the TFT display in px. */
MarioPoneder 0:e38c94c549f4 35 #define HEIGHT 240
MarioPoneder 0:e38c94c549f4 36
MarioPoneder 0:e38c94c549f4 37 /* Border calibration constants. */
MarioPoneder 0:e38c94c549f4 38 #define TOP 0.8f // Y coordinate
MarioPoneder 0:e38c94c549f4 39 #define BOTTOM 0.2f // Y coordindate
MarioPoneder 0:e38c94c549f4 40 #define LEFT 0.12f // X coordinate
MarioPoneder 0:e38c94c549f4 41 #define RIGHT 0.89f // X coordinate
MarioPoneder 0:e38c94c549f4 42
MarioPoneder 0:e38c94c549f4 43 /***************************************************************************//**
MarioPoneder 0:e38c94c549f4 44 * @brief Specifies the prototype of the touch callback function.
MarioPoneder 0:e38c94c549f4 45 * Example: void TouchCallback(unsigned short x, unsigned short y);
MarioPoneder 0:e38c94c549f4 46 *******************************************************************************/
MarioPoneder 0:e38c94c549f4 47 typedef void (*pTouchCallback_t)(unsigned short, unsigned short);
MarioPoneder 0:e38c94c549f4 48
MarioPoneder 0:e38c94c549f4 49 class TouchPanel
MarioPoneder 0:e38c94c549f4 50 {
MarioPoneder 0:e38c94c549f4 51 private:
MarioPoneder 0:e38c94c549f4 52
MarioPoneder 0:e38c94c549f4 53 PinName xPos; // X+ pin
MarioPoneder 0:e38c94c549f4 54 PinName xNeg; // X- pin
MarioPoneder 0:e38c94c549f4 55 PinName yPos; // Y+ pin
MarioPoneder 0:e38c94c549f4 56 PinName yNeg; // Y- pin
MarioPoneder 0:e38c94c549f4 57
MarioPoneder 0:e38c94c549f4 58 DigitalOut *xPosOut; // X+ out
MarioPoneder 0:e38c94c549f4 59 DigitalOut *xNegOut; // X- out
MarioPoneder 0:e38c94c549f4 60 DigitalOut *yPosOut; // Y+ out
MarioPoneder 0:e38c94c549f4 61 DigitalOut *yNegOut; // Y- out
MarioPoneder 0:e38c94c549f4 62
MarioPoneder 0:e38c94c549f4 63 AnalogIn *xPosIn; // X+ in
MarioPoneder 0:e38c94c549f4 64 AnalogIn *xNegIn; // X- in
MarioPoneder 0:e38c94c549f4 65 AnalogIn *yPosIn; // Y+ in
MarioPoneder 0:e38c94c549f4 66 AnalogIn *yNegIn; // Y- in
MarioPoneder 0:e38c94c549f4 67
MarioPoneder 0:e38c94c549f4 68 Ticker pollPanelTicker; // Calls the PollPanel method in specified intervals.
MarioPoneder 0:e38c94c549f4 69 pTouchCallback_t touchCallbackFunction;
MarioPoneder 0:e38c94c549f4 70 bool xy;
MarioPoneder 0:e38c94c549f4 71
MarioPoneder 0:e38c94c549f4 72 void PrepareYRead(void);
MarioPoneder 0:e38c94c549f4 73 void PrepareXRead(void);
MarioPoneder 0:e38c94c549f4 74 void PollPanel(void);
MarioPoneder 0:e38c94c549f4 75
MarioPoneder 0:e38c94c549f4 76 public:
MarioPoneder 0:e38c94c549f4 77
MarioPoneder 0:e38c94c549f4 78 TouchPanel(PinName xPos, PinName xNeg, PinName yPos, PinName yNeg);
MarioPoneder 0:e38c94c549f4 79 void SetTouchCallbackFunction(pTouchCallback_t touchCallbackFunction);
MarioPoneder 0:e38c94c549f4 80 };
MarioPoneder 0:e38c94c549f4 81
MarioPoneder 0:e38c94c549f4 82 #endif /* __TOUCHPANEL_H__ */