Բովանդակություն:

Arduino TFT ինտերֆեյս հիմունքներ. 10 քայլ (նկարներով)
Arduino TFT ինտերֆեյս հիմունքներ. 10 քայլ (նկարներով)
Anonim
Arduino TFT միջերեսային հիմունքներ
Arduino TFT միջերեսային հիմունքներ

TFT հպման էկրանները զարմանալի գրաֆիկական ինտերֆեյս են, որը կարող է օգտագործվել միկրոկոնտրոլերների հետ, ինչպիսիք են Atmel- ը, PIC- ը, STM- ը, քանի որ այն ունի գունային լայն տեսականի, լավ գրաֆիկական ունակություն և պիքսելների լավ քարտեզավորում:

Այսօր մենք մտնելու ենք 2.4 դյույմանոց TFT LCD Shield ինտերֆեյս Arduino- ի հետ:

Այս վահանը Arduino UNO- ի համար է, բայց ես կսովորեցնեմ, թե ինչպես օգտագործել այն Arduino Mega- ի հետ շատ տրամաբանական պատճառով ՝ «Memրագրի հիշողություն»:

Օգտագործելով այս գունավոր TFT LCD վահանը, մենք կարող ենք գունավոր TFT LCD- ի վրա ցույց տալ կերպարներ, տողեր, կոճակների միջերես, բիթմապ պատկերներ և այլն:

Քայլ 1: Սարքավորման և ծրագրային ապահովման պահանջներ

Սարքավորման և ծրագրային ապահովման պահանջներ
Սարքավորման և ծրագրային ապահովման պահանջներ
Սարքավորման և ծրագրային ապահովման պահանջներ
Սարքավորման և ծրագրային ապահովման պահանջներ

Վահանի ինտերֆեյսը Arduino մեգայի հետ դարձնելու համար մեզ անհրաժեշտ է հետևյալը.

HARDWARE:

• Arduino մեգա

• TFT 2.4/2.8/3.2 դյույմ LCD

• USB մալուխ

SOՐԱԳԻՐ

• Arduino IDE

• UTFT Գրադարան / spfd5408 Գրադարան

Վահանը ի սկզբանե պատրաստված է Arduino UNO- ի տախտակների համար, որոնք կարող են օգտագործվել Arduino mega- ի հետ:

Arduino UNO- ի հետ այն օգտագործելիս երկու հիմնական խնդիր կա ՝ «Պահպանման հիշողություն» և կապում օգտագործումը:

Դժվար է օգտագործել չօգտագործված կապերը, որոնք հասանելի են UNO- ում, մինչդեռ Arduino MEGA- ով ավելի լավ է, քանի որ մեզ ավելի շատ I/O կապում են մնացել:

Հաջորդ քայլում ես ցույց կտամ, թե ինչպես խմբագրել UTFT գրադարանը ՝ TFT վահանն օգտագործելու համար

Քայլ 2. UTFT Lib- ի փոփոխում

Կարգավորում UTFT Lib
Կարգավորում UTFT Lib

Այս գրադարանը Arduino- ի և chipKit- ի իմ ITDB02_Graph, ITDB02_Graph16 և RGB_GLCD գրադարանների շարունակությունն է: Քանի որ աջակցվող ցուցադրման մոդուլների և վերահսկիչների թիվը սկսեց աճել, ես զգացի, որ ժամանակն է ստեղծել մեկ, ունիվերսալ գրադարան, քանի որ հետագայում այն շատ ավելի հեշտ կլինի պահպանել:

Arduino MEGA- ն ունի 256kb ծրագրային հիշողություն: Բացի այդ, կան 54 կապում:

Նրանցից շատերն անվճար են օգտագործման համար, իսկ անալոգային ընդամենը 5 -ն են վերցված 16 -ից:

Այս գրադարանը ապահովում է մի շարք 8 բիթանոց, 16 բիթանոց և սերիական գրաֆիկական ցուցադրումներ և կաշխատի ինչպես Arduino- ի, այնպես էլ chipKit տախտակների և ընտրված TI LaunchPads- ի հետ:

Գրադարանի չափի պատճառով ես խորհուրդ չեմ տալիս այն օգտագործել ATmega328 (Arduino Uno) և ATmega32U4 (Arduino Leonardo) համակարգերում, քանի որ դրանք ունեն ընդամենը 32 ԿԲ ֆլեշ հիշողություն: Այն կաշխատի, բայց դուք խիստ սահմանափակ կլինեք ձեր դիմումի համար մատչելի ֆլեշ հիշողության մեջ:

