תוכן עניינים:
- שלב 1: דרישות חומרה ותוכנה
- שלב 2: שיפור UTFT Lib
- שלב 3: אתחול מגן TFT
- שלב 4: עולם שלום בסיסי
- שלב 5: גופני UTFT
- שלב 6: צורות, קווים ודוגמת UTFT
- שלב 7: מפת סיביות UTFT
- שלב 8: ממשק כפתורים
- שלב 9: ציפור רפויה
- שלב 10: עבודת הפרויקט
וִידֵאוֹ: יסודות ממשק Arduino TFT: 10 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:15
מסכי מגע TFT הם הממשק הגרפי המדהים שניתן להשתמש בו עם מיקרו -בקרים כגון Atmel, PIC, STM, מכיוון שיש לו טווח צבעים רחב ויכולת גרפית טובה ומיפוי פיקסלים טוב.
היום, אנו הולכים לממשק 2.4 אינץ 'TFT LCD עם Arduino.
מגן זה מיועד ל- Arduino UNO, אך אלמד כיצד להשתמש בו עם Arduino Mega מסיבה הגיונית מאוד, "זיכרון התוכניות".
על ידי שימוש במגן TFT LCD צבעוני זה נוכל להציג תווים, מחרוזות, ממשק כפתורים, תמונות מפת סיביות וכו 'על TFT LCD הצבעוני.
שלב 1: דרישות חומרה ותוכנה
כדי להפוך את ממשק המגן עם מגה Arduino, אנו צריכים את הדברים הבאים.
חומרה:
• מגה ארדואינו
• TFT 2.4/2.8/3.2 אינץ 'LCD
• כבל יו אס בי
תוֹכנָה
• Arduino IDE
• ספריית UTFT / spfd5408 ספרייה
המגן מיוצר במקור ללוחות ה- Arduino UNO, שניתן להשתמש בהם עם Arduino mega.
בעת השימוש בו עם Arduino UNO ישנן שתי בעיות עיקריות: "זיכרון אחסון" ושימוש בסיכות.
קשה להשתמש בסיכות שאינן בשימוש הזמינות ב- UNO, ואילו עדיף עם Arduino MEGA מכיוון שנותרו לנו יותר סיכות קלט/פלט.
בשלב הבא, אראה כיצד לערוך את ספריית UTFT לשימוש במגן TFT
שלב 2: שיפור UTFT Lib
ספרייה זו היא המשך ספריות ה- ITDB02_Graph, ITDB02_Graph16 ו- RGB_GLCD שלי עבור Arduino ו- chipKit. ככל שמספר מודולי התצוגה ובקרי התמיכה הנתמכים החל לעלות, הרגשתי שהגיע הזמן ליצור ספרייה אוניברסלית יחידה, כיוון שיהיה הרבה יותר קל לתחזק אותה בעתיד.
ל- Arduino MEGA יש 256 קילו -בתים של זיכרון תוכנה. בנוסף, ישנם 54 סיכות.
רובם חופשיים לשימוש, והאנלוגי 5 בלבד נלקחים מתוך 16.
ספרייה זו תומכת במספר תצוגות גרפיות של 8 ביט, 16 סיביות וסידריות, ותפעל הן עם לוחות Arduino, chipKit והן עם TI LaunchPads נבחרות.
הערה: בשל גודל הספרייה אני לא ממליץ להשתמש בה ב- ATmega328 (Arduino Uno) ו- ATmega32U4 (Arduino Leonardo) מכיוון שיש להם רק זיכרון פלאש של 32KB. זה יעבוד, אך תהיה מוגבל מאוד בזכרון פלאש זמין עבור היישום שלך
צעדים
- הורד את ספריית UTFT
- פתח את הספרייה
- פתח UTFT / hardware / avr במקרה של Arduino או תלוי בבקר המיקרו המשמש
- פתח את HW_AVR_defines באמצעות פנקס רשימות
- קו 7 לא מגיב כדי לאפשר מגן UNO עבור MEGA
- שמור את הקובץ והוסף את הספרייה הזו ל- Arduino IDE
עכשיו סיימנו עם השלב הזה! בשלב הבא, אראה כיצד להשתמש בספרייה ואגדיר את הסיכות עבור Arduino Mega.
שלב 3: אתחול מגן TFT
לאחר עריכת הספרייה, הוסף אותה לספריית Arduino.
לאחר מכן, אני הולך להראות לך כיצד להגדיר את מודול TFT הנכון שיש לך
עלינו למצוא את שם המודול שלו בספרייה.
- פתח את קובץ הספרייה
- לך לתיעוד
אתה יכול לראות קבצים אלה בתיעוד
• UTFT:
קובץ זה מציג את כל הפונקציות והפקודות הכלולות בספרייה זו.
• דרישה UTFT_
בקובץ זה יש מידע על המודולים וכיצד הוא קשור לספרייה, כמו תצורות סיכות
• בקר UTFT_Supported_display_modules _ & _
זוהי המטרה שלנו, לקובץ זה יש את שמות המודולים והמגנים הנתמכים על ידי ספרייה זו, אתה יכול לראות בו רשימה של שמות מודולים ושמות מודולים עבור UTFT בהם עליך להשתמש כדי להגדיר את המודול שלך.
שלבים להגדרת TFT:
פתח קובץ בקר UTFT_Supported_display_modules _ & _ מהספרייה
- פתח קובץ בקר UTFT_Supported_display_modules _ & _ מהספרייה
- מצא את הדגמים עבור UTFT עבור המודולים (מגן) שיש לך.
- כעת כדי להגדיר פונקציית UTFT ב- Arduino IDE, אנו משתמשים בפקודה:
שם UTFT (מודול, Rs, Wr, Cs, Rst);
פתח קובץ UTFT_Requirement מהספרייה
מהמסמך אנו יודעים שהסיכות ממוקמות בסיכות A5, A4, A3 ו- A2.
אנו משתמשים בפקודה:
UTFT myGLCD (ITDB28, 19, 18, 17, 16); # שימו לב כי סיכות 19, 18, 17, 16 במגה Arduino
UTFT myGLCD (ITDB28, A5, A4, A3, A2); # שימו לב כי סיכות A5, A4, A3, A2 ב- UNO של Arduino
ונגמר! כעת תוכל להשתמש בדוגמאות הספרייה ב- Arduino IDE עם השינויים הבאים.
שלב 4: עולם שלום בסיסי
#include // הצהירו באילו גופנים נשתמש
חיצוני uint8_t BigFont ; חיצוני uint8_t SevenSegNumFont ; // זכור לשנות את פרמטר הדגם כך שיתאים למודול התצוגה שלך! UTFT myGLCD (ITDB28, A5, A4, A3, A2); הגדרת חלל () {myGLCD. InitLCD (); myGLCD.clrScr (); myGLCD.setFont (BigFont); } לולאת חלל () {myGLCD.setColor (0, 255, 0); // ירוק myGLCD.print ("HELLO WORLD", 45, 100); בעוד (נכון) {}; }
שלב 5: גופני UTFT
#include // הצהירו באילו גופנים נשתמש
חיצוני uint8_t SmallFont ; חיצוני uint8_t BigFont ; חיצוני uint8_t SevenSegNumFont ; // הגדר את הסיכות לנכונות למגן הפיתוח שלך // ----------------------------------- ------------------------- // Arduino Uno / 2009: // ---------------- --- // מגן Arduino Uno/2009 רגיל:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT:, A5, A4, A3, A2 // // Arduino Mega: // ----- -------------- // סטנדרטי 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 () {myGLCD. InitLCD () myGLCD.clrScr (); } לולאת חלל () {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 ", CENTRE, 32); myGLCD.print (" PQRSTUVWXYZ ^_ ", CENTER, 48); myGLCD.print (" "abcdefghijklmno", CENTER, 64); myGLCD.print ("pqrstuvwxyz) ~ ", CENTER, 80); myGLCD.setFont (SmallFont); myGLCD.print ("! / "#$%& '()*+, -./0123456789:;?", CENTER, 120); myGLCD.print ("@ABCDEFGHIJKLMNOPQRSTUVWXYZ ^_", CENTRE, 132); myGLCD.print ("` abcdefghijklmnopqrstuvwxyz {|} ~ ", CENTER, 144); myGLCD.setFont (SevenSegNumFont); myGLCD.print ("0123456789", מרכז, 190); בעוד (1) {}; }
שלב 6: צורות, קווים ודוגמת UTFT
#include "UTFT.h" // הצהרי באילו גופנים נשתמש exuter 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, 38, 39, 40, 41); הגדרת void () {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 (" * ספריית תצוגת TFT אוניברסלית בצבע *", מרכז, 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); עבור (int i = 19; i <220; i+= 10) myGLCD.drawLine (157, i, 161, i); // צייר קווים sin-, cos- ושזוף myGLCD.setColor (0, 255, 255); myGLCD.print ("חטא", 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 ("טאן", 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; עבור (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+(sin ((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) {מקרה 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) {מקרה 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) {מקרה 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); for (int i = 15; i <224; i+= 5) {myGLCD.drawLine (1, i, (i*1.44) -10, 224); } myGLCD.setColor (255, 0, 0); for (int i = 224; i> 15; i- = 5) {myGLCD.drawLine (318, i, (i*1.44) -11, 15); } myGLCD.setColor (0, 255, 255); for (int i = 224; i> 15; i- = 5) {myGLCD.drawLine (1, i, 331- (i*1.44), 15); } myGLCD.setColor (0, 255, 255); for (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 ("זהו זה!", CENTRE, 93); myGLCD.print ("הפעלה מחדש ב- a", CENTER, 119); myGLCD.print ("כמה שניות …", CENTER, 132); myGLCD.setColor (0, 255, 0); myGLCD.setBackColor (0, 0, 255); myGLCD.print ("זמן ריצה: (msecs)", CENTER, 210); myGLCD.printNumI (millis (), CENTER, 225); עיכוב (10000); }
שלב 7: מפת סיביות UTFT
#לִכלוֹל
#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); מידע חיצוני לא חתום [0x400]; סמל int ללא חיצוני [0x400]; int tux חיצוני בלתי חתום [0x400]; הגדרת חלל () {myGLCD. InitLCD (); myGLCD.setFont (SmallFont); } לולאת חלל () {myGLCD.fillScr (255, 255, 255); myGLCD.setColor (255, 255, 255); myGLCD.print ("*** רשת בגודל 10 על 7 של סמל 32x32 ***", מרכז, 228); עבור (int x = 0; x <10; x ++) עבור (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, icon, s); x+= (s*32); } עיכוב (5000); }
שלב 8: ממשק כפתורים
#include #include // אתחל תצוגה // ------------------ // הגדר את הפינים לנכונים ללוח הפיתוח שלך // ------- -------------------------------------------------- - // סטנדרטי Arduino Uno/2009 מגן:, 19, 18, 17, 16 // מגן Arduino Mega/Due סטנדרטי:, 38, 39, 40, 41 // CTE TFT LCD/SD מגן עבור Arduino Due:, 25, 26, 27, 28 // Teensy 3.x לוח בדיקות TFT:, 23, 22, 3, 4 // ElecHouse TFT LCD/SD מגן עבור Arduino Due:, 22, 23, 31, 33 // // זכור ל- שנה את פרמטר הדגם כך שיתאים למודול התצוגה שלך! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); // אתחל מסך מגע // ---------------------- // הגדר את הסיכות לנכונות כאלה ללוח הפיתוח שלך // ------------------------------------------- ---------------- // סטנדרטי Arduino Uno/2009 מגן: 15, 10, 14, 9, 8 // מגן Arduino Mega/Due רגיל: 6, 5, 4, 3, 2 // CTE TFT LCD/SD Shield עבור Arduino Due: 6, 5, 4, 3, 2 // Teensy 3.x לוח בדיקת TFT: 26, 31, 27, 28, 29 // ElecHouse TFT LCD/SD Shield עבור Arduino Due: 25, 26, 27, 29, 30 // URTouch myTouch (6, 5, 4, 3, 2); // הצהרי באילו גופנים נשתמש חיצוני 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 ("Clear", 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) {עבור (x = 0; x
שלב 9: ציפור רפויה
#include #include #include // ==== יצירת אובייקטים UTFT myGLCD (SSD1289, 38, 39, 40, 41); // יש להתאים את הפרמטרים לדגם התצוגה/שילד UTouch myTouch (6, 5, 4, 3, 2); // ==== הגדרת גופנים חיצוניים uint8_t SmallFont ; חיצוני uint8_t BigFont ; חיצוני uint8_t SevenSegNumFont ; חיצוני לא חתום int bird01 [0x41A]; // ציפורי Bitmapint x, y; // משתנים לקואורדינטות שבהן נלחצה התצוגה // Floppy Bird int xP = 319; int yP = 100; int yB = 50; int movingRate = 3; int fallRateInt = 0; float fallRate = 0; int score = 0; int lastSpeedUpScore = 0; int הגבוה ביותר; screen booleanPressed = false; boolean gameStarted = false; הגדרת void () {// התחל להציג myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); highestScore = EEPROM.read (0); // קרא את הציון הגבוה ביותר מ- EEPROM initiateGame (); // ליזום את המשחק} לולאת חלל () {xP = xP-movingRate; // xP - קואורדינטת x של העמודים; טווח: 319 - (-51) drawPilars (xP, yP); // מצייר את העמודים // yB - y קואורדינטה של הציפור שתלויה בערך משתנה fallRate yB+= fallRateInt; fallRate = fallRate+0.4; // בכל כניסה קצב הנפילה עולה כך שנוכל להשפיע על האצה/ כוח הכבידה fallRateInt = int (fallRate); // בודק התנגשות אם (yB> = 180 || yB <= 0) {// gameOver () למעלה ותחתון (); } אם ((xP = 5) && (yB <= yP-2)) {// עמוד עליון gameOver (); } אם ((xP = 5) && (yB> = yP+60)) {// gameunder עמוד תחתון (); } // מצייר את הציפור 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; movingRate = 3; gameStarted = false; // הפעל מחדש את המשחק initateGame (); }
שלב 10: עבודת הפרויקט
אתה יכול למצוא את קוד המקור במאגר Github שלי.
קישור:
תן אגודל אם זה באמת עזר לך ותעקוב אחרי הערוץ שלי לפרויקטים מעניינים:)
שתף את הסרטון הזה אם תרצה.
שמח שנרשמת:
תודה שקראתם!
מוּמלָץ:
תחילת העבודה עם ממשק חיישן I2C ?? - ממשק MMA8451 שלך באמצעות ESP32s: 8 שלבים
תחילת העבודה עם ממשק חיישן I2C ?? - ממשק ה- MMA8451 שלך באמצעות ESP32s: במדריך זה, תלמד הכל על איך להתחיל, להתחבר ולהשיג מכשיר I2C (מאיץ) שעובד עם בקר (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
כפתור ממשק - יסודות ארדואינו: 3 שלבים
כפתור ממשק - Arduino Basics: כפתור הלחיצה הוא רכיב המחבר שתי נקודות במעגל כאשר אתה לוחץ עליו. כאשר הכפתור פתוח (לא מודחק) אין קשר בין שתי רגלי הלחיצה, כך שהסיכה מחוברת ל -5 וולט (דרך הרפידה הנפתחת
ממשק ממשק קל ליישם -- תצוגת OLED עם ג'ויסטיק ולחצנים: 6 שלבים
ממשק ממשק קל ליישם || תצוגת OLED עם ג'ויסטיק ולחצנים: מודול זה כולל צג OLED עם שני כפתורים, ג'ויסטיק 5 כיוונים ומד תאוצה 3 צירים. זה שימושי בהגדרת ממשק משתמש לפרויקט. היי, מה קורה חבר'ה? אקרש כאן מ- CETech. היום אנו נסתכל על מודול הכל-באחד, אשר
עיצוב תפריט ARDUINO עם ממשק משתמש OLED (ממשק משתמש): 4 שלבים
עיצוב תפריט ARDUINO עם OLED-UI (ממשק משתמש): היי כולם! במדריך זה אנסה להסביר כיצד ליצור עיצוב תפריט ARDUINO באמצעות מסך OLED i2c. הוא ידוע גם בשם ממשק משתמש (ממשק משתמש). הוא משמש לפרויקטים רבים אך הוא חייב להיות מוכר לך ממדפסות תלת מימד :) כאן גם סרטון
תכנית Pro-mini באמצעות Uno (יסודות Arduino): 7 שלבים (עם תמונות)
תכנית Pro-mini Using Uno (יסודות ארדואינו): שלום לכולם, בהנחיה זו ברצוני לשתף אתכם בניסיוני עם ה- Arduino pro-mini שרכשתי לאחרונה וכיצד הצלחתי להעלות אליו את הקוד בפעם הראשונה, באמצעות שלי ישן Arduino Uno.Arduino pro-mini כולל את התכונות הבאות: זהו