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

مبتدئ

image_pdf

البرمجة

ارفع الكود البرمجي الخاص بمشروع تحديد الاتجاهات على لوحة الاردوينو باستخدام بيئة تطوير الاردوينو 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
تم إضافة المنتج إلى السلة بنجاح