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