Քայլեր

  • Ներբեռնեք UTFT գրադարանը
  • Բացեք գրադարանը
  • Բացեք UTFT / hardware / avr- ը Arduino- ի դեպքում կամ կախված օգտագործվող միկրոկոնտրոլերից
  • Բացեք HW_AVR_defines- ը `օգտագործելով Գրառման գրքույկ
  • ՄԵԳԱ -ի համար ՄԱԿ -ի վահանը միացնելու համար չմեկնաբանեք տող 7 -ը
  • Պահեք ֆայլը և ավելացրեք այս գրադարանը Arduino IDE- ում

Այժմ մենք ավարտեցինք այս քայլը: Հաջորդ քայլում ես ցույց կտամ օգտագործել գրադարանը և սահմանել կապերը Arduino Mega- ի համար:

Քայլ 3: TFT վահանի մեկնարկը

TFT վահանի մեկնարկը
TFT վահանի մեկնարկը

Գրադարանը խմբագրելուց հետո ավելացրեք այն Arduino գրացուցակին:

Հաջորդը, ես ձեզ ցույց կտամ, թե ինչպես սահմանել ձեր ունեցած TFT ճիշտ մոդուլը

մենք պետք է դրա մոդուլի անունը գտնենք գրադարանում:

  • բացել գրադարանի ֆայլը
  • անցեք փաստաթղթերին

Այս ֆայլերը կարող եք տեսնել Փաստաթղթում

• UTFT:

Այս ֆայլը ցույց է տալիս այս գրադարանում ներառված բոլոր գործառույթներն ու հրամանները:

• UTFT_Պահանջ

Այս ֆայլը տեղեկատվություն ունի մոդուլների և գրադարանի հետ կապի մասին, ինչպես օրինակ ՝ կապում կազմաձևերը

• UTFT_Supported_display_modules _ & _ controller

Սա մեր թիրախն է, այս ֆայլը պարունակում է այս գրադարանի կողմից աջակցվող մոդուլների և վահանների անուններ, դրանում կարող եք տեսնել UTFT- ի մոդուլների անունների և մոդուլների անունների ցուցակ, որը դուք պետք է օգտագործեք ձեր մոդուլը սահմանելու համար:

TFT- ի սահմանման քայլերը

Բացեք UTFT_Supported_display_modules _ & _ վերահսկիչ ֆայլը գրադարանից

  • Բացեք UTFT_Supported_display_modules _ & _ վերահսկիչ ֆայլը գրադարանից
  • Գտեք ձեր ունեցած մոդուլների (վահանի) UTFT- ի մոդելները:
  • Այժմ Arduino IDE- ում UTFT գործառույթ սահմանելու համար մենք օգտագործում ենք հրամանը.

UTFT անուն (մոդուլ, Rs, Wr, Cs, Rst);

Բացեք UTFT_Requirement ֆայլը գրադարանից

Փաստաթղթից մենք գիտենք, որ քորոցները տեղակայված են A5, A4, A3 և A2 կապում:

մենք օգտագործում ենք հրամանը.

UTFT myGLCD (ITDB28, 19, 18, 17, 16); # նշեք, որ Arduino Mega- ի 19, 18, 17, 16 կապում

UTFT myGLCD (ITDB28, A5, A4, A3, A2); # նշեք, որ կապում է A5, A4, A3, A2 Arduino UNO- ում

Եվ ավարտվեց: Այժմ դուք կարող եք օգտագործել գրադարանի օրինակները Arduino IDE- ում ՝ հետևյալ փոփոխություններով.

Քայլ 4: Հիմնական բարև աշխարհ

Basic Hello World
Basic Hello World

#ներառել // Հայտարարեք, թե ինչ տառատեսակներ ենք օգտագործելու

extern 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 («ԲԱՐԵՎ ԱՇԽԱՐՀ», 45, 100); իսկ (ճշմարիտ) {}; }

Քայլ 5: UTFT տառատեսակներ

UTFT տառատեսակներ
UTFT տառատեսակներ

#ներառել // Հայտարարեք, թե ինչ տառատեսակներ ենք օգտագործելու

extern uint8_t SmallFont ; extern 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: // ----- -------------- // 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); 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} | G ", CENTER, 80); myGLCD.setFont (SmallFont); myGLCD.print ("! / "#$%& '()*+, -./0123456789:;?", ԿԵՆՏՐՈՆ, 120); myGLCD.print ("@ABCDEFGHIJKLMNOPQRSTUVWXYZ ^_", ԿԵՆՏՐՈՆ, 132); myGLCD.print ("` abcdefghijklmnopqrstuvwxyz {|} ", CENTER, 144); myGLCD.setFont (SevenSegNumFont); myGLCD.print («0123456789», ԿԵՆՏՐՈՆ, 190); իսկ (1) {}; }

Քայլ 6: UTFT ձևեր, գծեր և ձև

UTFT ձևեր, գծեր և ձև
UTFT ձևեր, գծեր և ձև

#ներառել «UTFT.h» // Հայտարարեք, թե որ տառատեսակներով ենք մենք օգտվելու ---------------------------------------------- // Arduino Uno / 2009: // ------------------- // Ստանդարտ Arduino Uno/ 2009 վահանը ՝, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT վահանը ՝, 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); 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 (" * 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); for (int i = 19; i <220; i+= 10) myGLCD.drawLine (157, i, 161, i); // Նկարել myGLCD.setColor sin-, cos- և tan-lines (0, 255, 255); myGLCD.print («Մեղք», 5, 15); (int i = 1; i <318; i ++) {myGLCD.drawPixel (i, 119+ (մեղք (((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 («Տան», 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; for (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+(մեղք (((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 («Ահա և վերջ», ԿԵՆՏՐՈՆ, 93); myGLCD.print («Վերագործարկում ա» -ում, ԿԵՆՏՐՈՆ, 119); myGLCD.print («մի քանի վայրկյան…», ԿԵՆՏՐՈՆ, 132); myGLCD.setColor (0, 255, 0); myGLCD.setBackColor (0, 0, 255); myGLCD.print ("Տևողություն. (msecs)", CENTER, 210); myGLCD.printNumI (millis (), CENTER, 225); ուշացում (10000); }

Քայլ 7: UTFT Bitmap

UTFT Bitmap
UTFT Bitmap

#ներառում

#include // Հայտարարեք, թե որ տառատեսակներով ենք մենք օգտվելու արտաքին uint8_t SmallFont ; // Տեղադրեք քորոցները ճիշտ ձեր զարգացման վահանի համար // ------------------ ------------------------------------------ // Arduino Uno / 2009: / / ------------------- // Ստանդարտ Arduino Uno/ 2009 վահանը ՝, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT վահանը ՝, 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); արտաքին անստորագիր int info [0x400]; արտաքին անստորագիր int պատկերակ [0x400]; արտաքին անստորագիր int tux [0x400]; void setup () {myGLCD. InitLCD (); myGLCD.setFont (SmallFont); } void loop () {myGLCD.fillScr (255, 255, 255); myGLCD.setColor (255, 255, 255); myGLCD.print ("*** 32x32 պատկերակի 10 -ից 7 ցանց ***", ԿԵՆՏՐՈՆ, 228); for (int x = 0; x <10; x ++) for (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, պատկերակ, ներ); x+= (s*32); } ուշացում (5000); }

Քայլ 8: Կոճակների միջերես

Կոճակի միջերես
Կոճակի միջերես

#ներառել #ներառել // 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: փոխեք մոդելի պարամետրը `ձեր ցուցադրման մոդուլին համապատասխան: 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 for 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- ի համար. 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 («Մուտքագրեք», 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

Flappy թռչուն
Flappy թռչուն

#ներառել #ներառել #ներառել // ==== UTFT myGLCD օբյեկտների ստեղծում (SSD1289, 38, 39, 40, 41); // Պարամետրերը պետք է ճշգրտվեն ձեր Display/Schield մոդելի UTouch myTouch (6, 5, 4, 3, 2); // ==== Տառատեսակների սահմանում արտաքին uint8_t SmallFont ; extern 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; float fallRate = 0; int հաշիվ = 0; int lastSpeedUpScore = 0; int ամենաբարձր միավոր; բուլյան screenPressed = կեղծ; boolean gameStarted = false; void setup () {// Սկսել ցուցադրել myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); ամենաբարձր միավոր = EEPROM.read (0); // Կարդացեք EEPROM initateGame- ի ամենաբարձր գնահատականը (); // Գործարկել խաղը} void loop () {xP = xP-moveRate; // xP - x սյուների կոորդինատ; միջակայք `319 - (-51) drawPilars (xP, yP); // Գծում է սյուները // yB - y թռչնի կոորդինատը, որը կախված է ընկնող Rate փոփոխականի արժեքից yB+= fallRateInt; fallRate = fallRate+0.4; // Յուրաքանչյուր ներխուժման անկման տեմպը մեծանում է, որպեսզի մենք կարողանանք արագացման/ ծանրության ազդեցությունը fallRateInt = int (fallRate); // Ստուգում է բախման եթե (yB> = 180 || yB <= 0) {// վերևի և ներքևի խաղը Over (); } if ((xP = 5) && (yB <= yP-2)) {// վերին սյան խաղը Over (); } if ((xP = 5) && (yB> = yP+60)) {// ստորին սյունով խաղը Over (); } // Նկարում է թռչնի 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); } ուրիշ եթե (x ամենաբարձր միավոր) {ամենաբարձր միավոր = միավոր; EEPROM.write (0, ամենաբարձր գնահատական); } // Վերականգնում է փոփոխականները ՝ սկսելու դիրքի արժեքները xP = 319; yB = 50; fallRate = 0; հաշիվ = 0; lastSpeedUpScore = 0; moveRate = 3; gameStarted = կեղծ; // Վերագործարկեք խաղը initateGame (); }

Քայլ 10. Նախագծի մշակում

Դուք կարող եք գտնել աղբյուրի կոդը իմ Github պահոցում:

Հղում ՝

Եթե դա իսկապես օգնեց ձեզ, հետևեք իմ ալիքին հետաքրքիր նախագծերի համար:)

Եթե ցանկանում եք, կիսվեք այս տեսանյութով:

Երջանիկ եմ, որ բաժանորդագրվել եք ՝

Շնորհակալություն կարդալու համար:

Խորհուրդ ենք տալիս: