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
Bom dia,
Quando se fala em touch o microcontrolador já tem as portas preparadas e um biblioteca sofisticada a placa um layout bem elaborado para evitar interferências.
Neste caso esta tela já é preparada? É seguro?
OLA
GOSTEI DO PROJETO SÓ GOSTARIA DE SABER SE TEM COMO JOGAR ALGUMAS IMAGENS OU VIDEOS DENTRO DO LCD
PARABÉNS PELO PROJETO.
tem o lado certo de encaixar aquela película bem fininha da tela no breakout?
teoricamente, funciona com qualquer tela touch screen? as de tamanhos maiores.. ou ate mesmo as de celular?
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!
muito legal esse projeto.. parabéns...
Show de bola! Mais uma que aprendi agora.
Valew pelo post!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)