Turinys:

„Arduino TFT“sąsajos pagrindai: 10 žingsnių (su nuotraukomis)
„Arduino TFT“sąsajos pagrindai: 10 žingsnių (su nuotraukomis)

Video: „Arduino TFT“sąsajos pagrindai: 10 žingsnių (su nuotraukomis)

Video: „Arduino TFT“sąsajos pagrindai: 10 žingsnių (su nuotraukomis)
Video: HTML CSS pamokos - 21 - Praktinė svetainė (4 dalis) 2024, Lapkritis
Anonim
„Arduino“TFT sąsajos pagrindai
„Arduino“TFT sąsajos pagrindai

TFT jutikliniai ekranai yra nuostabi grafinė sąsaja, kurią galima naudoti su tokiais mikrovaldikliais kaip Atmel, PIC, STM, nes ji turi platų spalvų diapazoną, geras grafines galimybes ir gerą pikselių atvaizdavimą.

Šiandien mes einame į 2,4 colio TFT LCD skydo sąsają su „Arduino“.

Šis skydas skirtas „Arduino UNO“, bet aš išmokysiu jį naudoti su „Arduino Mega“dėl labai logiškos priežasties - „Programos atmintis“.

Naudodami šį spalvotą TFT LCD ekraną, spalvotame TFT LCD ekrane galime parodyti simbolius, eilutes, mygtukų sąsajas, bitmap atvaizdus ir kt.

1 žingsnis: Techninės ir programinės įrangos reikalavimai

Techninės ir programinės įrangos reikalavimai
Techninės ir programinės įrangos reikalavimai
Techninės ir programinės įrangos reikalavimai
Techninės ir programinės įrangos reikalavimai

Norėdami sukurti skydo sąsają su „Arduino mega“, mums reikia šių dalykų.

Aparatūra:

• Arduino mega

• TFT 2,4/2,8/3,2 colių skystųjų kristalų ekranas

• USB kabelis

PROGRAMINĖ ĮRANGA

• „Arduino IDE“

• UTFT biblioteka / spfd5408 biblioteka

Skydas iš pradžių buvo sukurtas „Arduino UNO“plokštėms, kurias galima naudoti su „Arduino mega“.

Naudojant „Arduino UNO“yra dvi pagrindinės problemos: „Atminties atmintis“ir kaiščių naudojimas.

Sunku naudoti nepanaudotus kaiščius, kuriuos galima rasti UNO, o tai geriau naudoti naudojant „Arduino MEGA“, nes turime daugiau įvesties/išvesties kaiščių.

Kitame žingsnyje parodysiu, kaip redaguoti UTFT biblioteką, kad būtų naudojamas TFT skydas

2 veiksmas: UTFT Lib

„UTFT Lib“keitimas
„UTFT Lib“keitimas

Ši biblioteka yra mano ITDB02_Graph, ITDB02_Graph16 ir RGB_GLCD bibliotekų, skirtų „Arduino“ir „chipKit“, tęsinys. Kai pradėjo daugėti palaikomų ekrano modulių ir valdiklių, jaučiau, kad atėjo laikas sukurti vieną universalią biblioteką, nes ją bus daug lengviau išlaikyti ateityje.

„Arduino MEGA“turi 256 kb programos atmintį. Be to, yra 54 kaiščiai.

Dauguma jų yra laisvai naudojami, o tik 5 analogai yra paimti iš 16.

Ši biblioteka palaiko daugybę 8 bitų, 16 bitų ir nuosekliųjų grafikos ekranų ir veiks su „Arduino“, „chipKit“plokštėmis ir pasirinktais „TI LaunchPads“.

PASTABA: Dėl bibliotekos dydžio nerekomenduoju jos naudoti ATmega328 (Arduino Uno) ir ATmega32U4 (Arduino Leonardo), nes jos turi tik 32 KB „flash“atminties. Tai veiks, tačiau jūsų programai bus labai ribota laisvos atminties

