Fork with support for ILI9341 controller
Dependents: CANary_9341 CANary
Fork of TOUCH_TFTx2 by
Diff: TOUCH_TFTx2.h
- Revision:
- 3:3db7309b6146
- Parent:
- 1:1745fdf054b5
- Child:
- 4:a3cd26c97b76
diff -r ef7972c29c0e -r 3db7309b6146 TOUCH_TFTx2.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TOUCH_TFTx2.h Sun Feb 03 15:22:44 2013 +0000 @@ -0,0 +1,123 @@ +/* mbed library for touchscreen connected to 4 mbed pins + * derive from SPI_TFT lib + * Copyright (c) 2011 Peter Drescher - DC2PD + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef MBED_TOUCH_H +#define MBED_TOUCH_H + +#include "mbed.h" +#include "SPI_TFTx2.h" + +struct point{ + unsigned short x; + unsigned short y; + }; + + +/** touchscreen control class, based on SPI_TFT + * + * Example: + * @code + * + * #include "mbed.h" + * #include "SPI_TFTx2.h" + * #include "Arial12x12.h" + * #include "Arial28x28.h" + * #include "TOUCH_TFTx2.h" + * // the TFT is connected to SPI pin 5-7 + * // the touch is connected to 19,20,16,17 + * + * TOUCH_TFTx2 tt(p19,p20,p16,p17,p5, p6, p7, p8, p9, p15,"TFT"); // x+,x-,y+,y-,mosi, miso, sclk, cs, reset + * + * int main() { + * point p; + * + * tt.claim(stdout); // send stdout to the TFT display + * tt.background(Black); // set background to black + * tt.foreground(White); // set chars to white + * tt.cls(); // clear the screen + * tt.set_font((unsigned char*) Arial12x12); // select the font + * tt.set_orientation(1); + * + * tt.calibrate(); // calibrate the touch + * while (1) { + * p = tt.get_touch(); // read analog pos. + * if (tt.is_touched(p)) { // test if touched + * p = tt.to_pixel(p); // convert to pixel pos + * tt.fillcircle(p.x,p.y,3,Blue); // print a blue dot on the screen + * } + * } + * @endcode + */ +class TOUCH_TFTx2 : public SPI_TFTx2{ +public: + /** create a TFT with touch object connected to the pins: + * + * @param pin xp resistiv touch x+ + * @param pin xm resistiv touch x- + * @param pin yp resistiv touch y+ + * @param pin ym resistiv touch y- + * @param mosi,miso,sclk SPI connection to TFT + * @param cs pin connected to CS of display + * @param reset pin connected to RESET of display + * based on my SPI_TFT lib + */ + TOUCH_TFTx2(PinName xp, PinName xm, PinName yp, PinName ym,PinName mosi, PinName miso, PinName sclk, PinName cs0, PinName cs1, PinName reset,const char* name ="TFT"); + + /** calibrate the touch display + * + * User is asked to touch on two points on the screen + */ + void calibrate(void); + + /** read x and y analog samples + * + * @returns point(x,y) + */ + point get_touch(void); + + /** calculate coord on screen + * + * @param a_point point(analog x, analog y) + * @returns point(pixel x, pixel y) + * + */ + point to_pixel(point a_point); + + /** test if screen is touched + * + * @param point analog x,y + * @returns true is touched + * + */ + bool is_touched(point a); + +protected: + DigitalInOut _xp; + DigitalInOut _xm; + DigitalInOut _yp; + DigitalInOut _ym; + AnalogIn _ax; + AnalogIn _ay; + PinName xa; + PinName ya; + + + unsigned short x_a,y_a; + unsigned short x_off,y_off; + unsigned short pp_tx,pp_ty; + + + + }; + +#endif \ No newline at end of file