Мазмуну:

Arduino TFT интерфейсинин негиздери: 10 кадам (сүрөттөр менен)
Arduino TFT интерфейсинин негиздери: 10 кадам (сүрөттөр менен)

Video: Arduino TFT интерфейсинин негиздери: 10 кадам (сүрөттөр менен)

Video: Arduino TFT интерфейсинин негиздери: 10 кадам (сүрөттөр менен)
Video: Управляем адресными светодиодами на ESP32, прошивка WLED, применение в Home Assistant 2024, Ноябрь
Anonim
Arduino TFT Interfacing негиздери
Arduino TFT Interfacing негиздери

TFT сенсордук экрандары Atmel, PIC, STM сыяктуу микроконтроллерлер менен колдонула турган укмуштуудай графикалык интерфейс, анткени ал түстөрдүн кең диапазонуна, жакшы графикалык жөндөмүнө жана пикселдердин жакшы картасына ээ.

Бүгүн биз Arduino менен 2.4 дюймдук TFT LCD Shield интерфейсине барабыз.

Бул калкан Arduino UNO үчүн, бирок мен аны Arduino Mega менен кантип колдонууну абдан логикалык себеп менен, "Программанын эс тутуму" үчүн үйрөтөм.

Бул түстүү TFT ЖК калканчын колдонуу менен биз TFT ЖК түстөгү белгилерди, саптарды, баскычтардын интерфейстерин, битмап сүрөттөрдү ж.б. көрсөтө алабыз.

1 -кадам: Аппараттык жана программалык камсыздоого талаптар

Аппараттык жана программалык камсыздоого талаптар
Аппараттык жана программалык камсыздоого талаптар
Аппараттык жана программалык камсыздоого талаптар
Аппараттык жана программалык камсыздоого талаптар

Arduino мега менен калкан интерфейсин жасоо үчүн бизге төмөнкүлөр керек.

ЖАБДУУ:

• Arduino мега

• TFT 2.4/2.8/3.2 дюймдук ЖК

• USB кабели

ПРОГРАММА

• Arduino IDE

• UTFT китепканасы / spfd5408 китепканасы

Shield башында Arduino мега менен колдонула турган Arduino UNO такталары үчүн жасалган.

Аны Arduino UNO менен колдонууда эки негизги маселе бар: "Сактагыч эс тутуму" жана казыктарды колдонуу.

UNOдо бар колдонулбаган пиндерди колдонуу кыйын, ал эми Arduino MEGA менен жакшыраак, анткени бизде көбүрөөк I/O казыктары калды.

Кийинки кадамда мен TFT калканчын колдонуу үчүн UTFT китепканасын кантип түзөтүүнү көрсөтөм

2 -кадам: UTFT Lib'ды тууралоо

UTFT Lib'ди оңдоо
UTFT Lib'ди оңдоо

Бул китепкана менин Arduino жана chipKit үчүн ITDB02_Graph, ITDB02_Graph16 жана RGB_GLCD китепканаларымдын уландысы. Колдоого алынган дисплей модулдарынын жана контроллерлеринин саны көбөйө баштаганда, мен бирдиктүү универсалдуу китепкана жасоого убакыт келди деп ойлодум, анткени келечекте аны сактоо оңой болот.

Arduino MEGAнын 256 кб эс тутуму бар. Мындан тышкары, 54 төөнөгүч бар.

Алардын көпчүлүгү бекер колдонулат, аналог 5 эле 16дан алынат.

Бул китепкана 8bit, 16bit жана сериялык графикалык дисплейлерди колдойт жана Arduino, chipKit такталары менен иштейт жана TI LaunchPadsти тандайт.

ЭСКЕРТҮҮ: Китепкананын чоңдугуна байланыштуу мен аны ATmega328 (Arduino Uno) жана ATmega32U4 (Arduino Leonardo) колдонууну сунуштабайм, анткени аларда 32 КБ флеш -эс гана бар. Бул иштейт, бирок сиз колдонмоңуз үчүн жеткиликтүү флеш -эс менен чектелесиз

Кадамдар

  • UTFT китепканасын жүктөп алыңыз
  • Китепкананы ачуу
  • Arduino учурда же колдонулган микроконтроллерге жараша UTFT / hardware / avr ачыңыз
  • Notepad аркылуу HW_AVR_definesти ачыңыз
  • Uncomment Line 7 MEGA үчүн UNO калкан иштетүү үчүн
  • Файлды сактаңыз жана бул китепкананы Arduino IDEге кошуңуз

