جدول المحتويات:
- الخطوة 1: متطلبات الأجهزة والبرامج
- الخطوة 2: تعديل UTFT Lib
- الخطوة 3: تهيئة TFT Shield
- الخطوة 4: أساسيات Hello World
- الخطوة 5: خطوط UTFT
- الخطوة 6: الأشكال والخطوط والنمط UTFT
- الخطوة 7: UTFT Bitmap
- الخطوة 8: زر الربط
- الخطوة 9: فلابي بيرد
- الخطوة 10: عمل المشروع
فيديو: أساسيات واجهة Arduino TFT: 10 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:39
شاشات اللمس TFT هي الواجهة الرسومية المذهلة التي يمكن استخدامها مع المتحكمات الدقيقة مثل Atmel و PIC و STM ، حيث تتمتع بنطاق ألوان واسع وقدرة رسومية جيدة وتخطيط جيد للبكسل.
اليوم ، سنذهب إلى Interface 2.4 inch TFT LCD Shield مع Arduino.
هذا الدرع مخصص لـ Arduino UNO ، لكنني سأعلم كيفية استخدامه مع Arduino Mega لسبب منطقي للغاية ، "ذاكرة البرنامج".
باستخدام درع TFT LCD الملون هذا ، يمكننا عرض الأحرف والسلاسل وتفاعل الأزرار والصور النقطية وما إلى ذلك على شاشة TFT LCD الملونة.
الخطوة 1: متطلبات الأجهزة والبرامج
لجعل واجهة الدرع مع Arduino mega ، نحتاج إلى ما يلي.
المعدات:
• اردوينو ميجا
• شاشة TFT 2.4 / 2.8 / 3.2 بوصة LCD
• كابل USB
البرمجيات
• اردوينو IDE
• مكتبة UTFT / مكتبة spfd5408
تم تصميم Shield في الأصل للوحات Arduino UNO ، والتي يمكن استخدامها مع Arduino mega.
هناك مشكلتان رئيسيتان أثناء استخدامه مع Arduino UNO: "ذاكرة التخزين" واستخدام المسامير.
من الصعب استخدام المسامير غير المستخدمة المتوفرة على UNO ، في حين أنها أفضل مع Arduino MEGA نظرًا لوجود المزيد من دبابيس الإدخال / الإخراج المتبقية.
في الخطوة التالية ، سأوضح كيفية تحرير مكتبة UTFT لاستخدام درع TFT
الخطوة 2: تعديل UTFT Lib
هذه المكتبة هي استمرار لمكتبتي ITDB02_Graph و ITDB02_Graph16 و RGB_GLCD لـ Arduino و chipKit. نظرًا لأن عدد وحدات العرض ووحدات التحكم المدعومة بدأ في الزيادة ، شعرت أن الوقت قد حان لإنشاء مكتبة عالمية واحدة حيث سيكون من الأسهل الحفاظ عليها في المستقبل.
يحتوي Arduino MEGA على 256 كيلو بايت من ذاكرة البرنامج. بالإضافة إلى ذلك ، هناك 54 دبابيس.
معظمها مجاني للاستخدام ، والنظير 5 فقط مأخوذ من 16.
تدعم هذه المكتبة عددًا من عروض الرسومات 8 بت و 16 بت ورسومات متسلسلة ، وستعمل مع كل من لوحات Arduino و chipKit واختيار TI LaunchPads.
ملحوظة: نظرًا لحجم المكتبة ، لا أوصي باستخدامها على ATmega328 (Arduino Uno) و ATmega32U4 (Arduino Leonardo) نظرًا لأنهما يحتويان فقط على 32 كيلوبايت من ذاكرة الفلاش. ستعمل ، لكنك ستكون محدودًا بشدة في ذاكرة الفلاش المتاحة لتطبيقك
خطوات
- قم بتنزيل مكتبة UTFT
- قم بفك ضغط المكتبة
- افتح UTFT / Hardware / avr في حالة Arduino أو حسب وحدة التحكم الدقيقة المستخدمة
- افتح HW_AVR_defines باستخدام المفكرة
- Uncomment Line 7 لتمكين درع UNO لـ MEGA
- احفظ الملف وأضف هذه المكتبة إلى Arduino IDE
الآن انتهينا من هذه الخطوة! في الخطوة التالية ، سأعرض استخدام المكتبة وتحديد دبابيس Arduino Mega.
الخطوة 3: تهيئة TFT Shield
بعد تحرير المكتبة ، قم بإضافتها إلى دليل Arduino.
بعد ذلك ، سأوضح لك كيفية تحديد وحدة TFT المناسبة التي لديك
يجب أن نجد اسم الوحدة الخاصة بها في المكتبة.
- افتح ملف المكتبة
- اذهب إلى الوثائق
يمكنك رؤية هذه الملفات في الوثائق
• UTFT:
يعرض هذا الملف جميع الوظائف والأوامر المضمنة في هذه المكتبة.
• متطلبات UTFT_
يحتوي هذا الملف على معلومات حول الوحدات النمطية وكيفية ارتباطها بالمكتبة ، مثل تكوينات الدبابيس
• UTFT_Supported_display_modules _ & _ تحكم
هذا هو هدفنا ، هذا الملف يحتوي على أسماء الوحدات والدروع التي تدعمها هذه المكتبة ، يمكنك أن ترى فيه قائمة بأسماء الوحدات وأسماء الوحدات الخاصة بـ UTFT والتي يجب أن تستخدمها لتعريف الوحدة الخاصة بك.
خطوات تعريف TFT:
افتح UTFT_Supported_display_modules _ & _ ملف تحكم من المكتبة
- افتح UTFT_Supported_display_modules _ & _ ملف تحكم من المكتبة
- ابحث عن نماذج UTFT للوحدات (الدرع) التي لديك.
- الآن لتحديد وظيفة UTFT على Arduino IDE ، نستخدم الأمر:
اسم UTFT (الوحدة النمطية ، Rs ، Wr ، Cs ، Rst) ؛
افتح ملف UTFT_Requirement من المكتبة
من المستند ، نعلم أن المسامير موجودة على دبابيس A5 و A4 و A3 و A2.
نستخدم الأمر:
UTFT myGLCD (ITDB28 ، 19 ، 18 ، 17 ، 16) ؛ # لاحظ أن المسامير 19 و 18 و 17 و 16 في Arduino Mega
UTFT myGLCD (ITDB28، A5، A4، A3، A2) ؛ # لاحظ أن المسامير A5 ، A4 ، A3 ، A2 في Arduino UNO
وانتهى! يمكنك الآن استخدام أمثلة المكتبة على Arduino IDE مع التغييرات التالية.
الخطوة 4: أساسيات Hello World
# تضمين // حدد الخطوط التي سنستخدمها
خارجي uint8_t BigFont ؛ خارجي uint8_t SevenSegNumFont ؛ // تذكر تغيير معلمة النموذج لتناسب وحدة العرض الخاصة بك! UTFT myGLCD (ITDB28، A5، A4، A3، A2) ؛ إعداد باطل () {myGLCD. InitLCD () ، myGLCD.clrScr () ، myGLCD.setFont (BigFont) ، } حلقة فارغة () {myGLCD.setColor (0، 255، 0)؛ // green myGLCD.print ("HELLO WORLD"، 45، 100) ؛ احيانا صحيح) {}؛ }
الخطوة 5: خطوط UTFT
# تضمين // حدد الخطوط التي سنستخدمها
خارجي uint8_t SmallFont ؛ خارجي uint8_t BigFont ؛ خارجي uint8_t SevenSegNumFont ؛ // اضبط المسامير على المسامير الصحيحة لدرع التطوير الخاص بك // ----------------------------------- ------------------------- // Arduino Uno / 2009: // ---------------- - // Standard Arduino Uno / 2009 shield:، A5، A4، A3، A2 // DisplayModule Arduino Uno TFT shield:، A5، A4، A3، A2 // // Arduino Mega: // ----- -------------- // درع Arduino Mega / Due القياسي: ، 38 ، 39 ، 40 ، 41 // CTE TFT LCD / SD Shield لـ Arduino Mega: ، 38 ، 39 ، 40 ، 41 // // تذكر تغيير معلمة النموذج لتناسب وحدة العرض الخاصة بك! UTFT myGLCD (ITDB32S ، 38 ، 39 ، 40 ، 41) ؛ إعداد باطل () {myGLCD. InitLCD () myGLCD.clrScr () ، } حلقة فارغة () {myGLCD.setColor (0، 255، 0)؛ myGLCD.setBackColor (0، 0، 0) ؛ myGLCD.setFont (BigFont) ، myGLCD.print ("! \" # $٪ & '() * +، -. / "، CENTER، 0)؛ myGLCD.print (" 0123456789:؛؟ "، CENTER، 16)؛ myGLCD.print (" @ ABCDEFGHIJKLMNO "، CENTER، 32)؛ myGLCD.print (" PQRSTUVWXYZ ^ _ "، CENTER، 48)؛ myGLCD.print (" `abcdefghijklmno"، CENTER، 64)؛ myGLCD.print ("pqrstuv | }wxy ~ "، CENTER، 80)؛ myGLCD.setFont (SmallFont)؛ myGLCD.print ("! / "# $٪ & '() * +، -. / 0123456789:؛؟"، CENTER، 120)؛ myGLCD.print ("@ ABCDEFGHIJKLMNOPQRSTUVWXYZ ^ _"، CENTER، 132) ؛ myGLCD.print ("` abcdefghijklmnopqrstuvwxyz {|} ~ "، CENTER، 144)؛ myGLCD.setFont (SevenSegNumFont) ، myGLCD.print ("0123456789"، CENTER، 190) ؛ بينما (1) {} ؛ }
الخطوة 6: الأشكال والخطوط والنمط UTFT
# تضمين "UTFT.h" // حدد الخطوط التي سنستخدمها uint8_t SmallFont ؛ // اضبط الدبابيس على الدبابيس الصحيحة لدرع التطوير الخاص بك // -------------- ---------------------------------------------- // Arduino Uno / 2009: // ------------------- // Standard Arduino Uno / 2009 shield:، A5، A4، A3، A2 // DisplayModule Arduino Uno TFT shield:، A5 ، A4 ، A3 ، A2 // // Arduino Mega: // ------------------- // Standard Arduino Mega / Due shield: ، 38 ، 39 ، 40 ، 41 // CTE TFT LCD / SD Shield لـ Arduino Mega:، 38، 39، 40، 41 // تذكر تغيير معلمة النموذج لتناسب وحدة العرض الخاصة بك! UTFT myGLCD (ITDB32S، 38، 39، 40، 41) ؛ إعداد باطل () {randomSeed (analogRead (0)) ؛ // إعداد myGLCD. InitLCD () LCD ؛ myGLCD.setFont (SmallFont) ، }
حلقة فارغة()
{int buf [318] ؛ كثافة العمليات x ، x2 ؛ int y ، y2 ؛ int r ؛ // امسح الشاشة وارسم الإطار myGLCD.clrScr () ؛ myGLCD.setColor (255 ، 0 ، 0) ؛ myGLCD.fillRect (0، 0، 319، 13) ؛ myGLCD.setColor (64 ، 64 ، 64) ؛ myGLCD.fillRect (0 ، 226 ، 319 ، 239) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.setBackColor (255، 0، 0) ؛ myGLCD.print ("* Universal Color TFT Display Library *"، CENTER، 1)؛ myGLCD.setBackColor (64 ، 64 ، 64) ؛ myGLCD.setColor (255 ، 255 ، 0) ؛ myGLCD.print (""، CENTER، 227) ؛ myGLCD.setColor (0 ، 0 ، 255) ؛ myGLCD.drawRect (0، 14، 319، 225) ؛ // ارسم خطوط التقاطع myGLCD.setColor (0 ، 0 ، 255) ؛ myGLCD.setBackColor (0، 0، 0) ؛ myGLCD.drawLine (159 ، 15 ، 159 ، 224) ؛ myGLCD.drawLine (1 ، 119 ، 318 ، 119) ؛ لـ (int i = 9 ؛ i <310 ؛ i + = 10) myGLCD.drawLine (i، 117، i، 121) ؛ لـ (int i = 19؛ i <220؛ i + = 10) myGLCD.drawLine (157، i، 161، i)؛ // رسم خطوط sin- و cos- وتان myGLCD.setColor (0 ، 255 ، 255) ؛ myGLCD.print ("الخطيئة"، 5، 15) ؛ لـ (int i = 1 ؛ i <318 ؛ i ++) {myGLCD.drawPixel (i، 119+ (sin (((i * 1.13) * 3.14) / 180) * 95)) ؛ } myGLCD.setColor (255، 0، 0) ، myGLCD.print ("Cos"، 5، 27) ؛ لـ (int i = 1 ؛ i <318 ؛ i ++) {myGLCD.drawPixel (i، 119+ (cos (((i * 1.13) * 3.14) / 180) * 95)) ؛ } myGLCD.setColor (255، 255، 0) ، myGLCD.print ("Tan"، 5، 39) ؛ لـ (int i = 1 ؛ i <318 ؛ i ++) {myGLCD.drawPixel (i، 119+ (tan (((i * 1.13) * 3.14) / 180))) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1 ، 15 ، 318 ، 224) ؛ myGLCD.setColor (0 ، 0 ، 255) ؛ myGLCD.setBackColor (0، 0، 0) ؛ myGLCD.drawLine (159 ، 15 ، 159 ، 224) ؛ myGLCD.drawLine (1 ، 119 ، 318 ، 119) ؛ // ارسم موجة جيبية متحركة x = 1 ؛ لـ (int i = 1؛ i319) {if ((x == 159) || (buf [x-1] == 119)) myGLCD.setColor (0، 0، 255) ؛ آخر myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.drawPixel (x، buf [x-1]) ؛ } myGLCD.setColor (0، 255، 255) ؛ y = 119 + (sin (((i * 1.1) * 3.14) / 180) * (90- (i / 100))) ؛ myGLCD.drawPixel (س ، ص) ، buf [x-1] = y ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1، 15، 318، 224)؛ // ارسم بعض المستطيلات المعبأة لـ (int i = 1؛ i <6؛ i ++) {switch (i) {case 1: myGLCD.setColor (255، 0، 255) ؛ استراحة؛ الحالة 2: myGLCD.setColor (255 ، 0 ، 0) ؛ استراحة؛ الحالة 3: myGLCD.setColor (0 ، 255 ، 0) ؛ استراحة؛ الحالة 4: myGLCD.setColor (0 ، 0 ، 255) ؛ استراحة؛ الحالة 5: myGLCD.setColor (255 ، 255 ، 0) ؛ استراحة؛ } myGLCD.fillRect (70+ (i * 20) ، 30+ (i * 20) ، 130+ (i * 20) ، 90+ (i * 20)) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1، 15، 318، 224)؛ // ارسم بعض المستطيلات المعبأة والمدورة من أجل (int i = 1؛ i <6؛ i ++) {switch (i) {case 1: myGLCD.setColor (255، 0 ، 255) ؛ استراحة؛ الحالة 2: myGLCD.setColor (255 ، 0 ، 0) ؛ استراحة؛ الحالة 3: myGLCD.setColor (0 ، 255 ، 0) ؛ استراحة؛ الحالة 4: myGLCD.setColor (0 ، 0 ، 255) ؛ استراحة؛ الحالة 5: myGLCD.setColor (255 ، 255 ، 0) ؛ استراحة؛ } myGLCD.fillRoundRect (190- (i * 20) ، 30+ (i * 20) ، 250- (i * 20) ، 90+ (i * 20)) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1، 15، 318، 224)؛ // ارسم بعض الدوائر المملوءة لـ (int i = 1؛ i <6؛ i ++) {switch (i) {case 1: myGLCD.setColor (255، 0، 255) ؛ استراحة؛ الحالة 2: myGLCD.setColor (255 ، 0 ، 0) ؛ استراحة؛ الحالة 3: myGLCD.setColor (0 ، 255 ، 0) ؛ استراحة؛ الحالة 4: myGLCD.setColor (0 ، 0 ، 255) ؛ استراحة؛ الحالة 5: myGLCD.setColor (255 ، 255 ، 0) ؛ استراحة؛ } myGLCD.fillCircle (100+ (i * 20) ، 60+ (i * 20) ، 30) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1 ، 15 ، 318 ، 224) ؛ // ارسم بعض الخطوط في نمط myGLCD.setColor (255 ، 0 ، 0) ؛ لـ (int i = 15 ؛ i <224 ؛ i + = 5) {myGLCD.drawLine (1، i، (i * 1.44) -10، 224) ؛ } myGLCD.setColor (255، 0، 0) ، لـ (int i = 224؛ i> 15؛ i- = 5) {myGLCD.drawLine (318، i، (i * 1.44) -11، 15) ؛ } myGLCD.setColor (0، 255، 255) ، لـ (int i = 224؛ i> 15؛ i- = 5) {myGLCD.drawLine (1، i، 331- (i * 1.44)، 15) ؛ } myGLCD.setColor (0، 255، 255) ، لـ (int i = 15 ؛ i <224 ؛ i + = 5) {myGLCD.drawLine (318، i، 330- (i * 1.44)، 224) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1، 15، 318، 224)؛ // ارسم بعض الدوائر العشوائية لـ (int i = 0؛ i <100؛ i ++) {myGLCD.setColor (عشوائي (255) ، عشوائي (255) ، عشوائي (255))) ؛ س = 32 + عشوائي (256) ؛ ص = 45 + عشوائي (146) ؛ ص = عشوائي (30) ؛ myGLCD.drawCircle (س ، ص ، ص) ، } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1، 15، 318، 224)؛ // ارسم بعض المستطيلات العشوائية لـ (int i = 0؛ i <100؛ i ++) {myGLCD.setColor (عشوائي (255) ، عشوائي (255) ، عشوائي (255))) ؛ س = 2 + عشوائي (316) ؛ ص = 16 + عشوائي (207) ؛ x2 = 2 + عشوائي (316) ؛ y2 = 16 + عشوائي (207) ؛ myGLCD.drawRect (x ، y ، x2 ، y2) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1، 15، 318، 224)؛ // ارسم بعض المستطيلات الدائرية العشوائية لـ (int i = 0؛ i <100؛ i ++) {myGLCD.setColor (عشوائي (255) ، عشوائي (255) ، عشوائي (255)) ؛ س = 2 + عشوائي (316) ؛ ص = 16 + عشوائي (207) ؛ x2 = 2 + عشوائي (316) ؛ y2 = 16 + عشوائي (207) ؛ myGLCD.drawRoundRect (x ، y ، x2 ، y2) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1 ، 15 ، 318 ، 224) ؛ لـ (int i = 0 ؛ i <100 ؛ i ++) {myGLCD.setColor (عشوائي (255) ، عشوائي (255) ، عشوائي (255)) ؛ س = 2 + عشوائي (316) ؛ ص = 16 + عشوائي (209) ؛ x2 = 2 + عشوائي (316) ؛ y2 = 16 + عشوائي (209) ؛ myGLCD.drawLine (x ، y ، x2 ، y2) ؛ } تأخير (2000)؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1 ، 15 ، 318 ، 224) ؛ لـ (int i = 0 ؛ i <10000 ؛ i ++) {myGLCD.setColor (عشوائي (255) ، عشوائي (255) ، عشوائي (255)) ؛ myGLCD.drawPixel (2 + عشوائي (316) ، 16 + عشوائي (209)) ؛ } تأخير (2000)؛ myGLCD.fillScr (0، 0، 255) ؛ myGLCD.setColor (255 ، 0 ، 0) ؛ myGLCD.fillRoundRect (80 ، 70 ، 239 ، 169) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.setBackColor (255، 0، 0) ؛ myGLCD.print ("هذا كل شيء"، CENTER، 93)؛ myGLCD.print ("إعادة التشغيل في" ، CENTER ، 119) ؛ myGLCD.print ("بضع ثوانٍ …" ، CENTER ، 132) ؛ myGLCD.setColor (0، 255، 0) ؛ myGLCD.setBackColor (0، 0، 255) ؛ myGLCD.print ("وقت التشغيل: (مللي ثانية)" ، CENTER ، 210) ؛ myGLCD.printNumI (millis ()، CENTER، 225) ؛ تأخير (10000) ؛ }
الخطوة 7: UTFT Bitmap
#يشمل
# تضمين // حدد الخطوط التي سنستخدمها خارجي uint8_t SmallFont ؛ // اضبط الدبابيس على الدبابيس الصحيحة لدرع التطوير الخاص بك // ------------------ ------------------------------------------ // Arduino Uno / 2009: / / ------------------- // درع Arduino Uno / 2009 القياسي: ، A5 ، A4 ، A3 ، A2 // DisplayModule Arduino Uno TFT shield: ، A5 ، A4 ، A3 ، A2 // // Arduino Mega: // ------------------- // Standard Arduino Mega / Due shield: ، 38 ، 39 ، 40 ، 41 // CTE TFT LCD / SD Shield لـ Arduino Mega: ، 38 ، 39 ، 40 ، 41 // تذكر تغيير معلمة النموذج لتناسب وحدة العرض الخاصة بك! UTFT myGLCD (ITDB32S، A5، A4، A3، A2) ؛ معلومات خارجية غير موقعة [0x400] ؛ رمز الباحث الخارجي غير الموقعة [0x400] ؛ extern unsigned int tux [0x400] ؛ إعداد باطل () {myGLCD. InitLCD () ؛ myGLCD.setFont (SmallFont) ، } حلقة فارغة () {myGLCD.fillScr (255، 255، 255) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.print ("*** شبكة 10 × 7 لرمز 32 × 32 ***" ، CENTER ، 228) ؛ لـ (int x = 0؛ x <10؛ x ++) لـ (int y = 0؛ y <7؛ y ++) myGLCD.drawBitmap (x * 32، y * 32، 32، 32، info) ؛ تأخير (5000) ؛ myGLCD.fillScr (255، 255، 255) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.print ("رمزان مختلفان بمقياس 1 إلى 4" ، CENTER ، 228) ؛ كثافة العمليات س = 0 ؛ لـ (int s = 0؛ s0؛ s--) {myGLCD.drawBitmap (x، 224- (s * 32)، 32، 32، icon، s) ؛ س + = (ق * 32) ؛ } تأخير (5000)؛ }
الخطوة 8: زر الربط
#include #include // Initialize display // ------------------ // اضبط المسامير على المسامير الصحيحة للوحة التطوير الخاصة بك // ------- -------------------------------------------------- - // Standard Arduino Uno / 2009 Shield:، 19، 18، 17، 16 // Standard Arduino Mega / Due shield:، 38، 39، 40، 41 // CTE TFT LCD / SD Shield for Arduino Due: 25 ، 26، 27، 28 // Teensy 3.x TFT Test Board:، 23، 22، 3، 4 // ElecHouse TFT LCD / SD Shield for Arduino Due:، 22، 23، 31، 33 // تذكر أن قم بتغيير معلمة النموذج لتناسب وحدة العرض الخاصة بك! UTFT myGLCD (ITDB32S، 38، 39، 40، 41) ؛ // تهيئة شاشة اللمس // ---------------------- // اضبط المسامير على الوضع الصحيح تلك الخاصة بلوحة التطوير الخاصة بك // ------------------------------------------- ---------------- // Standard Arduino Uno / 2009 Shield: 15 ، 10 ، 14 ، 9 ، 8 // Standard Arduino Mega / Due shield: 6 ، 5 ، 4 ، 3 ، 2 // CTE TFT LCD / SD Shield لـ Arduino Due: 6 ، 5 ، 4 ، 3 ، 2 // Teensy 3.x TFT Test Board: 26 ، 31 ، 27 ، 28 ، 29 // ElecHouse TFT LCD / SD Shield بالنسبة إلى Arduino Due: 25 ، 26 ، 27 ، 29 ، 30 // URTouch myTouch (6 ، 5 ، 4 ، 3 ، 2) ؛ // أعلن عن الخطوط التي سنستخدمها خارجيًا uint8_t BigFont ؛ int x ، y ؛ شار stCurrent [20] = ""؛ int stCurrentLen = 0 ؛ char stLast [20] = "" ؛ / ************************* ** وظائف مخصصة ** ********* **************** / void drawButtons () {// ارسم الصف العلوي من الأزرار لـ (x = 0؛ x <5؛ x ++) {myGLCD.setColor (0، 0 ، 255) ؛ myGLCD.fillRoundRect (10+ (x * 60) ، 10 ، 60+ (x * 60) ، 60) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.drawRoundRect (10+ (x * 60) ، 10 ، 60+ (x * 60) ، 60) ؛ myGLCD.printNumI (x + 1 ، 27+ (x * 60) ، 27) ؛ } // ارسم الصف الأوسط من الأزرار لـ (x = 0؛ x <5؛ x ++) {myGLCD.setColor (0، 0، 255)؛ myGLCD.fillRoundRect (10+ (x * 60) ، 70 ، 60+ (x * 60) ، 120) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.drawRoundRect (10+ (x * 60) ، 70 ، 60+ (x * 60) ، 120) ؛ إذا (x <4) myGLCD.printNumI (x + 6 ، 27+ (x * 60) ، 87) ؛ } myGLCD.print ("0"، 267، 87) ؛ // ارسم الصف السفلي من الأزرار myGLCD.setColor (0 ، 0 ، 255) ؛ myGLCD.fillRoundRect (10، 130، 150، 180) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.drawRoundRect (10 ، 130 ، 150 ، 180) ؛ myGLCD.print ("مسح" ، 40 ، 147) ؛ myGLCD.setColor (0 ، 0 ، 255) ؛ myGLCD.fillRoundRect (160 ، 130 ، 300 ، 180) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.drawRoundRect (160 ، 130 ، 300 ، 180) ؛ myGLCD.print ("أدخل" ، 190 ، 147) ؛ myGLCD.setBackColor (0، 0، 0) ؛ } void updateStr (int val) {if (stCurrentLen = 10) && (y = 10) && (x = 70) && (x = 130) && (x = 190) && (x = 250) && (x = 70) && (y = 10) && (x = 70) && (x = 130) && (x = 190) && (x = 250) && (x = 130) && (y = 10) && (x = 160) && (x0) {لـ (x = 0 ؛ x
الخطوة 9: فلابي بيرد
#include #include #include // ==== إنشاء كائنات UTFT myGLCD (SSD1289، 38، 39، 40، 41) ؛ // يجب ضبط المعلمات على طراز العرض / Schield UTouch myTouch (6، 5، 4، 3، 2)؛ // ==== تحديد الخطوط الخارجية uint8_t SmallFont ؛ خارجي uint8_t BigFont ؛ خارجي uint8_t SevenSegNumFont ؛ خارجي بدون إشارة int bird01 [0x41A] ؛ // Bird Bitmapint x، y؛ // متغيرات الإحداثيات حيث تم الضغط على الشاشة // Floppy Bird int xP = 319 ؛ int yP = 100 ؛ int yB = 50 ؛ int moveRate = 3 ؛ int FallRateInt = 0 ؛ معدل السقوط العائم = 0 ؛ درجة int = 0 ؛ int lastSpeedUpScore = 0 ؛ كثافة العمليات الأعلى شاشة منطقية مضغوطة = خطأ ؛ boolean gameStarted = false؛ void setup () {// Initiate display myGLCD. InitLCD () ؛ myGLCD.clrScr () ، myTouch. InitTouch () ، myTouch.setPrecision (PREC_MEDIUM) ، topScore = EEPROM.read (0) ، // اقرأ أعلى درجة من initiateGame EEPROM () ؛ // بدء اللعبة} void loop () {xP = xP-moveRate؛ // xP - x إحداثي الأعمدة ؛ النطاق: 319 - (-51) drawPilars (xP ، yP) ؛ // يرسم الأعمدة // إحداثي yB - y للطائر الذي يعتمد على قيمة متغير السقوط yB + = fallRateInt؛ FallRate = FallRate + 0.4 ؛ // كل دخول يزيد معدل السقوط حتى نتمكن من تأثير التسارع / الجاذبية FallRateInt = int (FallRate) ؛ // التحقق من التصادم إذا (yB> = 180 || yB <= 0) {// top and bottom gameOver () ؛ } if ((xP = 5) && (yB <= yP-2)) {// upper pillar gameOver ()؛ } if ((xP = 5) && (yB> = yP + 60)) {// lower pillar gameOver ()؛ } // رسم الطيور drawBird (yB) ؛ // بعد مرور العمود عبر الشاشة إذا (xPRESET = 250) && (x = 0) && (y = 0) && (x = 30) && (y = 270) {myGLCD.setColor (0، 200، 20) ؛ myGLCD.fillRect (318، 0، x، y-1) ؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.drawRect (319، 0، x-1، y) ؛ myGLCD.setColor (0 ، 200 ، 20) ؛ myGLCD.fillRect (318، y + 81، x، 203) ؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.drawRect (319، y + 80، x-1، 204) ؛ } else if (x highScore) {topScore = Score؛ EEPROM.write (0 ، highScore) ؛ } // يعيد تعيين المتغيرات لبدء قيم الموضع xP = 319 ؛ يب = 50 ؛ معدل السقوط = 0 ؛ النتيجة = 0 ؛ lastSpeedUpScore = 0 ؛ MovingRate = 3 ؛ gameStarted = خطأ ؛ // إعادة تشغيل اللعبة initiateGame () ؛ }
الخطوة 10: عمل المشروع
يمكنك العثور على الكود المصدري في مستودع Github الخاص بي.
الرابط:
أعط إبهامًا إذا كان قد ساعدك حقًا وتابع قناتي لمشاريع مثيرة للاهتمام:)
شارك هذا الفيديو إذا أردت.
يسعدنا اشتراكك:
شكرا للقراءة!
موصى به:
مكونات لحام سطح جبل - أساسيات اللحام: 9 خطوات (بالصور)
مكونات لحام سطح جبل | أساسيات اللحام: حتى الآن في سلسلة أساسيات اللحام ، ناقشت أساسيات كافية حول اللحام لكي تبدأ في التدريب. في Instructable ، ما سأناقشه أكثر تقدمًا قليلاً ، لكنه بعض الأساسيات لحام Surface Mount Compo
لحام من خلال مكونات الثقب - أساسيات اللحام: 8 خطوات (بالصور)
لحام من خلال مكونات الثقب | أساسيات اللحام: في هذا Instructable ، سأناقش بعض الأساسيات حول لحام المكونات من خلال الفتحة في لوحات الدوائر. سأفترض أنك قمت بالفعل بفحص أول 2 Instructables لسلسلة Soldering Basics الخاصة بي. إذا لم تقم بإلقاء نظرة على دخولي
ديسولديرينغ - أساسيات اللحام: 8 خطوات (بالصور)
ديسولديرينغ | أساسيات اللحام: في بعض الأحيان عندما تقوم باللحام ، تحتاج فقط إلى إزالة بعض الأجزاء. سأعرض بعض الطرق لإزالة الأجزاء الملحومة بلوحة الدائرة. لكل طريقة من هذه الطرق ستسخن الجزء الذي تحاول إزالته ، لذا كن حذرًا. إذا
أساسيات المحرك - المفهوم سهل الفهم للغاية من خلال التجربة: 7 خطوات (بالصور)
أساسيات المحرك | المفهوم سهل الفهم للغاية من خلال التجربة: في هذا الدليل ، سأعلمك عن المبدأ الأساسي الأساسي للمحركات. تعمل جميع المحركات من حولنا على هذا المبدأ. حتى المولدات تعمل على بيان متبادل لهذه القاعدة أنا أتحدث عن اليد اليسرى لفليمينغ
برنامج Pro-mini باستخدام Uno (أساسيات Arduino): 7 خطوات (بالصور)
برنامج Pro-mini باستخدام Uno (Arduino Basics): مرحبًا جميعًا ، في هذه التعليمات ، أود أن أشارككم تجربتي مع Arduino pro-mini الذي اشتريته مؤخرًا وكيف تمكنت من تحميل الكود إليه لأول مرة ، باستخدام Arduino Uno القديم. يحتوي Arduino pro-mini على الميزات التالية: إنه