// TOUCHRsimple_inline.js // Module for connecting resistive touch screen (passive X- X+ Y- Y+) // var touchr = require("TOUCHR").connect(C0,C1,C2,C3,function(x,y,tr){ // if (tr.t) { console.log(x,y); } else { console.log("up"); } // }).listen(true); // // // probe xy when NOT listening - touch.listen(false); // if (touchr.xy().t) console.log(touchr.x,touchr.y); // connect(X- C0,X+ C1,Y- C2,Y+ C3,callback(x,y,touchr),C{onfig} // listen(boolean): start/stop // xy(optCallback): read xy (ONLY when NOT listening) // ...all returning touchr // Config (for overriding adafruit's IL8341 2.8" TFT LCD w/ res touch): // X: horizontal px # // Y: vertical px # // xt: x touch threshold # // yt: y touch threshold # // xc: x center value # // yc: y center value # // xd: x delta per px # // yd: y delta per px # // xr: x read (raw) # 0 // yr: y read (raw) # 0 // x: x touching # 0..X-1 // y: y douching # 0..Y-1 // t: touching boolean (null = ambiguous) // i: track intervall [ms] // l: listening boolean // w: watch id var touchrModule = { connect: function(xn,xp,yn,yp,callback,C) { var tr = { X: 240 , Y: 320 , xu: 0.08 , yu: 0.05 , xc: 0.4960 , yc: 0.4795 , xd: 0.00318 , yd: 0.00251 , xr: 0 , yr: 0 , x: 0 , y: 0 , t: false , i: 100 , l: true , w: false , cb: callback }; if (C) { for (var v in C) tr[v] = C[v]; } tr.xy = function(cb,l) { pinMode(yn,"input_pulldown"); digitalRead(yp); digitalWrite([xn,xp],2); tr.xr = (analogRead(yn)+analogRead(yn))/2; pinMode(xn,"input_pulldown"); digitalRead(xp); digitalWrite([yn,yp],2); tr.yr = (analogRead(xn)+analogRead(xn))/2; digitalRead([yn,yp]); if (tr.xr>tr.xt && tr.yr>tr.yt) { tr.t = true; tr.x = ((tr.x = Math.round(tr.X/2+(tr.xr-tr.xc)/tr.xd)-1) <0) ? 0 : (tr.x