البرمجة
ارفع الكود البرمجي الخاص بمشروع تحديد الاتجاهات على لوحة الاردوينو باستخدام بيئة تطوير الاردوينو 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(); }
بعد اكتمال عملية الرفع يمكنك اختبار نظام تحديد الاتجاهات.
لا تنسَ فصل مصدر الطاقة بعد الانتهاء من استخدام النظام.