اليوم، تعد شاشات TFT المزودة بوحدة التحكم ILI9341 أحد أكثر الخيارات شيوعًا لمشاريع النماذج الأولية لـ Arduino نظرًا لتعدد استخداماتها وقدراتها الرسومية. إذا كنت تبحث عن كيفية الاستفادة من هذه الشاشات في مشاريعك، فقد وصلت إلى المكان الصحيح. نوضح هنا كل ما تحتاج إلى معرفته للاتصال بشاشة ILI9341 TFT وتكوينها واستخدامها، وسنرى أيضًا بعض أمثلة التعليمات البرمجية المفيدة جدًا.
قد يبدو العمل مع هذه الشاشة معقدًا في البداية نظرًا لعدد المسامير والوصلات المطلوبة، ولكن بمجرد فهم العملية، يصبح الأمر أكثر بساطة. سنرى في هذه المقالة خطوة بخطوة كيفية إجراء الاتصال واختباره وبرمجته.
المواد اللازمة لاستخدام شاشة ILI9341 مع الاردوينو
- Arduino UNO أو 3.3 فولت اردوينو برو ميني: إذا كنت تستخدم أ Arduino UNO، ستحتاج إلى محولات المستوى المنطقي لتجنب إتلاف الشاشة، لأنها تعمل بجهد 3.3 فولت. إذا كنت تستخدم Arduino Pro Mini بجهد 3.3 فولت، فيمكنك الاتصال مباشرة.
- شاشة تي اف تي ILI9341: شاشة 2.4 أو 2.8 بوصة بدقة 240 × 320 بكسل.
- محول مستوى المنطق (إذا كنت تستخدم Arduino UNO): لتكييف المستويات من 5 فولت إلى 3.3 فولت.
- اللوح y الكابلات من الاتصال.
الخطوة 1: قم بتوصيل شاشة ILI9341 إلى Arduino
تستخدم شاشة ILI9341 TFT واجهة SPI للتواصل مع Arduino، لذلك سيكون من المهم إجراء الاتصالات الصحيحة بين منافذ SPI على Arduino والشاشة. يشرح الجدول التالي بالتفصيل كيفية إجراء التوصيلات الأساسية:
دبوس الشاشة | اردوينو دبوس |
---|---|
إس دي أو (ميسو) | رقم 12 |
SCK | رقم 13 |
سدي (موسي) | رقم 11 |
D / C | رقم 9 |
CS | رقم 10 |
GND | دبوس GND |
VCC | دبوس 3.3 فولت |
LED | دبوس 3.3 فولت |
تذكر أنه إذا كنت تستخدم Arduino UNO، سيكون من الضروري استخدام محولات المستوى المنطقي لتحويل 5V من دبابيس اردوينو إلى 3.3V. إذا كنت تستخدم Arduino Pro Mini بجهد 3.3 فولت، فهذا الاحتياط ليس ضروريًا.
الخطوة 2: تثبيت المكتبات اللازمة
للتفاعل مع شاشة ILI9341، نحتاج إلى تثبيت بعض المكتبات في Arduino IDE. يجب علينا التأكد من أن لدينا المكتبات التالية:
- ادافروت_ILI9341: هذه هي المكتبة الرئيسية لتشغيل شاشات ILI9341 باستخدام Arduino.
- Adafruit_GFX: تسهل هذه المكتبة إنشاء الرسومات الأساسية مثل الخطوط والدوائر والمستطيلات وما إلى ذلك.
لتثبيت هذه المكتبات، افتح Arduino IDE وانتقل إلى البرنامج > تضمين المكتبة > إدارة المكتبات والبحث ILI9341 لتثبيت المكتبة المقابلة. ابحث أيضًا عن محل بيع الكتب أدافروت جي إف إكس وتأكد من تثبيت الخيار الصحيح.
الخطوة 3: اختبر شاشة TFT بمثال أساسي
بمجرد تثبيت المكتبات، فقد حان الوقت لاختبار الشاشة للتأكد من أن كل شيء متصل ويعمل بشكل صحيح. يتضمن Arduino IDE مثالاً كاملاً للغاية والذي سيكون مفيدًا لنا كثيرًا. دعونا تحميل com.graphictest:
- افتح اردوينو IDE.
- اذهب إلى ملف > أمثلة > Adafruit_ILI9341 > اختبار الرسم.
- قم بتجميع المثال وتحميله على Arduino الخاص بك.
إذا سارت الأمور على ما يرام، فيجب أن تشاهد سلسلة من الرسوم البيانية التي تعرض أنواعًا مختلفة من الخطوط والأشكال والألوان على الشاشة.
الخطوة 4: إنشاء مشروع عملي: عرض القيم التناظرية على شاشة ILI9341
أحد المشاريع الأولى التي يمكننا القيام بها بهذه الشاشة هو عرض قيمة المدخلات التناظرية، مثل جهد مقياس الجهد. لهذا، سوف نستخدم منافذ العرض التي قمنا بتوصيلها بالفعل، بالإضافة إلى مقياس الجهد المتصل بالمدخل التناظري A0 الخاص بـ Arduino.
يوضح الكود التالي كيف يمكننا قراءة القيمة التناظرية لمقياس الجهد وعرضها على الشاشة:
#include
#include
#include
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
void setup() {
tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
}
void loop() {
int val = analogRead(A0);
float voltage = val * (5.0 / 1023.0);
tft.setCursor(60, 30);
tft.print("Voltaje: ");
tft.print(voltage);
delay(500);
}
يقوم هذا البرنامج بقراءة الجهد بشكل مستمر ويعرضه على الشاشة بتنسيق نصي. إذا قمت بإدارة مقبض مقياس الجهد، فيجب أن ترى التغيير ينعكس على الشاشة على الفور تقريبًا.
إضافة زر على شاشة اللمس ILI9341
بالإضافة إلى عرض المعلومات، تتمتع شاشة ILI9341 أيضًا بإمكانية اللمس إذا كانت مزودة بوحدة التحكم XPT2046. لنقم بإنشاء مثال بسيط يوضح كيفية اكتشاف اللمسات على الشاشة.
أولاً، نحتاج إلى إجراء اتصالات وحدة التحكم التي تعمل باللمس على الشاشة. المسامير الرئيسية لوحدة التحكم باللمس هي:
- TOUCH_CS: دبوس 10.
- TOUCH_IRQ: دبوس 2.
بعد إجراء هذه الاتصالات، سوف نستخدم المكتبة XPT2046_شاشة تعمل باللمس للكشف عن اللمسات. أترك لك أدناه رمزًا يظهر زرًا على الشاشة يتغير لونه في كل مرة يتم الضغط عليه.
#include
#include
#include
#include
#define TFT_DC 9
#define TFT_CS 10
#define TOUCH_CS 10
#define TOUCH_IRQ 2
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
XPT2046_Touchscreen ts(TOUCH_CS, TOUCH_IRQ);
void setup() {
tft.begin();
ts.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
tft.fillRect(50, 160, 100, 50, ILI9341_RED);
tft.setCursor(75, 175);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("BOTON");
}
void loop() {
if (ts.touched()) {
TS_Point p = ts.getPoint();
if (p.x >= 50 && p.x <= 150 && p.y >= 160 && p.y <= 210) {
tft.fillRect(50, 160, 100, 50, ILI9341_GREEN);
tft.setCursor(75, 175);
tft.println("PULSADO");
}
}
}
يكتشف الرمز ما إذا تم الضغط على الزر ويغير لونه من الأحمر إلى الأخضر. يمكنك أيضًا تخصيص موضع الزر وحجمه وفقًا لاحتياجاتك.
من الضروري التأكد من أن الشاشة بشكل صحيح معايرة بحيث تتوافق اللمسات بشكل صحيح مع إحداثيات الشاشة. إذا لاحظت أن استجابة اللمس غير دقيقة، فقد يكون من الضروري إجراء معايرة تتعلق بدقة الشاشة.