Works
Dependencies: BMP180 BNO055_fusion Fonts GPSISR HTU21D SDFileSystem UniGraphic mbed uGUI
Fork of Bicycl_Computer_NUCLEO-F411RE by
Diff: SeeedStudioTFTv2.cpp
- Revision:
- 2:c5085faf2aa5
- Child:
- 15:b174ec6e3ca0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SeeedStudioTFTv2.cpp Sat Dec 17 18:55:31 2016 +0000 @@ -0,0 +1,73 @@ +/* mbed library for resistive touch pads + * uses 4 pins - 2 IO and 2 Analog + + * 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. + */ + + +#include "mbed.h" +#include "SeeedStudioTFTv2.h" + +//Serial pc(USBTX,USBRX,19200); + +TouchScreen::TouchScreen(PinName xp, PinName xm, PinName yp, PinName ym) +{ + //font = NULL; + // touch screen pins + _xp = xp; + _yp = yp; + _xm = xm; + _ym = ym; + // default touch calibration + // orientation // 0 1 2 3 + x_off = 108000; // 17252 16605 108755 108000 + y_off = 22000; // 22330 105819 97167 22000 + pp_tx = -291; // 378 289 -390 -291 + pp_ty = 356; // 261 -355 -239 356 +} + +int TouchScreen::readTouch(PinName p, PinName m, PinName a, PinName i) +{ + DigitalOut _p(p); + _p = 1; + DigitalOut _m(m); + _m = 0; + AnalogIn _a(a); + AnalogIn _i(i); // this pin has to be high Z (DigitalIn may also work) + wait_us(10); + return _a.read_u16(); +} + +void TouchScreen :: getTouch(point& p) +{ + int y2 = readTouch(_xp,_xm,_yp,_ym); + int x2 = readTouch(_yp,_ym,_xp,_xm); + int y1 = readTouch(_xp,_xm,_yp,_ym); + int x1 = readTouch(_yp,_ym,_xp,_xm); + int xd = x1 - x2; + int yd = y1 - y2; + xd = (xd > 0) ? xd : -xd; + yd = (yd > 0) ? xd : -xd; + p.x = x1 + x2; + p.y = y1 + y2; + + int z1 = _xm; + int z2 = _yp; + float rtouch = 0; + + rtouch = z2; + rtouch /= z1; + rtouch -= 1; + rtouch *= (2046-p.x)/2; + rtouch *= RXPLATE; + rtouch /= 1024; + p.z = abs(rtouch); + } \ No newline at end of file