Comprei no próprio lab uma tela de toque de Nintendo DS e o conector.
Hoje tentei montar algo básico, baseado no post http://labdegaragem.com/profiles/blogs/projeto-com-nintendo-ds-touc..., mas só para ler as coordenadas do toque na tela.
Minha montagem ficou como a mostrada na imagem abaixo.
O código é exatamente o do post, mas sem a parte que controla os leds (como saída, deixei apenas as informações na serial).
Porém, minha serial indica valores aparentemente aleatórios, mesmo quando não estou sequer tocando a tela. Já tentei deixá-la "suspensa", protegida por pano, papel e plástico, mas nada neutraliza essa leitura randômica de valores.
Alguém já testou a montagem desse post e pode me ajudar?
Tags:
Consegui fazer funcionar ligando cada um dos pinos em paralelo com o Ground com uma resistência de 10K.
Além disso, a fita que sai da tela estava ligada do lado errado no conector.
O código que usei no final das contas é esse:
//Y1 vai no A0
//X2 vai no A1
//Y2 vai no A2
//X1 vai no A3
//A face sensivel da tela eh a contraria ao do texto (na fita)
//A fita deve ficar com o texto virado para o mesmo lado do conector branco
void setup() {
Serial.begin(9600);
}
//funcao que le a coordenada X
int readX() {
int xr=0;
//arrumando a funcao de cada pino
pinMode(A0, INPUT);
pinMode(A1, OUTPUT);
pinMode(A2, INPUT);
pinMode(A3, OUTPUT);
digitalWrite(A1, LOW); // set A1 to GND
digitalWrite(A3, HIGH); // set A3 as 5V
delay(10); // short delay is required to give the analog pins time to adjust to their new roles
xr=analogRead(A0); //lendo "coordenada" X
return xr;
}
//funcao que le a coordenada Y
int readY() {
int yr=0;
//arrumando a funcao de cada pino
pinMode(A0, OUTPUT);
pinMode(A1, INPUT);
pinMode(A2, OUTPUT);
pinMode(A3, INPUT);
digitalWrite(A0, LOW); // set A0 to GND
digitalWrite(A2, HIGH); // set A2 as 5V
delay(10); // short delay is required to give the analog pins time to adjust to their new roles
yr=analogRead(A1); //lendo "coordenada" Y
return yr;
}
void loop() {
int x=0;
int y=0;
x=readX();
//Transformacao para converter a leitura para um valor entre 0 e 100
//Valores determinados via calibraçao
x=100*((x-80.0)/(815.0-80.00));
y=readY();
//Transformacao para converter a leitura para um valor entre 0 e 100
//Valores determinados via calibraçao
y=100*((y-110.0)/(760.0-110.00));
//imprime na saida apenas se houver toque
if (x>0 && y>0) {
Serial.print("x=");
Serial.print(x);
Serial.print(" y=");
Serial.println(y);
delay(500);
}
}
Conseguiu fazer mais alguma aplicação? estou tentando utilizar ela como um teclado, para fazer um sistema de segurança q abra e fecha uma porta, a partir de um código digitado através dela. Mas não estou com alguns problemas :X
Na verdade, tive problema em fazer a tela funcionar outro dia, mesmo seguindo o que postei aqui.
No final das contas, acabei deixando esse item de lado, mas toparia um ajudar em um esforço conjunto pra documentar bem essa peça.
O que você conseguiu fazer funcionar até o momento?
LED?Talvez possa tentar TFT LCD. Já o usei antes. É realmente um excelente monitor.www.stoneitech.com
Bom dia SR, (se não gosta que te chame pelas iniciais, avise),
este tópico teve a ultima resposta há 9 anos, (2013). ????
você é representante deste fabricante?
RV mineirin
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por