Basically i glued Peter Drescher and Simon Ford libs in a GraphicsDisplay class, then derived TFT or LCD class (which inherits Protocols class), then the most derived ones (Inits), which are per-display and are the only part needed to be adapted to diff hw.
Fork of UniGraphic by
TouchADS7843/readme.txt@22:62f3bed03503, 2015-05-06 (annotated)
- Committer:
- rakware
- Date:
- Wed May 06 16:52:07 2015 +0000
- Revision:
- 22:62f3bed03503
added touch for ADS7843 bound to TFT class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rakware | 22:62f3bed03503 | 1 | #include "mbed.h" |
rakware | 22:62f3bed03503 | 2 | #include "ILI9341.h" |
rakware | 22:62f3bed03503 | 3 | #include "Touch.h" |
rakware | 22:62f3bed03503 | 4 | |
rakware | 22:62f3bed03503 | 5 | ILI9341 TFT(SPI_16, 12000000, D11, D12, D13, D10, D9, D8, "TFT"); // Spi 16bit, 12MHz, mosi, miso, sclk, cs, reset, dc |
rakware | 22:62f3bed03503 | 6 | |
rakware | 22:62f3bed03503 | 7 | TouchScreenADS7843 TP(D11, D12, D13, D14, D15, &TFT); // ADS7843 -> mosi, miso, sclk, cs, irq, SPI_TFT |
rakware | 22:62f3bed03503 | 8 | |
rakware | 22:62f3bed03503 | 9 | int main() |
rakware | 22:62f3bed03503 | 10 | { |
rakware | 22:62f3bed03503 | 11 | TFT.claim(stdout); |
rakware | 22:62f3bed03503 | 12 | Matrix matrix; |
rakware | 22:62f3bed03503 | 13 | Coordinate ScreenSample[3]; |
rakware | 22:62f3bed03503 | 14 | TP.TouchPanel_Calibrate(); |
rakware | 22:62f3bed03503 | 15 | TP.GetCalibration(&matrix, &ScreenSample[0]); |
rakware | 22:62f3bed03503 | 16 | TP.SetCalibration(&matrix, &ScreenSample[0]); |
rakware | 22:62f3bed03503 | 17 | for(;;) { |
rakware | 22:62f3bed03503 | 18 | |
rakware | 22:62f3bed03503 | 19 | if (!TP._tp_irq) { |
rakware | 22:62f3bed03503 | 20 | if (TP.Read_Ads7843()) { |
rakware | 22:62f3bed03503 | 21 | TP.getDisplayPoint() ; |
rakware | 22:62f3bed03503 | 22 | TP.TP_DrawPoint(TP.display.x,TP.display.y, Blue); |
rakware | 22:62f3bed03503 | 23 | TFT.locate(25,0); |
rakware | 22:62f3bed03503 | 24 | printf("%03d",TP.display.x); |
rakware | 22:62f3bed03503 | 25 | TFT.locate(95,0); |
rakware | 22:62f3bed03503 | 26 | printf("%03d",TP.display.y); |
rakware | 22:62f3bed03503 | 27 | // Touchscreen area is larger than LCD area. |
rakware | 22:62f3bed03503 | 28 | // We use the bottom area outside the LCD area to clear the screen (y value > 320). |
rakware | 22:62f3bed03503 | 29 | if (TP.display.y > 320) { |
rakware | 22:62f3bed03503 | 30 | TFT.cls(); |
rakware | 22:62f3bed03503 | 31 | TFT.locate(0,0); |
rakware | 22:62f3bed03503 | 32 | printf(" X:"); |
rakware | 22:62f3bed03503 | 33 | TFT.locate(70,0); |
rakware | 22:62f3bed03503 | 34 | printf(" Y:"); |
rakware | 22:62f3bed03503 | 35 | } |
rakware | 22:62f3bed03503 | 36 | } |
rakware | 22:62f3bed03503 | 37 | } |
rakware | 22:62f3bed03503 | 38 | |
rakware | 22:62f3bed03503 | 39 | } |
rakware | 22:62f3bed03503 | 40 | } |