Эми биз бул кадамды бүтүрдүк! Кийинки кадамда мен китепкананы колдонууну жана Arduino Mega үчүн казыктарды аныктоону көрсөтөм.

3 -кадам: TFT Shieldди баштоо

TFT Shield баштоо
TFT Shield баштоо

Китепкананы оңдогондон кийин, аны Arduino каталогуна кошуңуз.

Андан кийин, мен сизге туура TFT модулун кантип аныктоону көрсөтөм

биз анын модулунун атын китепканадан табышыбыз керек.

  • китепкана файлын ачуу
  • документацияга өтүңүз

Сиз бул файлдарды Документтерде көрө аласыз

• UTFT:

Бул файл бул китепканага кирген бардык функцияларды жана буйруктарды көрсөтөт.

• UTFT_Талаб

Бул файлда модулдар жана анын китепкана менен кандай байланышы бар экендиги тууралуу маалыматтар бар

• UTFT_Колдоого алынган_модульдар _ & _ контроллери

Бул биздин максат, бул файл бул китепкана тарабынан колдоого алынган модулдардын жана калканчтардын аталыштарына ээ, сиз андан 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); # Ардуино Мегадагы 19, 18, 17, 16 -казыктарга көңүл бургула

UTFT myGLCD (ITDB28, A5, A4, A3, A2); # Эскертүү, пинтер A5, A4, A3, A2 Arduino UNOдо

Жана бүттү! Эми сиз Arduino IDEдеги китепкана мисалдарын төмөнкү өзгөртүүлөр менен колдоно аласыз.

4 -кадам: Негизги Hello World

Негизги Hello World
Негизги Hello World

#include // Кайсы шрифттерди колдоноорубузду жарыялайбыз

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 ("HELLO WORLD", 45, 100); while (true) {}; }

5 -кадам: UTFT шрифттери

UTFT шрифттери
UTFT шрифттери

#include // Кайсы шрифттерди колдоноорубузду жарыялайбыз

extern uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; // Өнүгүү калканыңыз үчүн казыктарды туура орнотуңуз // ----------------------------------- ------------------------- // Arduino Uno / 2009: // ---------------- --- // Standard Arduino Uno/2009 калканы:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT калканы:, A5, A4, A3, A2 // // Arduino Mega: // ----- -------------- // Стандарттык Arduino Mega/Убактылуу калкан:, 38, 39, 40, 41 // CTE TFT LCD/SD Shield for 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 ("! \"#$%& '()*+, -./", ЦЕНТР, 0); myGLCD.print (" 0123456789:;? ", ЦЕНТР, 16); myGLCD.print ("@ ABCDEFGHIJKLMNO ", БОРБОРУ, 32); myGLCD.print (" PQRSTUVWXYZ ^_ ", БОРБОРУ, 48); myGLCD.print (" "abcdefghijklmno", ЦЕНТР, 64); myGLCD.print ("pq {| ~ ", ЦЕНТР, 80); myGLCD.setFont (SmallFont); myGLCD.print ("! / "#$%& '()*+, -./0123456789:;?", БОРБОРУ, 120); myGLCD.print ("@ABCDEFGHIJKLMNOPQRSTUVWXYZ ^_", БОРБОРУ, 132); myGLCD.print ("" abcdefghijklmnopqrstuvwxyz {|} ~ ", БОРБОРУ, 144); myGLCD.setFont (SevenSegNumFont); myGLCD.print ("0123456789", БОРБОРУ, 190); while (1) {}; }

6 -кадам: UTFT Shapes, Lines and Pattern

UTFT Shapes, Lines and Pattern
UTFT Shapes, Lines and Pattern

#include "UTFT.h" // Кайсы шрифттерди колдоно тургандыгыбызды жарыялайбыз uint8_t SmallFont ; // Өнүгүү калканчыңыз үчүн казыктарды туура деп коюңуз // -------------- ---------------------------------------------- // Arduino Uno / 2009: // ------------------- // Standard 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 for 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 *", БОРБОРУ, 1); myGLCD.setBackColor (64, 64, 64); myGLCD.setColor (255, 255, 0); myGLCD.print ("", БОРБОРУ, 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 (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); for (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); for (int i = 1; i <318; i ++) {myGLCD.drawPixel (i, 119+ (tan ((i*1.13)*3.14)/180)))); } delay (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); 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; } delay (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)); } delay (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)); } delay (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); } delay (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); } delay (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); } delay (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // (int i = 0; i <100; i ++) {myGLCD.setColor (random (255), random (255), random (255) үчүн кээ бир туш келди тик бурчтуктарды чийиңиз)); x = 2+туш келди (316); y = 16+туш келди (207); x2 = 2+туш келди (316); y2 = 16+туш келди (207); myGLCD.drawRect (x, y, x2, y2); } delay (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // (int i = 0; i <100; i ++) {myGLCD.setColor (random (255), random (255), random (255)); x = 2+туш келди (316); y = 16+туш келди (207); x2 = 2+туш келди (316); y2 = 16+туш келди (207); myGLCD.drawRoundRect (x, y, x2, y2); } delay (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); for (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); } delay (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)); } delay (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)", БОРБОРУ, 210); myGLCD.printNumI (миллис (), БОРБОРУ, 225); кечигүү (10000); }

7 -кадам: UTFT Bitmap

UTFT Bitmap
UTFT Bitmap

#кошуу

#include // extern uint8_t SmallFont кайсы шрифттерди колдоно тургандыгыбызды жарыялайбыз ; // Өнүгүү калканыңыз үчүн казыктарды туура орнотуңуз // ------------------ ------------------------------------------ // Arduino Uno / 2009: / / ------------------- // Standard 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 for Arduino Mega:, 38, 39, 40, 41 // // Моделдин параметрин дисплей модулуңузга ылайыкташтырууну унутпаңыз! UTFT myGLCD (ITDB32S, A5, A4, A3, A2); extern unsigned int info [0x400]; extern unsigned int icon [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 ("*** 32x32 сөлөкөтүнүн *** 10 А 7 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кө чейинки эки башка сүрөтчө", БОРБОРУ, 228); int x = 0; үчүн (int s = 0; s0; s--) {myGLCD.drawBitmap (x, 224- (s*32), 32, 32, icon, s); x+= (s*32); } кечигүү (5000); }

8 -кадам: Түймө интерфейси

Баскыч интерфейси
Баскыч интерфейси

#кошуу #кошуу // Дисплейди инициализациялоо // ------------------ // Өнүгүү тактаңыз үчүн казыктарды туура орнотуңуз // ------- -------------------------------------------------- - // 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:, 22, 23, 31, 33 // // Эсиңизде болсун моделдин параметрин дисплей модулуңузга ылайыкташтырыңыз! 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 үчүн: 25, 26, 27, 29, 30 // URTouch myTouch (6, 5, 4, 3, 2); // Extern 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); } жараксыз 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 Bird
Flappy Bird

#include #include #include // ==== Объекттерди түзүү UTFT myGLCD (SSD1289, 38, 39, 40, 41); // Параметрлер сиздин Display/Schield UTouch myTouch моделине туураланышы керек (6, 5, 4, 3, 2); // ==== Фонтторду аныктоо extern uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; extern unsigned 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 score = 0; int lastSpeedUpScore = 0; int highScore; логикалык экран Pressed = false; логикалык gameStarted = false; void setup () {// дисплейди иштетүү myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); Эң жогорку рейтинг = EEPROM.read (0); // EEPROM inititeGameден эң жогорку баллды окуңуз (); // Оюнду баштоо} void loop () {xP = xP-moveRate; // xP - x пиларлардын координаты; диапазону: 319 - (-51) drawPilars (xP, yP); // Түштөрдү тартат // yB - y чымчыктын координаты, ал түшүп жаткан ылдамдыктын маанисине көз каранды yB+= fallRateInt; fallRate = fallRate+0.4; // Ар бир инетрация күздүн ылдамдыгын жогорулатат, андыктан биз ылдамдануунун/ тартылуу күчүнүн таасирин түшүрө алабыз fallRateInt = int (fallRate); // Кагылышууну текшерет, эгерде (yB> = 180 || yB <= 0) {// top and bottom 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 tallScore) {tallScore = балл; EEPROM.write (0, highScore); } // Өзгөрмөлөрдү позициянын маанилерин баштапкы абалга келтирет xP = 319; yB = 50; fallRate = 0; балл = 0; lastSpeedUpScore = 0; moveRate = 3; gameStarted = false; // оюн демилгечи оюнун кайра баштоо (); }

10 -кадам: Долбоордун иштеши

Сиз баштапкы кодду Github репозиторийимден таба аласыз.

Шилтеме:

Бармагыңызды бериңиз, эгер бул сизге чындап жардам берген болсо жана менин каналымды кызыктуу долбоорлор үчүн ээрчиңиз:)

Кааласаңыз бул видеону бөлүшүңүз.

Жазылууңузга кубанычтабыз:

Окуганыңыз үчүн рахмат!

Сунушталууда: