فهرست مطالب:
- مرحله 1: سخت افزار و نرم افزار مورد نیاز
- مرحله 2: اصلاح UTFT Lib
- مرحله 3: راه اندازی TFT Shield
- مرحله 4: Basic Hello World
- مرحله 5: قلم های UTFT
- مرحله 6: اشکال ، خطوط و الگوی UTFT
- مرحله 7: نقشه بیت UTFT
- مرحله 8: رابط دکمه
- مرحله 9: Flappy Bird
- مرحله 10: کار پروژه
تصویری: مبانی رابط Arduino TFT: 10 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
صفحه لمسی 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
این کتابخانه ادامه کتابخانه های 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
پس از ویرایش کتابخانه ، آن را به فهرست 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
#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
#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.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
#عبارتند از
#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 من پیدا کنید.
پیوند:
اگر واقعاً به شما کمک کرد ، شست کنید و کانال من را برای پروژه های جالب دنبال کنید:)
اگر دوست داشتید این ویدئو را به اشتراک بگذارید.
خوشحالم که مشترک شدید:
ممنون که خواندید!
توصیه شده:
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s انجام دهید: 8 مرحله
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s: در این آموزش ، با نحوه راه اندازی ، اتصال و دریافت دستگاه I2C (شتاب سنج) کار با کنترلر (Arduino ، ESP32 ، ESP8266 ، ESP12 NodeMCU) آشنا خواهید شد
دکمه رابط رابط - مبانی آردوینو: 3 مرحله
دکمه رابط - مفاهیم اولیه آردوینو: دکمه فشاری قطعه ای است که هنگام فشار دادن آن دو نقطه را در یک مدار متصل می کند. هنگامی که دکمه فشاری باز است (بدون فشار) هیچ ارتباطی بین دو پایه دکمه فشاری وجود ندارد ، بنابراین پین به 5 متصل می شود. ولت (از طریق رسپی کشش
مبانی موتور - درک مفهوم بسیار آسان با یک آزمایش: 7 مرحله (همراه با تصاویر)
مبانی موتور | درک مفهوم فوق العاده آسان با یک آزمایش: در این قسمت آموزشی من قصد دارم در مورد اصل اساسی موتورها به شما آموزش دهم. همه موتورهای اطراف ما بر اساس این اصل کار می کنند. حتی ژنراتورها بر روی بیانیه متقابل این قانون کار می کنند. من در مورد فرمان چپ دست فلمینگ صحبت می کنم
مبانی الکترونیک: دیود: 6 مرحله (همراه با تصاویر)
مبانی الکترونیک: دیود: اگر خواندن را دوست ندارید ویدئوی من را در یوتیوب تماشا کنید! من آنجا را ساده تر کرده ام. همچنین با تشکر فراوان از www.JLCPCB.com برای حمایت از این پروژه ، می توانید PCB 2 لایه (10cm*10cm) را فقط با 2 دلار از وب سایت آنها سفارش دهید. زمان ساخته شده برای 2 لایه PCB i
برنامه Pro-mini با استفاده از Uno (مبانی آردوینو): 7 مرحله (همراه با تصاویر)
Program Pro-mini با استفاده از Uno (مبانی آردوینو): در کل ، در این قسمت آموزشی می خواهم تجربه خود را با Arduino pro-mini که اخیراً خریداری کرده ام و نحوه بارگذاری کد برای اولین بار با استفاده از برنامه ، به شما بگویم. قدیمی Arduino Uno. Arduino pro-mini دارای ویژگی های زیر است: این i