كيفية ربط شيلد عصا التحكم Joystick Shield v2.4 مع الاردوينو : 1

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

في هذا المشروع ، سنرى كيفية استخدام Arduino Joystick Shield . هناك إصدارات مختلفة ، لكننا سنستخدم الإصدار 2.4 ، والذي يحتوي على بعض الميزات المثيرة للاهتمام وبعض الأزرار الإضافية التي يمكن استخدامها في التطبيق بطرق مختلفة .

arduino joys3tick shield-1000x1000 (1)

يوفر Arduino Joystick Shield v2.4 سبعة مفاتيح زر للضغط (ستة أزرار ضغط منفصلة وزر ضغط على زر عصا التحكم) وعصا التحكم مع اثنين من مقاييس الجهد . يمنح هذا الدرع الاردوينو الخاص بك الوظيفة الموجودة على وحدات تحكم Nintendo القديمة . يمكن استخدام عصا التحكم للتحكم في المخرجات مثل البكسل على الشاشة . يمكن استخدام الأزرار للملاحة أو التحكم في اللعبة .

منتجات المشروع
Untitledn1
  1. 1 × اردوينو أونو مع كابل USB
  2. 1 × اردوينو جويستيك شيلد v2.4
  3. مزود الطاقة 5 فولت

 

التجربة 1: قراءة قيم عصا التحكم

يحتوي ذراع التحكم على مقاييس جهد ، يمكنك توصيلها بدبابيس تمثيلية A0 و A1 على الاردوينو . تتوافق قيمة A0 مع موضع X . وقيمة A1 تتوافق مع موضع Y . لقراءة هذه القيم التناظرية ، استخدم دالة AnalogRead () .

الخطوات :
  • إرفق درع عصا التحكم الخاص بك إلى لوحة اردوينو .
  • قم بتوصيل لوحة اردوينو بجهاز الكمبيوتر الخاص بك
  • سوف تضيء LED على درع عصا التحكم ، لتُظهر أنها تعمل بشكل صحيح .
  • قم بتحميل الكود على لوحتك ؛ من الممارسات الجيدة .
  • بعد تحميل الكود ، قم بتشغيل جهاز العرض التسلسلي لمراقبة القيم .
  • حرك عصا التحكم في اتجاهات مختلفة وستلاحظ أن القيم على الشاشة التسلسلية ستتغير .

يمكنك تحريك عصا التحكم في 8 اتجاهات: أعلى ، يمين لأعلى ، يمين ، لأسفل يمين ، أسفل ، يسار ، يسار لأسفل ، يسار لأعلى . إذا تغيرت القيم على جهاز العرض التسلسلي ، فإن درعك يعمل بشكل صحيح مبروك …

سيعرض هذا الكود شيئًا كهذا إذا كان الدرع متصلاً بـ 5 فولت .

joystick2
تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.

الكود البرمجي للتجربة 1

لتحميل الكود البرمجي اضغط هنا
// define global variables for analog pins.

// X values will be read from pin 0 and Y from pin 1

#define PIN_ANALOG_X 0

#define PIN_ANALOG_Y 1

 

void setup() {

 // Start serial because we will observe values at serial monitor

 Serial.begin(9600);

}

 

void loop() {

 // Print x axis values

 Serial.print("x: ");

 Serial.println(analogRead(PIN_ANALOG_X));

 // Print y axis values

 Serial.print("y: ");

 Serial.println(analogRead(PIN_ANALOG_Y));

 

 // Some delay to clearly observe your values on serial monitor.

 delay(500);

}

التجربة 2 : استخدام عصا التحكم للسيطرة على الحركة :

للتحكم في الحركة على طول المحور السيني ، يتعين عليك أولاً قراءة موضع مقياس الجهد للمحور  السيني وتحديد ما إذا كان المستخدم يضغط عنصر التحكم على اليمين أو اليسار ، أو لا يضغط عليه على الإطلاق .