Žingsniai

  • Atsisiųskite UTFT biblioteką
  • Išpakuokite biblioteką
  • Atidarykite UTFT / hardware / avr „Arduino“atveju arba priklausomai nuo naudojamo mikrovaldiklio
  • Atidarykite „HW_AVR_defines“naudodami „Notepad“
  • Atsisakykite 7 eilutės, kad įjungtumėte UNO skydą MEGA
  • Išsaugokite failą ir pridėkite šią biblioteką prie „Arduino IDE“

Dabar mes baigėme šį žingsnį! Kitame žingsnyje parodysiu, kaip naudotis biblioteka ir apibrėžti „Arduino Mega“kaiščius.

3 žingsnis: TFT skydo inicijavimas

TFT skydo inicijavimas
TFT skydo inicijavimas

Redagavę biblioteką, pridėkite ją prie „Arduino“katalogo.

Toliau parodysiu, kaip apibrėžti tinkamą TFT modulį

bibliotekoje turėtume rasti jo modulio pavadinimą.

  • atidarykite bibliotekos failą
  • eikite į dokumentaciją

Šiuos failus galite pamatyti dokumentacijoje

• UTFT:

Šiame faile rodomos visos funkcijos ir komandos, įtrauktos į šią biblioteką.

• UTFT_Reikalas

Šiame faile yra informacijos apie modulius ir kaip tai susiję su biblioteka, pvz., Kaiščių konfigūracijos

• UTFT_Supported_display_modules _ & _ valdiklis

Tai yra mūsų tikslas, šiame faile yra modulių ir skydų, kuriuos palaiko ši biblioteka, pavadinimai, jame galite pamatyti UTFT modulių pavadinimų ir modulių pavadinimų sąrašą, kurį turėtumėte naudoti savo moduliui apibrėžti.

TFT apibrėžimo veiksmai:

Iš bibliotekos atidarykite UTFT_Supported_display_modules _ & _ valdiklio failą

  • Iš bibliotekos atidarykite UTFT_Supported_display_modules _ & _ valdiklio failą
  • Raskite turimų modulių (skydo) UTFT modelius.
  • Dabar norėdami apibrėžti UTFT funkciją „Arduino IDE“, naudojame komandą:

UTFT pavadinimas (modulis, Rs, Wr, Cs, Rst);

Iš bibliotekos atidarykite UTFT_Reikalavimų failą

Iš dokumento žinome, kad kaiščiai yra ant A5, A4, A3 ir A2 kaiščių.

mes naudojame komandą:

UTFT myGLCD (ITDB28, 19, 18, 17, 16); # atkreipkite dėmesį, kad „Arduino Mega“19, 18, 17, 16 kaiščiai

UTFT myGLCD (ITDB28, A5, A4, A3, A2); # atkreipkite dėmesį, kad „Arduino UNO“kaiščiai A5, A4, A3, A2

Ir padaryta! Dabar galite naudoti „Arduino IDE“bibliotekos pavyzdžius su šiais pakeitimais.

4 žingsnis: Pagrindinis „Sveiki pasaulis“

Pagrindinis „Sveiki pasaulis“
Pagrindinis „Sveiki pasaulis“

#include // Paskelbkite, kokius šriftus naudosime

extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; // Nepamirškite pakeisti modelio parametro, kad tiktų jūsų ekrano moduliui! UTFT myGLCD (ITDB28, A5, A4, A3, A2); void setup () {myGLCD. InitLCD (); myGLCD.clrScr (); myGLCD.setFont (BigFont); } void loop () {myGLCD.setColor (0, 255, 0); // žalia myGLCD.print ("HELLO WORLD", 45, 100); while (tiesa) {}; }

5 veiksmas: UTFT šriftai

UTFT šriftai
UTFT šriftai

#include // Paskelbkite, kokius šriftus naudosime

