8 #include "pins_arduino.h" 9 #include "wiring_private.h" 10 #include <avr/pgmspace.h> 19 #define NUMSAMPLES 2 // sample number 23 #define TSDEBUG 0 // if print the debug information 38 return ((p1.
x ==
x) && (p1.
y ==
y) && (p1.
z ==
z));
43 return ((p1.
x !=
x) || (p1.
y !=
y) || (p1.
z !=
z));
63 int tmp = analogRead(adpin);
64 if (tmp > max)max = tmp;
65 if (tmp < min)min = tmp;
69 return (sum-min-max)/(AVERAGETIME-2);
84 uint8_t xp_port = digitalPinToPort(_xp);
85 unsigned char yp_port = digitalPinToPort(_yp);
86 unsigned char xm_port = digitalPinToPort(_xm);
87 unsigned char ym_port = digitalPinToPort(_ym);
89 unsigned char xp_pin = digitalPinToBitMask(_xp);
90 unsigned char yp_pin = digitalPinToBitMask(_yp);
91 unsigned char xm_pin = digitalPinToBitMask(_xm);
92 unsigned char ym_pin = digitalPinToBitMask(_ym);
97 *portOutputRegister(yp_port) &= ~yp_pin;
98 *portOutputRegister(ym_port) &= ~ym_pin;
100 pinMode(_xp, OUTPUT);
101 pinMode(_xm, OUTPUT);
103 *portOutputRegister(xp_port) |= xp_pin;
104 *portOutputRegister(xm_port) &= ~xm_pin;
111 samples[
i] = analogRead(_yp);
120 if (samples[0] != samples[1])
125 int icomp = samples[0]>samples[1]?samples[0]-samples[1]:samples[1] - samples[0];
126 if (icomp >
COMP)valid = 0;
129 x = (samples[0] + samples[1]);
133 *portOutputRegister(xp_port) &= ~xp_pin;
135 pinMode(_yp, OUTPUT);
136 *portOutputRegister(yp_port) |= yp_pin;
137 pinMode(_ym, OUTPUT);
144 samples[
i] = analogRead(_xm);
152 if (samples[0] != samples[1])
157 icomp = samples[0]>samples[1]?samples[0]-samples[1]:samples[1] - samples[0];
158 if (icomp>
COMP)valid = 0;
160 y = (samples[0]+samples[0]);
162 pinMode(_xp, OUTPUT);
163 *portOutputRegister(xp_port) &= ~xp_pin;
164 *portOutputRegister(ym_port) |= ym_pin;
165 *portOutputRegister(yp_port) &= ~yp_pin;
168 int z1 = analogRead(_xm);
169 int z2 = analogRead(_yp);
175 rtouch *= (2046-
x)/2;
187 Serial.print(
"x1 = ");
189 Serial.print(
"\tx2 = ");
191 Serial.print(
"\ty2 = ");
193 Serial.print(
"\ty2 = ");
194 Serial.println(yy[1]);
198 return Point(x, y, z);
203 Point p = getPoint();
int avr_analog(int adpin)
TouchScreen(unsigned char xp, unsigned char yp, unsigned char xm, unsigned char ym)