- المواد المطلوبة:
- التعرف على وحدة شاشة TFT LCD:
- معايرة شاشة TFT LCD لشاشة اللمس:
- اتصالات TFT LCD مع Arduino:
- برمجة Arduino الخاص بك لشاشة TFT LCD:
- العمل:
ساعد Arduino دائمًا في بناء المشاريع بسهولة وجعلها تبدو أكثر جاذبية. قد تبدو برمجة شاشة LCD بخيار شاشة اللمس مهمة معقدة ، لكن مكتبات Arduino ودروعها جعلت الأمر سهلاً حقًا. في هذا المشروع ، سنستخدم شاشة Arduino TFT LCD مقاس 2.4 بوصة لبناء آلة حاسبة خاصة بنا تعمل باللمس من Arduino والتي يمكنها إجراء جميع الحسابات الأساسية مثل الجمع والطرح والقسمة والضرب.
المواد المطلوبة:
- اردوينو اونو
- 2.4 بوصة TFT LCD درع
- بطارية 9 فولت.
التعرف على وحدة شاشة TFT LCD:
قبل أن نتعمق بالفعل في المشروع ، من المهم أن نعرف كيف تعمل وحدة TFT LCD مقاس 2.4 بوصة وما هي الأنواع الموجودة فيها. دعونا نلقي نظرة على منافذ التوصيل لوحدة شاشة TFT LCD مقاس 2.4 بوصة.
كما ترى ، يوجد 28 دبوسًا يتناسب تمامًا مع أي لوحة Arduino Uno / Arduino Mega Board. يوجد تصنيف صغير لهذه المسامير في الجدول أدناه.
كما ترى ، يمكن تصنيف المسامير إلى أربعة تصنيفات رئيسية مثل دبابيس أوامر LCD ودبابيس بيانات LCD ودبابيس بطاقة SD ودبابيس الطاقة ، لا نحتاج إلى معرفة الكثير عن العمل التفصيلي لهذه المسامير حيث سيتم الاعتناء بها. مكتبة Arduino الخاصة بنا.
يمكنك أيضًا العثور على فتحة بطاقة SD في الجزء السفلي من الوحدة الموضحة أعلاه ، والتي يمكن استخدامها لتحميل بطاقة SD بملفات صور bmp ، ويمكن عرض هذه الصور على شاشة TFT LCD الخاصة بنا باستخدام برنامج Arduino.
شيء آخر مهم يجب ملاحظته هو Interface IC. هناك العديد من أنواع وحدات TFT المتوفرة في السوق بدءًا من وحدة Adafruit TFT LCD الأصلية وحتى النسخ الصينية الرخيصة. قد لا يعمل البرنامج الذي يعمل بشكل مثالي مع درع Adafruit بنفس الطريقة مع لوحات الاختراق الصينية. لذلك ، من المهم جدًا معرفة أنواع شاشات LCD التي تمسك بها. يجب الحصول على هذه التفاصيل من البائع. إذا كان لديك استنساخ رخيص مثل لي ، فمن الأرجح أنه يستخدم برنامج التشغيل ili9341 IC. يمكنك اتباع واجهة TFT LCD مع برنامج Arduino التعليمي لتجربة بعض الأمثلة الأساسية للبرامج والحصول على الراحة مع شاشة LCD. تحقق أيضًا من مشاريع TFT LCD الأخرى مع Arduino هنا:
- كيفية استخدام شريط NeoPixel LED مع Arduino و TFT LCD
- قفل رمز رقمي للتحكم في الهاتف الذكي باستخدام Arduino
معايرة شاشة TFT LCD لشاشة اللمس:
إذا كنت تخطط لاستخدام وظيفة شاشة اللمس لوحدة TFT LCD الخاصة بك ، فعليك معايرتها لجعلها تعمل بشكل صحيح. قد تعمل شاشة LCD بدون معايرة بشكل غير محتمل ، على سبيل المثال قد تلمس في مكان ما وقد تستجيب شاشة TFT للمس في مكان آخر. لن تكون نتائج المعايرة هذه متشابهة بالنسبة لجميع اللوحات ، وبالتالي تُترك وحدك للقيام بذلك.
أفضل طريقة للمعايرة هي استخدام برنامج مثال المعايرة (يأتي مع مكتبة) أو استخدام الشاشة التسلسلية لاكتشاف الخطأ. ومع ذلك ، بالنسبة لهذا المشروع ، نظرًا لأن حجم الأزرار كبير الحجم ، لا ينبغي أن تكون المعايرة مشكلة كبيرة وسأشرح أيضًا كيف يمكنك معايرة شاشتك ضمن قسم البرمجة أدناه.
اتصالات TFT LCD مع Arduino:
تعد شاشة TFT LCD مقاس 2.4 بوصة بمثابة درع Arduino مثالي. يمكنك دفع شاشة LCD مباشرة أعلى Arduino Uno وستتوافق تمامًا مع المسامير وتنزلق من خلالها. ومع ذلك ، كأمور تتعلق بالسلامة ، قم بتغطية محطة البرمجة في Arduino UNO بشريط عازل صغير ، فقط في حالة اتصال الجهاز بشاشة TFT LCD. ستبدو شاشة LCD المُجمَّعة في UNO كما يلي.
برمجة Arduino الخاص بك لشاشة TFT LCD:
نحن نستخدم مكتبة SPFD5408 لتشغيل كود آلة حاسبة اردوينو. هذه مكتبة معدلة من Adafruit ويمكن أن تعمل بسلاسة مع وحدة LCD TFT. يمكنك التحقق من البرنامج الكامل في نهاية هذه المقالة.
ملاحظة: من المهم جدًا تثبيت هذه المكتبة في Arduino IDE الخاص بك أو هذا البرنامج لتجميعها دون أي خطأ.
لتثبيت هذه المكتبة ، يمكنك ببساطة النقر فوق الارتباط أعلاه الذي سينقلك إلى صفحة Github. انقر هناك على استنساخ أو تنزيل وحدد "تنزيل ZIP". سيتم تنزيل ملف مضغوط.
الآن ، افتح Arduino IDE وحدد Sketch -> Include Librarey -> Add.ZIP library. ستفتح نافذة متصفح انتقل إلى ملف ZIP وانقر على "موافق". يجب أن تلاحظ عبارة "تمت إضافة المكتبة إلى مكتباتك" في الزاوية السفلية اليسرى من Arduino ، إذا نجحت. يوجد دليل مفصل للقيام بالشيء نفسه في البرنامج التعليمي Interfacing.
الآن ، يمكنك استخدام الكود أدناه في Arduino IDE الخاص بك وتحميله إلى Arduino UNO الخاص بك حتى تعمل Touch Screen Calculator. علاوة على ذلك ، قمت بشرح الكود إلى أجزاء صغيرة.
نحتاج إلى ثلاث مكتبات حتى يعمل هذا البرنامج ؛ تم تقديم كل هذه المكتبات الثلاث في ملف ZIP الذي قمت بتنزيله من الرابط المذكور أعلاه. لقد أدرجتها ببساطة في الكود كما هو موضح أدناه.
#تضمن
كما ذكرنا سابقًا ، نحتاج إلى معايرة شاشة LCD لجعلها تعمل كما هو متوقع ، ولكن لا تقلق من أن القيم الواردة هنا عالمية تقريبًا. تحدد المتغيرات TS_MINX و TS_MINY و TS_MAXX و TS_MAXY معايرة الشاشة. يمكنك اللعب حولها إذا شعرت أن المعايرة غير مرضية.
#define TS_MINX 125 #define TS_MINY 85 #define TS_MAXX 965 #define TS_MAXY 905
كما نعلم يمكن لشاشة TFT LCD عرض الكثير من الألوان ، يجب إدخال كل هذه الألوان في قيمة سداسية عشرية. لجعلها أكثر قابلية للقراءة ، نقوم بتعيين هذه القيم إلى متغير كما هو موضح أدناه.
#define WHITE 0x0000 // Black-> White #define YELLOW 0x001F // Blue-> Yellow #define CYAN 0xF800 // Red-> Cyan #define PINK 0x07E0 // Green-> Pink #define RED 0x07FF // Cyan -> Red #define GREEN 0xF81F // Pink -> Green #define BLUE 0xFFE0 // Yellow-> Blue #define BLACK 0xFFFF // White-> Black
حسنًا الآن ، يمكننا الدخول في جزء البرمجة. هناك ثلاثة أقسام تشارك في هذا البرنامج. الأول هو إنشاء واجهة مستخدم لآلة حاسبة مع أزرار وشاشة. ثم يتم الكشف عن الأزرار بناءً على لمس المستخدمين وأخيراً حساب النتائج وعرضها. دعونا نتجاوزهم واحدا تلو الآخر.
1. إنشاء واجهة مستخدم للحاسبة:
هذا هو المكان الذي يمكنك فيه استخدام الكثير من إبداعك لتصميم واجهة المستخدم للآلة الحاسبة. لقد قمت ببساطة بعمل تخطيط أساسي لآلة حاسبة مع 16 زرًا ووحدة عرض واحدة. يجب عليك إنشاء التصميم تمامًا كما ترسم شيئًا على طلاء MS. ستسمح لك المكتبات المضافة برسم الخطوط والمستطيل والدوائر والأحرف والسلاسل والمزيد من أي لون مفضل. يمكنك فهم الوظائف المتاحة من هذه المقالة.
لقد استخدمت إمكانيات رسم الخط والمربع لتصميم واجهة مستخدم تشبه إلى حد بعيد الآلة الحاسبة في التسعينيات. يبلغ عرض كل صندوق وارتفاعه 60 بكسل.
// ارسم مربع النتيجة tft.fillRect (0، 0، 240، 80، CYAN) ؛ // رسم العمود الأول tft.fillRect (0،260،60،60 ، RED) ؛ tft.fillRect (0،200،60،60 ، أسود) ؛ tft.fillRect (0،140،60،60 ، أسود) ؛ tft.fillRect (0،80،60،60 ، أسود) ؛ // رسم العمود الثالث tft.fillRect (120،260،60،60 ، GREEN) ؛ tft.fillRect (120،200،60،60 ، أسود) ؛ tft.fillRect (120،140،60،60 ، أسود) ؛ tft.fillRect (120،80،60،60 ، أسود) ؛ // رسم الثانية والعمود الرابع لـ (int b = 260؛ b> = 80؛ b- = 60) {tft.fillRect (180، b، 60،60، BLUE) ؛ tft.fillRect (60، b، 60،60، BLACK)؛} // رسم خطوط أفقية لـ (int h = 80؛ h <= 320؛ h + = 60) tft.drawFastHLine (0، h، 240، WHITE) ؛ // رسم خطوط عمودية لـ (int v = 0 ؛ v <= 240 ؛ v + = 60) tft.drawFastVLine (v ، 80 ، 240 ، WHITE) ؛ // Display keypad lables لـ (int j = 0؛ j <4؛ j ++) {for (int i = 0؛ i <4؛ i ++) {tft.setCursor (22 + (60 * i)، 100 + (60 * ي)) ؛ tft.setTextSize (3) ، tft.setTextColor (أبيض) ، tft.println (رمز) ؛
2. الكشف عن الأزرار:
مهمة صعبة أخرى هي اكتشاف لمسة المستخدم. في كل مرة يلمس فيها المستخدم مكانًا ما ، يمكننا تحديد موضع X و Y للبكسل الذي لمسه. يمكن عرض هذه القيمة على الشاشة التسلسلية باستخدام println كما هو موضح أدناه.
TSPoint p = waitTouch () ، س = الحمر ؛ ص = بكسل ؛ Serial.print (X) ؛ Serial.print ('،')؛ Serial.println (Y) ؛ // + "" + Y) ؛
نظرًا لأننا صممنا الصندوق بعرض وارتفاع 60 بكسل لكل منها وله أربعة صفوف وللأعمدة تبدأ من (0،0). يمكن توقع موضع كل صندوق كما هو موضح في الصورة أدناه.
لكن في الحالة العملية ، لن تكون هذه هي النتيجة. سيكون هناك فرق كبير بين القيمة المتوقعة والقيمة الفعلية بسبب مشكلة المعايرة.
لذلك ، للتنبؤ بالموضع الدقيق للمربع ، عليك النقر فوق الخط والتحقق من موضعه المقابل على الشاشة التسلسلية. قد لا تكون هذه الطريقة الأكثر احترافًا للقيام بذلك ، لكنها لا تزال تعمل بشكل مثالي. قمت بقياس موضع جميع الخطوط وحصلت على القيم أدناه.
الآن ، لأننا نعرف موقع كل الصناديق. عندما يلمس المستخدم أي مكان يمكننا التنبؤ بالمكان الذي لمسه من خلال مقارنة قيمه (X ، Y) مع قيمة كل مربع كما هو موضح أدناه.
إذا (X <105 && X> 50) // الكشف عن الأزرار في العمود 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0")؛ // يتم الضغط على الزر 0 إذا كان (الرقم == 0) الرقم = 0 ؛ رقم آخر = (رقم * 10) + 0 ؛ // Pressed مرتين} if (Y> 85 && Y <140) {Serial.println ("Button 2")؛ إذا (الرقم == 0) الرقم = 2 ؛ رقم آخر = (رقم * 10) + 2 ؛ // الضغط مرتين}
3. عرض الأعداد وحساب النتيجة:
الخطوة الأخيرة هي حساب النتيجة وعرضها على شاشة TFT LCD. يمكن لآلة حاسبة اردوينو هذه إجراء العملية باستخدام رقمين فقط. تم تسمية هذين الرقمين كمتغيرين "Num1" و "Num2". المتغير "Number" يعطي ويأخذ قيمة من Num1 و Num2 ويحمل أيضًا النتيجة.
عندما يضغط أحد الاستخدامات على زر ، تتم إضافة رقم واحد إلى الرقم. عند الضغط على زر آخر ، يتم ضرب الرقم السابق بـ 10 ويتم إضافة الرقم الجديد معه. على سبيل المثال ، إذا ضغطنا على 8 ثم ضغطنا على 5 ثم ضغطنا على 7. ثم المتغير أولاً سيحتفظ بـ 8 ثم (8 * 10) + 5 = 85 ثم (85 * 10) +7 = 857. القيمة 857 معها.
if (Y> 192 && Y <245) {Serial.println ("Button 8")؛ إذا كان (الرقم == 0) الرقم = 8 ؛ رقم آخر = (رقم * 10) + 8 ؛ // الضغط مرة أخرى}
عندما نقوم بأي عملية مثل الإضافة ، عندما يضغط المستخدمون على زر الإضافة ، سيتم نقل القيمة من Number إلى Num1 ثم يصبح Number صفرًا بحيث يصبح جاهزًا لأخذ الإدخال للرقم الثاني.
عند الضغط على Equal ، سيتم إرسال القيمة الموجودة في Number إلى Num2 وبعد ذلك سيتم إجراء الحساب المعني (الإضافة في هذه الحالة) وسيتم تخزين النتيجة مرة أخرى في المتغير "Number".
أخيرًا ، سيتم عرض هذه القيمة على شاشة LCD.
العمل:
إن عمل حاسبة شاشة اللمس من Arduino أمر بسيط. يجب عليك تحميل الكود أدناه على Arduino الخاص بك وتشغيله. يتم عرض الآلة الحاسبة على شاشة LCD الخاصة بك.
الآن ، يمكنك إدخال أي رقم وإجراء الحسابات الخاصة بك. يقتصر على معاملين فقط وعامل فقط في الوقت الحالي. ولكن ، يمكنك تعديل الكود لجعله يحتوي على الكثير من الخيارات.
يجب عليك الضغط على "C" لمسح القيمة التي تظهر على الشاشة في كل مرة بعد إجراء الحساب. آمل أن تكون قد فهمت المشروع واستمتعت ببناء شيء مشابه. إذا كانت لديك أي شكوك فلا تتردد في نشرها على المنتديات أو في قسم التعليقات أدناه. نراكم في المرة القادمة بمشروع آخر ممتع حتى ذلك الحين سعيد الحوسبة !!
تحقق أيضًا من فيديو العرض التوضيحي أدناه.