extern uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; // Nustatykite smeigtukus į tinkamus jūsų plėtros skydui // ----------------------------------- ------------------------- // Arduino Uno / 2009: // ---------------- --- // Standartinis „Arduino Uno“/2009 skydas:, A5, A4, A3, A2 // „DisplayModule“„Arduino Uno“TFT skydas:, A5, A4, A3, A2 // „Arduino Mega“: // ----- -------------- // Standartinis „Arduino Mega“/tinkamas skydas:, 38, 39, 40, 41 // „CTE TFT LCD/SD Shield“, skirtas „Arduino Mega“:, 38, 39, 40, 41 // // Nepamirškite pakeisti modelio parametro, kad jis atitiktų jūsų ekrano modulį! 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:;? ", CENTRAS, 16); myGLCD.print ("@ ABCDEFGHIJKLMNO ", CENTER, 32); myGLCD.print (" PQRSTUVWXYZ ^_ ", CENTER, 48); myGLCD.print (" `abcdefghijklmno", CENTER, 64); myGLCD.print ("pqrstuvwxyz ~ ", CENTRAS, 80); myGLCD.setFont (SmallFont); myGLCD.print ("! / "#$%& '()*+, -./0123456789:;?", CENTRAS, 120); myGLCD.print ("@ABCDEFGHIJKLMNOPQRSTUVWXYZ ^_", CENTRAS, 132); myGLCD.print ("" abcdefghijklmnopqrstuvwxyz {|} ~ ", CENTRAS, 144); myGLCD.setFont (SevenSegNumFont); myGLCD.print ("0123456789", CENTRAS, 190); o (1) {}; }

6 veiksmas: UTFT formos, linijos ir modelis

UTFT formos, linijos ir modelis
UTFT formos, linijos ir modelis

#include "UTFT.h" // Paskelbkite, kokius šriftus naudosime usingextern uint8_t SmallFont ; // Nustatykite tinkamus kaiščius savo kūrimo skydui // -------------- ---------------------------------------------- // Arduino Uno / 2009: // ------------------- // Standartinis „Arduino Uno“/ 2009 skydas:, A5, A4, A3, A2 // „DisplayModule Arduino Uno“TFT skydas:, A5, A4, A3, A2 // Arduino Mega: // ------------------- // Standartinė Arduino Mega/Due shield:, 38, 39, 40, 41 // „CTE TFT LCD/SD Shield“, skirtas „Arduino Mega“:, 38, 39, 40, 41 // // Nepamirškite pakeisti modelio parametro, kad tiktų jūsų ekrano moduliui! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); void setup () {randomSeed (analogRead (0)); // LCD sąrankos nustatymas myGLCD. InitLCD (); myGLCD.setFont („SmallFont“); }

tuštumos kilpa ()

{int buf [318]; int x, x2; int y, y2; int r; // Išvalyti ekraną ir nupiešti rėmelį 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 *", CENTRAS, 1); myGLCD.setBackColor (64, 64, 64); myGLCD.setColor (255, 255, 0); myGLCD.print ("", CENTRAS, 227); myGLCD.setColor (0, 0, 255); myGLCD.drawRect (0, 14, 319, 225); // Nubrėžkite kryželį 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); // Nubrėžkite sin-, cos- ir tan-linijas myGLCD.setColor (0, 255, 255); myGLCD.print („Nuodėmė“, 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 („Įdegis“, 5, 39); (int i = 1; i <318; i ++) {myGLCD.drawPixel (i, 119+ (tan (((i*1.13)*3.14)/180))); } uždelsimas (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); // Nubrėžkite judančią sinusinę bangą x = 1; (int i = 1; i319) {if ((x == 159) || (buf [x-1] == 119)) myGLCD.setColor (0, 0, 255); kitaip 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 (x, y); buf [x-1] = y; } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Nubrėžkite kai kuriuos užpildytus stačiakampius (int i = 1; i <6; i ++) {switch (i) {case 1: myGLCD.setColor (255, 0, 255)); pertrauka; 2 atvejis: myGLCD.setColor (255, 0, 0); pertrauka; 3 atvejis: myGLCD.setColor (0, 255, 0); pertrauka; 4 atvejis: myGLCD.setColor (0, 0, 255); pertrauka; 5 atvejis: myGLCD.setColor (255, 255, 0); pertrauka; } myGLCD.fillRect (70+ (i*20), 30+ (i*20), 130+ (i*20), 90+ (i*20)); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Nubrėžkite užpildytus, suapvalintus stačiakampius (int i = 1; i <6; i ++) {switch (i) {case 1: myGLCD.setColor (255, 0, 255); pertrauka; 2 atvejis: myGLCD.setColor (255, 0, 0); pertrauka; 3 atvejis: myGLCD.setColor (0, 255, 0); pertrauka; 4 atvejis: myGLCD.setColor (0, 0, 255); pertrauka; 5 atvejis: myGLCD.setColor (255, 255, 0); pertrauka; } myGLCD.fillRoundRect (190- (i*20), 30+ (i*20), 250- (i*20), 90+ (i*20)); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Nubrėžkite keletą užpildytų apskritimų (int i = 1; i <6; i ++) {switch (i) {case 1: myGLCD.setColor (255, 0, 255)); pertrauka; 2 atvejis: myGLCD.setColor (255, 0, 0); pertrauka; 3 atvejis: myGLCD.setColor (0, 255, 0); pertrauka; 4 atvejis: myGLCD.setColor (0, 0, 255); pertrauka; 5 atvejis: myGLCD.setColor (255, 255, 0); pertrauka; } myGLCD.fillCircle (100+ (i*20), 60+ (i*20), 30); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Nubrėžkite kai kurias linijas pagal modelį 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); už (int i = 15; i <224; i+= 5) {myGLCD.drawLine (318, i, 330- (i*1,44), 224); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Nubrėžkite atsitiktinius apskritimus (int i = 0; i <100; i ++) {myGLCD.setColor (atsitiktinis (255), atsitiktinis (255), atsitiktinis (255))); x = 32+atsitiktinis (256); y = 45+atsitiktinis (146); r = atsitiktinis (30); myGLCD.drawCircle (x, y, r); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Nubrėžkite atsitiktinius stačiakampius (int i = 0; i <100; i ++) {myGLCD.setColor (atsitiktinis (255), atsitiktinis (255), atsitiktinis (255))); x = 2+atsitiktinis (316); y = 16+atsitiktinis (207); x2 = 2+atsitiktinis (316); y2 = 16+atsitiktinis (207); myGLCD.drawRect (x, y, x2, y2); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Nubrėžkite atsitiktinai suapvalintus stačiakampius (int i = 0; i <100; i ++) {myGLCD.setColor (atsitiktinis (255), atsitiktinis (255), atsitiktinis (255)); x = 2+atsitiktinis (316); y = 16+atsitiktinis (207); x2 = 2+atsitiktinis (316); y2 = 16+atsitiktinis (207); myGLCD.drawRoundRect (x, y, x2, y2); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); for (int i = 0; i <100; i ++) {myGLCD.setColor (atsitiktinis (255), atsitiktinis (255), atsitiktinis (255)); x = 2+atsitiktinis (316); y = 16+atsitiktinis (209); x2 = 2+atsitiktinis (316); y2 = 16+atsitiktinis (209); myGLCD.drawLine (x, y, x2, y2); } uždelsimas (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); for (int i = 0; i <10000; i ++) {myGLCD.setColor (atsitiktinis (255), atsitiktinis (255), atsitiktinis (255)); myGLCD.drawPixel (2+atsitiktinis (316), 16+atsitiktinis (209)); } uždelsimas (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 („Štai ir viskas!“, CENTRAS, 93); myGLCD.print ("Paleidimas iš naujo", CENTRAS, 119); myGLCD.print („kelios sekundės…“, CENTRAS, 132); myGLCD.setColor (0, 255, 0); myGLCD.setBackColor (0, 0, 255); myGLCD.print ("Runtime: (ms)", CENTRAS, 210); myGLCD.printNumI (milis (), CENTRAS, 225); vėlavimas (10000); }

7 veiksmas: UTFT bitkartė

UTFT bitų žemėlapis
UTFT bitų žemėlapis

#įtraukti

#include // Paskelbkite, kokius šriftus naudosime extern uint8_t SmallFont ; // Nustatykite tinkamus kaiščius, skirtus jūsų kūrimo skydui // ------------------ ------------------------------------------ // Arduino Uno / 2009: / / ------------------- // Standartinis „Arduino Uno“/ 2009 skydas:, A5, A4, A3, A2 // „DisplayModule Arduino Uno“TFT skydas:, A5, A4, A3, A2 // Arduino Mega: // ------------------- // Standartinė Arduino Mega/Due shield:, 38, 39, 40, 41 // „CTE TFT LCD/SD Shield“, skirtas „Arduino Mega“:, 38, 39, 40, 41 // // Nepamirškite pakeisti modelio parametro, kad jis atitiktų jūsų ekrano modulį! UTFT myGLCD (ITDB32S, A5, A4, A3, A2); išorinė nepasirašyta int informacija [0x400]; extern unsigned int piktograma [0x400]; extern unsigned int tux [0x400]; void setup () {myGLCD. InitLCD (); myGLCD.setFont („SmallFont“); } void loop () {myGLCD.fillScr (255, 255, 255); myGLCD.setColor (255, 255, 255); myGLCD.print ("*** A 10x7 tinklelis iš 32x32 piktogramos ***", CENTRAS, 228); for (int x = 0; x <10; x ++) for (int y = 0; y <7; y ++) myGLCD.drawBitmap (x*32, y*32, 32, 32, info); vėlavimas (5000); myGLCD.fillScr (255, 255, 255); myGLCD.setColor (255, 255, 255); myGLCD.print („Dvi skirtingos 1–4 skalės piktogramos“, CENTRAS, 228); int x = 0; for (int s = 0; s0; s--) {myGLCD.drawBitmap (x, 224- (s*32), 32, 32, piktograma, s); x+= (s*32); } uždelsimas (5000); }

8 žingsnis: mygtukų sąsaja

Mygtuko sąsaja
Mygtuko sąsaja

#include #include // Inicijuoti rodymą // ------------------ // Nustatykite tinkamus kaiščius, skirtus jūsų kūrimo lentai // ------- -------------------------------------------------- - // Standartinis „Arduino Uno“/2009 skydas:, 19, 18, 17, 16 // Standartinis „Arduino Mega“/„Due shield“:, 38, 39, 40, 41 // CTE TFT LCD/SD skydas, skirtas „Arduino Due“:, 25, 26, 27, 28 // „Teensy 3.x“TFT bandymo lenta:, 23, 22, 3, 4 // „ElecHouse“TFT LCD/SD skydas „Arduino“Terminas:, 22, 23, 31, 33 // // Nepamirškite pakeiskite modelio parametrą, kad jis atitiktų jūsų ekrano modulį! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); // Inicijuoti jutiklinį ekraną // ---------------------- // Nustatykite smeigtukus į teisingą tie, kurie skirti jūsų plėtros tarybai // ------------------------------------------- ---------------- // Standartinis „Arduino Uno“/2009 skydas: 15, 10, 14, 9, 8 // Standartinis „Arduino Mega“/tinkamas skydas: 6, 5, 4, 3, 2 // „CTE TFT LCD/SD Shield“, skirtas „Arduino“Dėl 6, 5, 4, 3, 2 // „Teensy 3.x“TFT testavimo plokštės: 26, 31, 27, 28, 29 // „ElecHouse TFT LCD/SD Shield“„Arduino Due“: 25, 26, 27, 29, 30 // URTouch myTouch (6, 5, 4, 3, 2); // Paskelbkite, kokius šriftus naudosime iš išorės uint8_t BigFont ; int x, y; char stCurrent [20] = ""; int stCurrentLen = 0; char stLast [20] = "";/************************* ** Pasirinktinės funkcijos ** ********* ****************/void drawButtons () {// Nubrėžkite viršutinę mygtukų eilutę (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); } // Nubrėžkite vidurinę mygtukų eilutę (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); jei (x <4) myGLCD.printNumI (x+6, 27+ (x*60), 87); } myGLCD.print ("0", 267, 87); // Nubrėžkite apatinę myGLCD.setColor mygtukų eilutę (0, 0, 255); myGLCD.fillRoundRect (10, 130, 150, 180); myGLCD.setColor (255, 255, 255); myGLCD.drawRoundRect (10, 130, 150, 180); myGLCD.print („Aišku“, 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) {už (x = 0; x

9 žingsnis: „Flappy Bird“

Flappy Bird
Flappy Bird

#include #include #include // ==== Objektų kūrimas UTFT myGLCD (SSD1289, 38, 39, 40, 41); // Parametrai turi būti pritaikyti jūsų „Display/Schield“modeliui UTouch myTouch (6, 5, 4, 3, 2); // ==== Šriftų apibrėžimas extern uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; extern unsigned int bird01 [0x41A]; // Paukščių bitmapintas x, y; // Koordinatių, kuriose buvo paspaustas ekranas, kintamieji // Floppy Bird int xP = 319; int yP = 100; int yB = 50; int moveRate = 3; int fallRateInt = 0; float fallRate = 0; int rezultatas = 0; int lastSpeedUpScore = 0; int didžiausias balas; loginis ekranasSpaustas = klaidingas; boolean gameStarted = false; void setup () {// Pradėti rodyti myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); aukščiausias balas = EEPROM.read (0); // Skaityti aukščiausią rezultatą iš EEPROM initiateGame (); // Inicijuoti žaidimą} void loop () {xP = xP-moveRate; // xP - x polių koordinatė; diapazonas: 319 - (-51) drawPilars (xP, yP); // Nubrėžia stulpus // yB - y paukščio koordinatę, kuri priklauso nuo kritimo vertės kintamojo reikšmės yB+= fallRateInt; kritimo greitis = kritimo greitis+0,4; // Kiekvienas įterpimas kritimo greičio padidėjimas, kad galėtume pagreičio/ gravitacijos kritimo poveikįRateInt = int (fallRate); // Tikrina susidūrimą, jei (yB> = 180 || yB <= 0) {// žaidimo viršuje ir apačiojeOver (); } if ((xP = 5) && (yB <= yP-2)) {// viršutinio ramsčio žaidimasOver (); } if ((xP = 5) && (yB> = yP+60)) {// apatinio ramsčio žaidimasOver (); } // Piešia paukštį drawBird (yB); // Kai stulpelis praeis per ekraną, jei (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 aukščiausias rezultatas) {aukščiausias balas = balas; EEPROM.write (0, aukščiausias rezultatas); } // Nustato kintamuosius į pradinės padėties reikšmes xP = 319; yB = 50; FallRate = 0; balas = 0; lastSpeedUpScore = 0; judantis greitis = 3; gameStarted = false; // Iš naujo paleisti žaidimą initiateGame (); }

10 žingsnis: Projekto darbas

Šaltinio kodą galite rasti mano „Github“saugykloje.

Nuoroda:

Nukelkite nykštį, jei tai jums tikrai padėjo, ir sekite mano kanalą, kur rasite įdomių projektų:)

Jei norite, pasidalinkite šiuo vaizdo įrašu.

Džiaugiamės, kad užsiprenumeravote:

Ačiū, kad skaitote!

Rekomenduojamas: