Това е тъч скрийн панел, който е направен за конзолата 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 не се изписва нищо, опитайте с другата страна на панела или проверете контакта на лентовия кабел с конектора.