este vídeo les indico la forma de usar un touchscreen genérico que lo puede comprar en cualquier tienda donde reparen celulares y lo controlaremos con un arduino o un PIC sin necesidad de comprar costosos equipos o shields de arduino que hacen lo mismo.
Algunos se preguntaran "por que con arduino", por que es el que mas mercado lidera en el mundo, pero no se preocupen los que trabajen con PICC encontrar igual o similar los códigos de arduino y PICC, asi que sin mas preámbulos les dejo el vídeo donde se explica desde cero todo el proceso.
_____________________________________________________________________________
_______________________________________________________________________________
Una pantalla táctil o touchscreen es una protección que llevan las pantallas de los computadores y móviles modernos que al contacto de la superficie permite la salida de datos de la posición en el eje X y Y funcionando como un dispositivo de entrada. Esta tecnología lleva más de 30 años en uso (patentadas en 1970 y 1980 ) pero en la actualidad su uso se ha hecho mas popular.
Existen dos tipos de pantallas táctiles, las resistivas y capacitivas.
Las resistivas son más baratas y son las primeras que salieron al mercado, pueden ser usadas con cualquier objeto que las presione como un puntero o el dedo, aunque sus prestaciones han disminuido de forma considerable a causa de la poca luz que dejan pasar de la pantalla principal a causa del grosor de estas láminas transparentes. Este tipo de pantallas son puramente resistivas funcionando de forma similar a una resistencia variable, con sus bordes y su cursor el cual detecta la variación de dicha resistencia. Estos touch funcionan de forma matricial leyendo la posición donde se presionó comparando el valor de la coordenada X y coordenada Y de forma separada que luego el sistema microcontrolado interpreta y procesa para saber en qué posición fue presionada.
Al presionar el táctil se unen dos capas metálicas resistivas lo cual permite la variación de la resistividad del componente, esta resistencia es ingresada a un conversor análogo digital para su posterior uso.
Capacitivas, están formadas por celdas capacitivas estilo condensador, con una capa capacitiva conductora y un aislante eléctrico (el cristal está impregnado con óxido de indio y estaño,).Su funcionamiento se basa en la interacción de dos dispositivos conductores eléctricos y como la piel del cuerpo humano es un conductora al tocar la pantalla existe una interacción electrostática entre la piel y la célula capacitiva haciendo un cambio de la capacitancia del touch, estas pantallas solo pueden ser usadas con materiales exclusivos para táctiles capacitivos o con el dedo. La conductividad eléctrica de la piel humana hará variar esta capacitancia y generará una distorsión, midiendo esta distorsión se puede ubicar con precisión el dedo humano
Otra gran ventaja es que pueden detectar varios puntos de contacto (multitouch) generando mayor interactividad entre el hombre y la maquina siendo hoy por hoy la pantalla mas usada.
Materiales usados para este proyecto
requerimos una un touch de 4 hilos de cualquier celular preferiblemente chinos ya que son económicos y faciles de conseguir(no importa el tamaño todas funcionan igual)
segundo debemos ubicar los pines que marquen resistencia y que no cambien al presionar el tactil.
tercero se hace el montaje del video con la resistencias de 10 k y conectamos al conversor analogo del arduino para leer la señal. este seria la prueba basica para ver si encontro los pines correctos, al presionar debe variar el voltaje leido por el tactil.
codigo del arduino
______________________________________________________________________
código para leer solo el eje X
#define y_alto A0//14
#define x_bajo A1
#define y_bajo A2
#define x_alto A3
void setup(){
Serial.begin(9600);
}
void loop(){
pinMode(x_alto,OUTPUT);
pinMode(x_bajo,OUTPUT);
digitalWrite(x_alto,HIGH);
digitalWrite(x_bajo,LOW);
Serial.print("el de valor de x es:...");
int cordenada_x = analogRead(A2);
Serial.println(cordenada_x);
delay(600);
}
código para leer las coordenadas X y Y
//programa diseñado por el ingeniero edison v
//Los pines analogicos pueden ser usados
//como pines digitales con los números 14
//(entrada analogica número 0) hasta 19
//(entrada analogica número 5).
#define y_alto A0//redefino los pines para ser configurados como digitales
//y en analogas uso A0, A1
#define x_bajo A1//EN ALGUNOS ARDUINO 15
#define y_bajo A2//16
#define x_alto A3//17
void setup()
{
///////////configuracion serial
Serial.begin(9600);
}
////////////////
void loop()
{
leer_x();
delay(400);
leer_y();
delay(400);
}
void leer_x()
{
pinMode (x_alto, OUTPUT);
pinMode (x_bajo, OUTPUT);
pinMode (y_alto, INPUT);
pinMode (y_bajo, INPUT);
digitalWrite (x_alto, HIGH);
digitalWrite (x_bajo, LOW);
Serial.print("el valor de VALOR X es...");
int cordenada_x = analogRead(A2);// A2 ES Y BAJO TENER CUIDADO
Serial.println(cordenada_x);
}
///////////////////////////////
void leer_y()
{
pinMode (x_alto, INPUT);
pinMode (x_bajo, INPUT);
pinMode (y_alto, OUTPUT);
pinMode (y_bajo, OUTPUT);
digitalWrite (y_alto, HIGH);
digitalWrite (y_bajo, LOW);
Serial.print("el valor de VALOR Y es...");
int cordenada_y = analogRead(A1);
Serial.println(cordenada_y);
}
_________________________________________________________________________________
programa para leer las coordenadas y activar los led
//programa diseñado por el ingeniero edison v
//Los pines analogicos pueden ser usados
//como pines digitales con los números 14
//(entrada analogica número 0) hasta 19
//(entrada analogica número 5).
#define y_alto A0//redefino los pines para ser configurados como digitales
//y en analogas uso A0, A1
#define x_bajo A1//EN ALGUNOS ARDUINO 15
#define y_bajo A2//16
#define x_alto A3//17
int cis =13;//cuadrante izquierdo superior
int cds =12;
int cii=11;//cuadrante izquierdo inferior
int cdi=10;//cuadrante derecho iNFERIOR
void setup()
{
pinMode(cis,OUTPUT);
pinMode(cds,OUTPUT);
pinMode(cii,OUTPUT);
pinMode(cdi,OUTPUT);
///////////configuracion serial
Serial.begin(9600);
}
////////////////
void loop()
{
pinMode (x_alto, OUTPUT);
pinMode (x_bajo, OUTPUT);
pinMode (y_alto, INPUT);
pinMode (y_bajo, INPUT);
digitalWrite (x_alto, HIGH);
digitalWrite (x_bajo, LOW);
Serial.print("el valor de VALOR X es...");
int cordenada_x = analogRead(A2);// A2 ES Y BAJO TENER CUIDADO
Serial.println(cordenada_x);
delay(600);
///////////////////////////////
pinMode (x_alto, INPUT);
pinMode (x_bajo, INPUT);
pinMode (y_alto, OUTPUT);
pinMode (y_bajo, OUTPUT);
digitalWrite (y_alto, HIGH);
digitalWrite (y_bajo, LOW);
Serial.print("el valor de VALOR Y es...");
int cordenada_y = analogRead(A1);
Serial.println(cordenada_y);
delay(600);
if(cordenada_x >4 && cordenada_y <48 b="">48>
{
digitalWrite(cis, HIGH);//prende led de donde se presiono el cuadrante cuadrante iz super
digitalWrite(cds, LOW);
digitalWrite(cii, LOW);
digitalWrite(cdi, LOW);
}
if(cordenada_x >20 && cordenada_y <48 b="">48>
{
digitalWrite(cds, HIGH);
digitalWrite(cis, LOW);
digitalWrite(cii, LOW);
digitalWrite(cdi, LOW);
}
if(cordenada_x >4 && cordenada_y <21 b="">21>
{
digitalWrite(cii, HIGH);
digitalWrite(cis, LOW);
digitalWrite(cds, LOW);
digitalWrite(cdi, LOW);
}
if(cordenada_x >20 && cordenada_y <21 b="">21>
{
digitalWrite(cdi, HIGH);
digitalWrite(cii, LOW);
digitalWrite(cis, LOW);
digitalWrite(cds, LOW);
}
}