عندما لا يتم الضغط عليه يمينًا أو يسارًا ، تكون قيمة A0 هي 523 عادةً . من أجل مراعاة بعض الاختلافات في تلك القراءة بين وحدات الدرع المختلفة ، سنقوم بتعيين درجة تحمل تساوي 30 .

وهذا يعني أننا عندما نقرأ قيمة بين 493 و 553 ، سنفترض أن المستخدم لا يضغط على عصا التحكم . تعني قراءة أقل من 493 أن المستخدم يضغط على عصا التحكم إلى اليسار ويريد أن يتحرك بالعصا إلى اليسار . تعني قراءة أكثر من 553 أن المستخدم يضغط على عصا التحكم إلى اليمين ويريد أن يتحرك بالعصا إلى اليمين .

سيعرض هذا الكود شيئًا مثل هذا :

joystick3

الكود البرمجي للتجربة 2

لتحميل الكود البرمجي اضغط هنا
// define global variables for analog pins.

// X values will be read from pin 0 and Y from pin 1

#define PIN_ANALOG_X 0

#define PIN_ANALOG_Y 1



void setup() {

 // Start serial because we will observe values at serial monitor

 Serial.begin(9600);

}



void loop() {

 // Print x axis values

 Serial.print("x: ");

 Serial.println(analogRead(PIN_ANALOG_X));

 // Print y axis values

 Serial.print("y: ");

 Serial.println(analogRead(PIN_ANALOG_Y));



 // Some delay to clearly observe your values on serial monitor.

 delay(500);

}

التجربة 3: قراءة مفاتيح الضغط على زر عصا التحكم

ترتبط مفاتيح الضغط بكل بساطة مع دبابيس الاردوينو الرقمية I / O كما هو مبين في الجدول أدناه :

عند الضغط على المفتاح A ، سيتم إرسال إشارة رقمية إلى D2 وما إلى ذلك . سوف نستخدم وظيفة digitalRead () لتحديد حالة الأزرار .

نظرًا لعدم وجود مقاومات متصلة بهذه الأزرار الموجودة على درع ذراع التحكم ، يتعين عليك تمكين مقاومات السحب على الاردوينو . يوجد أدناه الكود البرمجي لتمكين مقاومات السحب وقراءة القيم الرقمية .

عندما يضغط المستخدم على زر ضغط ، يعرض الاردوينو قيمة الزر على الشاشة التسلسلية .

الكود البرمجي للتجربة 3

لتحميل الكود البرمجي اضغط هنا
#define BUTTON_UP 2

#define BUTTON_RIGHT 3

#define BUTTON_DOWN 4

#define BUTTON_LEFT 5

#define BUTTON_E 6

#define BUTTON_F 7



#define DELAY 500



void setup() {

 Serial.begin(9600);



 // to enable pull up resistors first write pin mode

 // and then make that pin HIGH

 pinMode(BUTTON_UP, INPUT);

 digitalWrite(BUTTON_UP, HIGH);



 pinMode(BUTTON_RIGHT, INPUT);

 digitalWrite(BUTTON_RIGHT, HIGH);



 pinMode(BUTTON_DOWN, INPUT);

 digitalWrite(BUTTON_DOWN, HIGH);



 pinMode(BUTTON_LEFT, INPUT);

 digitalWrite(BUTTON_LEFT, HIGH);



 pinMode(BUTTON_E, INPUT);

 digitalWrite(BUTTON_E, HIGH);



 pinMode(BUTTON_F, INPUT);

 digitalWrite(BUTTON_F, HIGH);

}



void loop() {

 if(digitalRead(BUTTON_UP) == LOW) {

   Serial.println("Button A is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_RIGHT) == LOW) {

   Serial.println("Button B is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_DOWN) == LOW) {

   Serial.println("Button C is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_LEFT) == LOW) {

   Serial.println("Button D is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_E) == LOW) {

   Serial.println("Button E is pressed");

   delay(DELAY);

 }

 else if(digitalRead(BUTTON_F) == LOW) {

   Serial.println("Button F is pressed");

   delay(DELAY);

 }

}

أنتهت !!!

1 Comments

  1. نشكركم

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *