فهرست مطالب:

مبانی رابط Arduino TFT: 10 مرحله (همراه با تصاویر)
مبانی رابط Arduino TFT: 10 مرحله (همراه با تصاویر)

تصویری: مبانی رابط Arduino TFT: 10 مرحله (همراه با تصاویر)

تصویری: مبانی رابط Arduino TFT: 10 مرحله (همراه با تصاویر)
تصویری: TFT LCD Touch LED Control #Shorts #Teachmesomething #Arduino 2024, نوامبر
Anonim
مبانی رابط آردوینو TFT
مبانی رابط آردوینو TFT

صفحه لمسی TFT رابط گرافیکی شگفت انگیزی است که می توان با میکروکنترلرهایی مانند Atmel ، PIC ، STM از آن استفاده کرد ، زیرا دارای طیف گسترده ای از رنگ ، قابلیت گرافیکی خوب و نقشه برداری خوب از پیکسل ها است.

امروز ، ما قصد داریم به رابط 2.4 اینچی TFT LCD Shield با آردوینو بپردازیم.

این سپر مخصوص Arduino UNO است ، اما من نحوه استفاده از آن را با Arduino Mega به دلیل بسیار منطقی ، "حافظه برنامه" آموزش می دهم.

با استفاده از این محافظ رنگی TFT LCD می توانیم کاراکترها ، رشته ها ، رابط دکمه ها ، تصاویر bitmap و غیره را روی LCD TFT رنگی نشان دهیم.

مرحله 1: سخت افزار و نرم افزار مورد نیاز

سخت افزار و نرم افزار مورد نیاز
سخت افزار و نرم افزار مورد نیاز
سخت افزار و نرم افزار مورد نیاز
سخت افزار و نرم افزار مورد نیاز

برای ایجاد رابط سپر با مگا آردوینو ، به موارد زیر نیاز داریم.

سخت افزار:

• آردوینو مگا

• LCD TFT 2.4/2.8/3.2 اینچ

• کابل یو اس بی

نرم افزار

• Arduino IDE

• کتابخانه UTFT / کتابخانه spfd5408

Shield در اصل برای بردهای Arduino UNO ساخته شده است که می توان آنها را با Arduino mega استفاده کرد.

هنگام استفاده از Arduino UNO دو مسئله اصلی وجود دارد: "حافظه ذخیره سازی" و استفاده از پین ها.

استفاده از پین های بلااستفاده که در UNO موجود است دشوار است ، در حالی که با Arduino MEGA بهتر است زیرا پین های I/O بیشتری برای ما باقی مانده است.

در مرحله بعد ، نحوه ویرایش کتابخانه UTFT برای استفاده از سپر TFT را نشان خواهم داد

مرحله 2: اصلاح UTFT Lib

اصلاح UTFT Lib
اصلاح 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 را باز کنید
  • HW_AVR_defines را با استفاده از دفترچه یادداشت باز کنید
  • برای فعال کردن سپر UNO برای MEGA ، خط 7 را بیان نکنید
  • فایل را ذخیره کرده و این کتابخانه را به Arduino IDE اضافه کنید

اکنون کار ما با این مرحله تمام شده است! در مرحله بعد ، من نشان می دهم که از کتابخانه استفاده کرده و پین ها را برای Arduino Mega تعریف می کنم.

مرحله 3: راه اندازی TFT Shield

راه اندازی TFT Shield
راه اندازی TFT Shield

پس از ویرایش کتابخانه ، آن را به فهرست Arduino اضافه کنید.

در مرحله بعد ، من به شما نشان می دهم که چگونه ماژول TFT مناسب را تعریف کنید

ما باید نام ماژول آن را در کتابخانه بیابیم.

  • فایل کتابخانه را باز کنید
  • به مستندات بروید

می توانید این فایل ها را در Documentation مشاهده کنید

• UTFT:

این فایل تمام توابع و دستورات موجود در این کتابخانه را نشان می دهد.

• UTFT_Requirement

این فایل اطلاعاتی در مورد ماژول ها و نحوه ارتباط آن با کتابخانه دارد ، مانند پیکربندی پین ها

• UTFT_Supported_display_modules _ & _ controller

این هدف ما است ، این فایل دارای نام ماژول ها و سپرهایی است که توسط این کتابخانه پشتیبانی می شوند ، شما می توانید لیستی از اسامی ماژول ها و نام های ماژول ها برای 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) ؛ # توجه داشته باشید که A7 ، A4 ، A3 ، A2 در Arduino UNO پین می کند

و انجام شد! اکنون می توانید از نمونه های کتابخانه در Arduino IDE با تغییرات زیر استفاده کنید.

مرحله 4: Basic Hello World

Basic Hello World
Basic Hello World

#include // اعلام کنید از کدام فونت استفاده خواهیم کرد

exint uint8_t BigFont ؛ extern uint8_t SevenSegNumFont ؛ // به یاد داشته باشید که پارامتر مدل را متناسب با ماژول نمایش خود تغییر دهید! UTFT myGLCD (ITDB28 ، A5 ، A4 ، A3 ، A2) ؛ void setup () {myGLCD. InitLCD ()؛ myGLCD.clrScr ()؛ myGLCD.setFont (BigFont) ؛ } void loop () {myGLCD.setColor (0 ، 255 ، 0) ؛ // سبز myGLCD.print ("HELLO WORLD" ، 45 ، 100) ؛ while (true) {}؛ }

