Turinys:
- 1 žingsnis: Techninės ir programinės įrangos reikalavimai
- 2 veiksmas: UTFT Lib
- 3 žingsnis: TFT skydo inicijavimas
- 4 žingsnis: Pagrindinis „Sveiki pasaulis“
- 5 veiksmas: UTFT šriftai
- 6 veiksmas: UTFT formos, linijos ir modelis
- 7 veiksmas: UTFT bitkartė
- 8 žingsnis: mygtukų sąsaja
- 9 žingsnis: „Flappy Bird“
- 10 žingsnis: Projekto darbas
Video: „Arduino TFT“sąsajos pagrindai: 10 žingsnių (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
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
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
Š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
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“
#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
#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
#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ė
#į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
#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“
#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:
„Perfboard“naudojimas - Litavimo pagrindai: 14 žingsnių (su nuotraukomis)
„Perfboard“naudojimas | Lituoti pagrindai: Jei kuriate grandinę, bet neturite jai suprojektuotos plokštės, perforatoriaus naudojimas yra geras pasirinkimas. Perfboardai taip pat vadinami perforuotomis plokštėmis, prototipų plokštėmis ir taškiniais PCB. Iš esmės tai yra krūva varinių pagalvėlių grandinėje
Sąsajos GPS modulis su „Raspberry Pi“: 10 žingsnių
Sąsajos GPS modulis su „Raspberry Pi“: Ei, vaikinai !! Ar norite sujungti GPS modulį su „Raspberry Pi“? Tačiau susiduriate su tam tikrais sunkumais tai padaryti? „Nesijaudink, aš čia tau padėsiu! Galite pradėti naudodami šias dalis:
Sąsajos „HMC5883L“kompaso jutiklio su „Arduino“pamoka: 10 žingsnių (su paveikslėliais)
Sąsajos „HMC5883L“kompaso jutiklis su „Arduino“instrukcija: Aprašymas „HMC5883L“yra 3 ašių skaitmeninis kompasas, naudojamas dviem bendrais tikslais: matuoti magnetinės medžiagos, pvz., Feromagneto, įmagnetinimą arba matuoti stiprumą ir kai kuriais atvejais kryptį. magnetinis laukas s taške
Sąsajos mygtukas - „Arduino“pagrindai: 3 žingsniai
Sąsajos mygtukas - „Arduino“pagrindai: Mygtukas yra komponentas, jungiantis du grandinės taškus, kai jį paspaudžiate. Kai mygtukas yra atidarytas (nespaustas), tarp dviejų mygtuko kojų nėra ryšio, todėl kaištis prijungtas prie 5 voltų (per ištraukiamąjį laikiklį
„HX711“sąsajos su apkrovos langeliu tiesi juosta 50 kg pamoka: 10 žingsnių (su paveikslėliais)
Sąsajos HX711 su apkrovos elementu 50 kg: HX711 BALACE MODULED aprašymas: Šiame modulyje naudojamas 24 didelio tikslumo A / D keitiklis. Šis lustas skirtas didelio tikslumo elektroninėms svarstyklėms ir dizainui, turi du analoginius įvesties kanalus, programuojamą 128 integruoto stiprintuvo stiprinimą. Įvesties grandinė