تحديد الاتجاهات باستخدام لوحة الاردوينو وعصا التحكم

مبتدئ

image_pdf

مقدمة

في هذا الدرس سنستخدم لوحة الاردوينو وعصا التحكم والشاشة الكرستالية؛ لتتعرف على برمجة عصا التحكم وطباعة الاتجاهات على المحور. (x,y) على الشاشة الكرستالية
show-directions-using-arduino-joystick

المواد والأدوات

اردوينو

1× اردوينو اونو

سلك اردوينو

1× سلك الاردوينو

show-directions-using-arduino-joystick

 1× شاشة كرستالية

دولار نينجا

1× 40 رأس دبوس

أسلاك توصيل

 حزمة أسلاك توصيل (ذكر- ذكر)

أسلاك توصيل

حزمة أسلاك توصيل (ذكر – أنثى)

تحديد الاتجاهات

1× 2C / IIC Serial Interface Module

1×  عصا التحكم

show-directions-using-arduino-joystick

1× لوحة تجارب – حجم كبير

توصيل الدائرة

لمعرفة المزيد حول الشاشة الكرستالية يمكنك الرجوع للدرس التحكم بالشاشة الكرستالية LCD.

لابد من تلحيم المنافذ مع الشاشة الكرستالية، للمزيد حول اللحام يمكنك الرجوع للدرس تعلم كيفية التلحيم – تلحيم القطع باللوحة الإلكترونيةshow-directions-using-arduino-joystick

البرمجة

ارفع الكود البرمجي الخاص بمشروع تحديد الاتجاهات على لوحة الاردوينو باستخدام بيئة تطوير الاردوينو IDE.

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() 
{
analogReference(DEFAULT);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
lcd.begin(); 
}

void loop() {
int X, Y, P ;
Y = analogRead(A1); 
X = analogRead(A2); 
P = digitalRead(A0); 
lcd.setCursor(0, 0);
if ((480 <= X) & (530 >= X) & (480 <= Y) & (530 >= Y)) {
}

if ((531 <= X) & (480 <= Y) & (530 >= Y)) {
lcd.print("UP");
}

if ((X <= 479) & (480 <= Y) & (530 >= Y)) {
lcd.print("Down");
}

if ((480 <= X) & (530 >= X) & (531 <= Y)) {
lcd.print("Right");
}

if ((480 <= X) & (530 >= X) & (Y <= 479)) {
lcd.print("Left");
}

if ((531 <= X) & (531 <= Y)) {
lcd.print("UP and Right");
}

if ((531 <= X) & (Y <= 479)) {
lcd.print("UP and Left");
}

if ((X <= 479) & (531 <= Y)) {
lcd.print("Down and Right");
}

if ((X <= 479) & (Y <= 479)) {
lcd.print("Down and Left");
}

if (P == 0) {
lcd.setCursor(0, 1);
lcd.print("PUSH");
}

delay(300);
lcd.clear();
}

شرح الكود البرمجي

سنقوم في البداية باستدعاء مكتبة (LiquidCrystal_I2C.h) الخاصة بوحدة i2c والتي تحتوي على مجموعة أوامر برمجية نحتاجها في مشروع تحديد الاتجاهات.

ثم نضيفها للاردوينو IDE.

بتتبع المسار التالي:

Sketch > Include libraries > Add ZIP library .

ونضيف المجلد الذي قمنا بتحميله.

#include <LiquidCrystal_I2C.h>

نعرف عنوان وحدة i2c.

LiquidCrystal_I2C lcd(0x27, 16, 2);

في الدالة ()setup سنعرف متغيرات عصا التحكم والتي ستكون كمدخلات.

وسنقوم بتهيئة الشاشة الكرستالية استعدادًا لطباعة المخرجات.

void setup() 
{
analogReference(DEFAULT);
pinMode(A0, INPUT_PULLUP);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
lcd.begin(); 
}

في الدالة ()loop سنقوم بقراءة البيانات من عصا التحكم وعلى أساس تلك المدخلات سيتم تحديد الجهة وطباعة الجهة على الشاشة الكرستالية.

الجهات التي سيتم قراءتها وطباعتها على الشاشة:

(الأعلى- الأسفل-يمين-يسار- أعلى اليسار-أعلى اليمين-أسفل اليسار-أسفل اليمين).

void loop() {
int X, Y, P ;
Y = analogRead(A1); 
X = analogRead(A2); 
P = digitalRead(A0); 
lcd.setCursor(0, 0);
if ((480 <= X) & (530 >= X) & (480 <= Y) & (530 >= Y)) {
}

if ((531 <= X) & (480 <= Y) & (530 >= Y)) {
lcd.print("UP");
}

if ((X <= 479) & (480 <= Y) & (530 >= Y)) {
lcd.print("Down");
}

if ((480 <= X) & (530 >= X) & (531 <= Y)) {
lcd.print("Right");
}

if ((480 <= X) & (530 >= X) & (Y <= 479)) {
lcd.print("Left");
}

if ((531 <= X) & (531 <= Y)) {
lcd.print("UP and Right");
}

if ((531 <= X) & (Y <= 479)) {
lcd.print("UP and Left");
}

if ((X <= 479) & (531 <= Y)) {
lcd.print("Down and Right");
}

if ((X <= 479) & (Y <= 479)) {
lcd.print("Down and Left");
}

if (P == 0) {
lcd.setCursor(0, 1);
lcd.print("PUSH");
}

delay(300);
lcd.clear();
}

بعد اكتمال عملية الرفع يمكنك اختبار نظام تحديد الاتجاهات.

 لا تنسَ فصل مصدر الطاقة بعد الانتهاء من استخدام النظام.

X
تم إضافة المنتج إلى السلة بنجاح