مرحله 5: قلم های UTFT

قلم های UTFT
قلم های UTFT

#include // اعلام کنید از کدام فونت استفاده خواهیم کرد

extern uint8_t SmallFont ؛ exint uint8_t BigFont ؛ extern uint8_t SevenSegNumFont ؛ // پین ها را برای محافظ توسعه خود روی پین های مناسب تنظیم کنید // -------------------------------------- ------------------------- // Arduino Uno / 2009: // ---------------- --- // سپر استاندارد Arduino Uno/2009: ، A5 ، A4 ، A3 ، A2 // سپر DisplayModule Arduino Uno TFT: ، A5 ، A4 ، A3 ، A2 // // Arduino Mega: // ----- -------------- // استاندارد 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) ؛ void setup () {myGLCD. InitLCD () myGLCD.clrScr ()؛ } void loop () {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.prw ("pqrstu | | ~ "، 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
اشکال ، خطوط و الگوی UTFT

#شامل "UTFT.h" // اعلام کنید که از کدام فونت استفاده خواهیم کرد ---------------------------------------------- // آردوینو اونو / 2009: // ------------------- // استاندارد Arduino Uno/ 2009 سپر: ، A5 ، A4 ، A3 ، A2 // سپر DisplayModule Arduino Uno TFT: ، A5 ، A4 ، A3 ، A2 // // Arduino Mega: // ------------------- // استاندارد 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) ؛ void setup () {randomSeed (analogRead (0)) ؛ // LCD myGLCD. InitLCD () را تنظیم کنید؛ myGLCD.setFont (SmallFont) ؛ }

حلقه خالی ()

{int buf [318]؛ int 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 (" * کتابخانه نمایش جهانی رنگ TFT *" ، 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)؛ for (int i = 19؛ i <220؛ i+= 10) myGLCD.drawLine (157، i، 161، i)؛ // رسم خطوط sin-، cos- و tan-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+ (برنزه ((((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)؛ else myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.drawPixel (x ، buf [x-1]) ؛ } myGLCD.setColor (0 ، 255 ، 255) ؛ y = 119+(گناه (((i*1.1)*3.14) / 180)*(90- (i / 100))) ؛ myGLCD.drawPixel (x ، y) ؛ 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) ترسیم کنید))؛ x = 32+تصادفی (256) ؛ y = 45+تصادفی (146) ؛ r = تصادفی (30) ؛ myGLCD.drawCircle (x ، y ، r) ؛ } تاخیر (2000) ؛ myGLCD.setColor (0 ، 0 ، 0) ؛ myGLCD.fillRect (1 ، 15 ، 318 ، 224) ؛ // چند مستطیل تصادفی برای (int i = 0 ؛ i <100؛ i ++) {myGLCD.setColor (تصادفی (255) ، تصادفی (255) ، تصادفی (255) رسم کنید))؛ x = 2+تصادفی (316) ؛ y = 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))؛ x = 2+تصادفی (316) ؛ y = 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)) ؛ x = 2+تصادفی (316) ؛ y = 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 ("راه اندازی مجدد در a" ، CENTER ، 119) ؛ myGLCD.print ("چند ثانیه …" ، CENTER ، 132) ؛ myGLCD.setColor (0 ، 255 ، 0) ؛ myGLCD.setBackColor (0 ، 0 ، 255) ؛ myGLCD.print ("زمان اجرا: (msecs)" ، CENTER ، 210) ؛ myGLCD.printNumI (میلی ثانیه () ، CENTER ، 225) ؛ تأخیر (10000) ؛ }

مرحله 7: نقشه بیت UTFT

نقشه بیت UTFT
نقشه بیت UTFT

#عبارتند از

#include // اعلام کنید که از کدام فونت استفاده خواهیم کرد ------------------------------------------ // Arduino Uno / 2009: / / ------------------- // سپر استاندارد Arduino Uno/ 2009: ، A5 ، A4 ، A3 ، A2 // سپر DisplayModule Arduino Uno TFT: ، A5 ، A4 ، A3 ، A2 // // Arduino Mega: // ------------------- // استاندارد 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] ؛ نماد int بدون علامت خارجی [0x400] ؛ ex unigned sign tux [0x400] ؛ void setup () {myGLCD. InitLCD () ؛ myGLCD.setFont (SmallFont) ؛ } void loop () {myGLCD.fillScr (255 ، 255 ، 255) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.print ("*** شبکه ای 10 در 7 از نماد 32x32 ***" ، CENTER ، 228) ؛ برای (int x = 0؛ x <10؛ x ++) برای (int y = 0؛ y <7؛ y ++) myGLCD.drawBitmap (x*32 ، y*32 ، 32 ، 32 ، اطلاعات) ؛ تأخیر (5000) ؛ myGLCD.fillScr (255 ، 255 ، 255) ؛ myGLCD.setColor (255 ، 255 ، 255) ؛ myGLCD.print ("دو نماد مختلف در مقیاس 1 تا 4" ، CENTER ، 228) ؛ int x = 0 ؛ برای (int s = 0؛ s0؛ s--) {myGLCD.drawBitmap (x، 224- (s*32)، 32، 32، icon، s)؛ x+= (s*32) ؛ } تأخیر (5000) ؛ }

مرحله 8: رابط دکمه

رابط دکمه
رابط دکمه

#include #include // Initialize display // ------------------ // پین ها را برای پانل توسعه خود روی پین های مناسب تنظیم کنید // ------- ------------------------------------------------------ - // استاندارد Arduino Uno/2009 Shield: ، 19 ، 18 ، 17 ، 16 // استاندارد Arduino Mega/Due shield: ، 38 ، 39 ، 40 ، 41 // CTE TFT LCD/SD Shield برای Arduino Due: ، 25 ، 26 ، 27 ، 28 // تخته تست Teensy 3.x TFT: ، 23 ، 22 ، 3 ، 4 // ElecHouse TFT LCD/SD Shield for Arduino due: ، 22 ، 23 ، 31 ، 33 // // به یاد داشته باشید پارامتر مدل را متناسب با ماژول نمایشگر خود تغییر دهید! UTFT myGLCD (ITDB32S ، 38 ، 39 ، 40 ، 41) ؛ // مقداردهی اولیه صفحه لمسی // ---------------------- // پین ها را به درستی تنظیم کنید مواردی برای صفحه توسعه شما // ------------------------------------------- ---------------- // استاندارد Arduino Uno/2009 Shield: 15 ، 10 ، 14 ، 9 ، 8 // استاندارد Arduino Mega/Due shield: 6 ، 5 ، 4 ، 3 ، 2 // CTE TFT LCD/SD Shield for Arduino Due: 6، 5، 4، 3، 2 // Teensy 3.x TFT Board 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 ؛ char 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 ("Enter" ، 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: Flappy Bird

پرنده فلاپی
پرنده فلاپی

#include #include #include // ==== ایجاد اشیاء UTFT myGLCD (SSD1289 ، 38 ، 39 ، 40 ، 41) ؛ // پارامترها باید بر اساس مدل UTouch myTouch Display/Schield شما (6 ، 5 ، 4 ، 3 ، 2) تنظیم شوند ؛ // ==== تعریف فونت ها uint8_t SmallFont extern ؛ exint uint8_t BigFont ؛ extern uint8_t SevenSegNumFont ؛ خارجی خارجی بدون علامت int bird01 [0x41A] ؛ // پرنده Bitmapint x ، y ؛ // متغیرهای مختصات جایی که صفحه نمایش فشار داده شده است // Floppy Bird int xP = 319؛ int yP = 100 ؛ int yB = 50 ؛ int moveRate = 3 ؛ int fallRateInt = 0؛ float fallRate = 0؛ نمره int = 0 ؛ int lastSpeedUpScore = 0 ؛ int بالاترین امتیاز ؛ boolean screenPressed = false؛ boolean gameStarted = false؛ void setup () {// شروع نمایش myGLCD. InitLCD ()؛ myGLCD.clrScr ()؛ myTouch. InitTouch ()؛ myTouch.setPrecision (PREC_MEDIUM) ؛ highScore = EEPROM.read (0)؛ // بالاترین امتیاز را از EEPROM initateGame () بخوانید ؛ // شروع بازی} حلقه void () {xP = xP-moveRate؛ // مختصات xP - x ستون ها ؛ محدوده: 319 - (-51) drawPilars (xP ، yP) ؛ // ستون ها را ترسیم می کند // yB - y مختصات پرنده که بستگی به مقدار متغیر fallRate دارد yB+= fallRateInt؛ fallRate = fallRate+0.4 ؛ // هر بار تکرار میزان سقوط افزایش می یابد تا بتوانیم اثر شتاب/ گرانش را fallRateInt = int (fallRate)؛ // بررسی برخورد اگر (yB> = 180 || yB <= 0) {// بالا و پایین gameOver ()؛ } if ((xP = 5) && (yB <= yP-2)) {// ستون فوقانی gameOver ()؛ } if ((xP = 5) && (yB> = yP+60)) {// ستون پایین 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) {بالاترین امتیاز = نمره ؛ EEPROM.write (0 ، بالاترین امتیاز) ؛ } // متغیرها را برای شروع مقادیر موقعیت xP = 319 بازنشانی می کند؛ yB = 50 ؛ fallRate = 0؛ نمره = 0 ؛ lastSpeedUpScore = 0 ؛ moveRate = 3 ؛ gameStarted = false؛ // راه اندازی مجدد بازی initateGame ()؛ }

مرحله 10: کار پروژه

می توانید کد منبع را در مخزن Github من پیدا کنید.

پیوند:

اگر واقعاً به شما کمک کرد ، شست کنید و کانال من را برای پروژه های جالب دنبال کنید:)

اگر دوست داشتید این ویدئو را به اشتراک بگذارید.

خوشحالم که مشترک شدید:

ممنون که خواندید!

توصیه شده: