Arduino Playground - Touch Arduino
Arduino и Nintendo DS Touch Screen
Това е тъч скрийн панел, който е направен за конзолата 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 -&gt; A0
x2 -&gt; A1
y2 -&gt; A2
x1 -&gt; A3
* Извежда в Serial Monitor координатите на точката,
в която е докоснат тъч-скрийн панела за Nintendo DS.
Tihomir Trifonov (09-2011)
email:tisho@inbox.com
с подкрепата на Robotev.com
//// Аналогови входове
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
return analogRead(x2); // връща стойността за Y
void loop()// програмен цикъл
int x = readX();// чете X
int y = readY();// чете Y
Serial.print("x: ");// извежда X
Serial.print(" - y: ");// извежда Y
Serial.println(y- 130);
delay(100); // 100ms закъснение
Ако при натиск в Serial Monitor не се изписва нищо, опитайте с другата страна на панела или проверете контакта на лентовия кабел с конектора.