Това е тъч скрийн панел, който е направен за конзолата Nintendo DS, но може да се използва с всеки LCD дисплей.

При допир панелът променя съпротивлението си за всяка ос. Ако се захрани с 5V на два от пиновете, при допир ще се промени и изходното напрежение за съответната ос. X и Y координатите на точката, в която е натиснат се получават чрез свързване на панела по две различни схеми.
За получаване на стойности по оста X, пин 4 се свързва към 5V, а пин 2 към маса. Пин 3 се свързва към аналогов вход на микроконтролер, който задава числена стойност на получения сигнал.

Стойностите по оста Y се получават като пин 1 се свързва към 5V, пин 3 към маса, а пин 4 към аналогов вход на микроконтролер.

Работата с лентовият кабел на панела е трудна за любители и затова от SparkFun са предвидили брейкаут борд с запоен за него конектор.

Пример
Даденият по-долу код получава X и Y координатите на точката, в която е натиснат панела и ги извежда в Serial Monitor. Координатите на точката в най-горния ляв ъгъл е 0,0 а на точката в най-долния десен ъгъл е 800,770.

Панелът се свързва с Arduino чрез брейкаут платката. Черната част на конектора леко се издърпва навън, лентовият кабел се поставя в него с пистите обърнати нагоре и се прибира за да захване кабела. За по-добър контакт, на гърба на лентовия кабел могат да залепят две лентички тиксо.
Брейкаут борда се закача към Arduino по следния начин:
y1 -> A0 x2 -> A1 y2 -> A2 x1 -> A3

Кода който трябва да се зареди на Arduino е следният:
/*
Описание:
* Извежда в Serial Monitor координатите на точката,
в която е докоснат тъч-скрийн панела за Nintendo DS.
Свързване:
y1 -> A0
x2 -> A1
y2 -> A2
x1 -> A3
Tihomir Trifonov (09-2011)
email:tisho@inbox.com
с подкрепата на Robotev.com
*/
//// Аналогови входове
int y1 = A0;
int x2 = A1;
int y2 = A2;
int x1 = A3;
void setup() { // начални инициализации
Serial.begin(9600); // започва серийна комуникация
}
int readX(){// прочита X координата
pinMode(y1, INPUT); // Y1 вход
pinMode(x2, OUTPUT);// X2 изход
pinMode(y2, INPUT); // Y2 вход
pinMode(x1, OUTPUT);// X1 изход
digitalWrite(x2, LOW);// GND
digitalWrite(x1, HIGH);// 5V
delay(5); // изчаква 5ms
return analogRead(y1); // връща стойността за X
}
int readY(){// прочита Y координата
pinMode(y1, OUTPUT); // Y1 изход
pinMode(x2, INPUT); // X2 вход
pinMode(y2, OUTPUT); // Y2 изход
pinMode(x1, INPUT); // X1 вход
digitalWrite(y1, LOW); // GND
digitalWrite(y2, HIGH);// 5V
delay(5); // изчаква 5ms
return analogRead(x2); // връща стойността за Y
}
void loop()// програмен цикъл
{
int x = readX();// чете X
int y = readY();// чете Y
if(x < 1000 & y < 1000){
Serial.print("x: ");// извежда X
Serial.print(x-100);
Serial.print(" - y: ");// извежда Y
Serial.println(y- 130);
}
delay(100); // 100ms закъснение
}
|
Ако при натиск в Serial Monitor не се изписва нищо, опитайте с другата страна на панела или проверете контакта на лентовия кабел с конектора.