Мазмуну:
- 1 -кадам: Аппараттык жана программалык камсыздоого талаптар
- 2 -кадам: UTFT Lib'ды тууралоо
- 3 -кадам: TFT Shieldди баштоо
- 4 -кадам: Негизги Hello World
- 5 -кадам: UTFT шрифттери
- 6 -кадам: UTFT Shapes, Lines and Pattern
- 7 -кадам: UTFT Bitmap
- 8 -кадам: Түймө интерфейси
- 9 -кадам: Flappy Bird
- 10 -кадам: Долбоордун иштеши
Video: Arduino TFT интерфейсинин негиздери: 10 кадам (сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
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'ды тууралоо
Бул китепкана менин 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ди баштоо
Китепкананы оңдогондон кийин, аны 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
#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 шрифттери
#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
#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
#кошуу
#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
#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 репозиторийимден таба аласыз.
Шилтеме:
Бармагыңызды бериңиз, эгер бул сизге чындап жардам берген болсо жана менин каналымды кызыктуу долбоорлор үчүн ээрчиңиз:)
Кааласаңыз бул видеону бөлүшүңүз.
Жазылууңузга кубанычтабыз:
Окуганыңыз үчүн рахмат!
Сунушталууда:
Кичинекей H-Bridge айдоочулары - Негиздери: 6 кадам (Сүрөттөр менен)
Кичинекей H-Bridge айдоочулары | Негиздери: Саламатсызбы жана дагы бир Инструкторго кош келиңиз! Мурунку китепте мен сизге KiCadда кантип питон скриптин колдонуп катуштарды жаратканымды көрсөттүм. Анан кайсынысы жакшы иштээрин билүү үчүн бир нече түрдөгү катушкаларды түзүп, сынап көрдүм. Менин максатым чоң затты алмаштыруу
Тон чыгаруу үчүн пьезону кантип колдонуу керек: негиздери: 4 кадам (сүрөттөр менен)
Тон чыгаруу үчүн пьезону кантип колдонсо болот: Негиздери: Саламатсыздарбы баарына, Бул үйрөткүчтө, биз обон чыгаруу үчүн Пьезо сигналын колдонобуз. Piezo - бул үн чыгарууда да, аныктоодо да колдонула турган электрондук түзүлүш. Колдонмолор: Сиз ойноо үчүн бир эле схеманы колдоно аласыз
Мотор негиздери - Эксперимент менен түшүнүү үчүн супер жеңил түшүнүк: 7 кадам (сүрөттөр менен)
Мотор негиздери | Эксперимент менен түшүнүү үчүн супер оңой түшүнүк: Бул үйрөткүчтө мен сизге моторлордун негизги принциптери жөнүндө үйрөтөм. Айланабыздагы бардык моторлор ушул принцип боюнча иштешет. Жада калса генераторлор да бул эреженин өз ара билдирүүсү боюнча иштешет, мен Флемингдин сол колу жөнүндө айтып жатам
Электрониканын негиздери: Диод: 6 кадам (Сүрөттөр менен)
Электрониканын негиздери: Диод: Окууну жактырбасаңыз, менин видеомду Youtube'дан көрүңүз! Мен аны ошол жерде жөнөкөй кылдым. Бул долбоорго демөөрчүлүк кылгандыгы үчүн www.JLCPCB.com сайтына дагы чоң рахмат, сиз 2 каттуу ПХБга (10см*10см) алардын веб -сайтынан 2 долларга гана заказ бере аласыз. 2 катмар PCB үчүн курулган убакыт
Үйдү автоматташтыруунун негиздери: 6 кадам (сүрөттөр менен)
Үйдү автоматташтыруунун негиздери: Баарыңарга салам. Бул көрсөтмө сизге үйдөгү автоматташтыруунун негиздерин түшүнүүгө жардам берет. Бул баштапкы деңгээл болгондуктан, биз бир гана Arduino жана башка бир нече компоненттерди гана колдонобуз. Инструктивдүү маалымат:- Мен дагы эле Arduino p жөнүндө үйрөнүп жатам