الاثنين، 22 يوليو، 2013

شاشة اللمس Nintendo DS Touch Screen

شاشة اللمس Nintendo DS Touch Screen



من أهم الابتكارات التكنولوجية التي ظهرت في بداية هذه الالفية هي شاشات اللمس Touch Screen و التي تعد أحدى أهم الطفرات في عالم صناعة الأجهزة الالكترونية , فمن الأجهزة الخلوية , إلى الحواسيب المحمولة Tablet  ,و غيرها الكثير جعلت هذه الشاشات التفاعل بين الأجهزة و المستخدم أكثر سهولة و متعة .


تقسم هذه الشاشة  نوعين رئيسين شائعين هما :


1) الشاشات المقاومية Resistive Touch :و التي تعتمد على مبدأ ال Strain Gauge كأساس لعملها , حيث يحدث الضغط على مكان ما على الشاشة يحدث تغيير في الفولتية على الخرج تعتمد على مقاومة المكان الذي تم الضغط عليه و بالأتجاهين x,y "مبدأ مقسم الجهد Voltage Divider " .

2) الشاشات المكثفية Capcitance Touch و هي الشائعة حالياً لوضوح صورتها و دعمها لمزايا عدة مثل اللمس المتعدد .
ستيف غوبس و هو يحمل اول هاتف من آيفون يدعم اللمس المتعدد عام 2007م

و الآن إن كنت تسائل نفسك هل تستطيع بناء واحدة بنفسك فالجواب نعم , في هذه المقالة سأشرح عن كيفية برمجة أحدى اسهل و أرخص شاشات اللمس و التي تستخدم في اجهزة الننتيندو للألعاب .

لنبدأ تنفيذ تجربتنا نحتاج إلى :




1) بطاقة اردوينو 
2)شاشة اللمس Nintendo DS Touch Screen

3) الحاضنة الخاصة بالشاشة Nintindo ds breakOut
4) اسلاك توصيل .

5) قلم شاشة "اختياري و الهدف منه الدقة في التحديد "

التوصيل :

و هذه صورة اوضح للتوصيل 
Taken from http://bildr.org/2011/06/ds-touch-screen-arduino/

البرمجة :



البرمجة ترتكز على التالي : في حال اردنا قراءة الاحداث السيني x axis نقوم بجعل x1  و x2 كمخارج Output احدهما Vcc و الأخر Gnd فيما يقوم y1  و y2 بدور المداخل التي تقرأ هذا التغيير , و العكس صحيح بالنسبة للأحداثي الصادي Y axis .




الكود :


//Mohannad Rawashdeh
//WWW.Genotronex.com  
//genotronex@gmail.com

// Code for Nintendo Ds touch screen .

//Connect the breakout with arduino like following:
//  y1  >>> A0
//  x2  >>> A1
//  y2  >>> A2
//  x1  >>> A3
int x_axis=0;
int y_axis=0;
int x1=17;
int x2=15;
int y1=14;
int y2=16;
void setup()
{
  Serial.begin(9600);
}
void Get_x_axis(){
  // make x1&x2 output and y1&y2 input 
  pinMode(x1,OUTPUT);
  pinMode(x2,OUTPUT);
  pinMode(y1,INPUT);
  pinMode(y2,INPUT);
  //this Make the x axis supplied by 5V and the Output
  //Must be show on Y1 .
  digitalWrite(x1,1);
  digitalWrite(x2,0);
  delay(5);
  x_axis=analogRead(y1); 
}
void Get_y_axis(){
  // make x1&x2 output and y1&y2 input 
  pinMode(x1,INPUT);
  pinMode(x2,INPUT);
  pinMode(y1,OUTPUT);
  pinMode(y2,OUTPUT);
  //this Make the x axis supplied by 5V and the Output
  //Must be show on Y1 .
  digitalWrite(y1,0);
  digitalWrite(y2,1);
  delay(20);
  y_axis=analogRead(x2); 
  delay(10);
}

void loop(){
Get_y_axis();
Get_x_axis();
Serial.println("  x  ,  y  ");
Serial.print(x_axis,DEC);
Serial.print("   ");
Serial.println(y_axis,DEC);
delay(500);
}


يمكنك فتح ال Serial Monitor لرؤية الاحداثيات .


تحياتي 

0 التعليقات :

إرسال تعليق

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.