Neste projeto, iremos mostrar como utilizar o Nintendo DS Touch Screen com Arduino.
Com o conector breakout para Nintendo DS Touch Screen faça a seguinte ligação para conectar o Nintendo DS Touch Screen no Arduino:
Onde:
A0, A1, A2, A3 são as portas analógicas do Arduino
X1, Y2, X2 e Y1 são os conectores do Nintendo DS Touch Screen
Para ter o efeito como no vídeo é necessário mapear o Touch Screen, a figura abaixo mostra o desenho utilizado com as coordenadas principais:
Agora com as coordenadas, podemos ir para o código:
int x=0;
int y=0;
int z=0;
void setup()
{
Serial.begin(9600);
pinMode(2,OUTPUT); // The Pins to Leds
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
int readX() // returns the value of the touch screen's X-axis
{
int xr=0;
pinMode(A0, INPUT); // A0
pinMode(A1, OUTPUT); // A1
pinMode(A2, INPUT); // A2
pinMode(A3, OUTPUT); // A3
digitalWrite(A1, LOW); // set A1 to GND
digitalWrite(A3, HIGH); // set A3 as 5V
delay(5); // short delay is required to give the analog pins time to adjust to their new roles
xr=analogRead(0); //
return xr;
}
int readY() // returns the value of the touch screen's Y-axis
{
int yr=0;
pinMode(A0, OUTPUT); // A0
pinMode(A1, INPUT); // A1
pinMode(A2, OUTPUT); // A2
pinMode(A3, INPUT); // A3
digitalWrite(A0, LOW); // set A0 to GND
digitalWrite(A2, HIGH); // set A2 as 5V
delay(5); // short delay is required to give the analog pins time to adjust to their new roles
yr=analogRead(1); //
return yr;
}
void loop()
{
x=readX();
//Serial.print(" x = "); //DEBUG
//Serial.println(x);
y=readY();
//Serial.print(" y = "); //DEBUG
//Serial.println(y);
if(((x>110) && (x<330)) && ((y>250) && (y<370)))
{
digitalWrite(2,HIGH);
}
if(((x>330) && (x<550)) && ((y>250) && (y<370)))
{
digitalWrite(5,HIGH);
}
if(((x>550) && (x<770)) && ((y>250) && (y<370)))
{
digitalWrite(8,HIGH);
}
if(((x>770) && (x<990)) && ((y>250) && (y<370)))
{
digitalWrite(11,HIGH);
}
if(((x>110) && (x<330)) && ((y>140) && (y<250)))
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
if(((x>330) && (x<550)) && ((y>140) && (y<250)))
{
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if(((x>550) && (x<770)) && ((y>140) && (y<250)))
{
digitalWrite(8,HIGH);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
}
if(((x>770) && (x<990)) && ((y>140) && (y<250)))
{
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
}
if(((x>110) && (x<330)) && ((y>370) && (y<630)))
{
digitalWrite(3,HIGH);
}
if(((x>330) && (x<550)) && ((y>370) && (y<630)))
{
digitalWrite(6,HIGH);
}
if(((x>550) && (x<770)) && ((y>370) && (y<630)))
{
digitalWrite(9,HIGH);
}
if(((x>770) && (x<990)) && ((y>370) && (y<630)))
{
digitalWrite(12,HIGH);
}
if(((x>110) && (x<330)) && ((y>630) && (y<920)))
{
digitalWrite(4,HIGH);
}
if(((x>330) && (x<550)) && ((y>630) && (y<920)))
{
digitalWrite(7,HIGH);
}
if(((x>550) && (x<770)) && ((y>630) && (y<920)))
{
digitalWrite(10,HIGH);
}
if(((x>770) && (x<990)) && ((y>630) && (y<920)))
{
digitalWrite(13,HIGH);
}
if((x>990) && (y>370)) // If the Touch Screen not Touch
{
digitalWrite(2,LOW);
digitalWrite(5,LOW);
digitalWrite(8,LOW);
digitalWrite(11,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(9,LOW);
digitalWrite(12,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(10,LOW);
digitalWrite(13,LOW);
}
}
O código mostra que em cada lugar do Nintendo DS Touch Screen um led ou mais leds acenderão como mostrado no vídeo!
Com o Nintendo DS Touch Screen pode fazer muito mais!! Este projeto é apenas uma demonstração. Esperamos que tenham gostado e se tiverem dúvidas comentem aqui mesmo neste blog! Até a próxima!
Equipe Lab de Garagem
Referências:
http://labdegarag1.lojatemporaria.com/nintendo-ds-touch-screen.html
http://labdegarag1.lojatemporaria.com/nintendo-ds-touch-screen-conn...
http://kalshagar.wikispaces.com/Arduino+and+a+Nintendo+DS+touch+screen
http://tronixstuff.wordpress.com/2010/12/29/tutorial-arduino-and-th...
Comentar
Comentário de Rogerio A. Filho em 2 abril 2013 às 23:18 teoricamente, funciona com qualquer tela touch screen? as de tamanhos maiores.. ou ate mesmo as de celular?
Comentário de RENAN CESAR S. KLEIM em 8 maio 2012 às 15:16 legal mesmo...mas podia listar os componentes que foram usados e se não for pedir d+ o esquema de ligação só p facilitar rsrsrs...mas vlew!
Comentário de ezequiel da silva daniel em 20 abril 2012 às 16:21 muito legal esse projeto.. parabéns...
Comentário de Eduardo Francisco de Avelar em 17 abril 2012 às 14:26 Show de bola! Mais uma que aprendi agora.
Valew pelo post!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
Por: R$ 29,00
Ou em até 6x de
R$ 5,18
Por: R$ 150,00
Ou em até 18x de
R$ 10,00
Por: R$ 195,00
Ou em até 18x de
R$ 13,00
(ADS1102C) - 100MHz - 2 Canais
Por: R$ 1920,00
Ou em até 18x de
R$ 127,96
© 2013 Criado por Marcelo Rodrigues.
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)