תוכן עניינים:

יסודות ממשק Arduino TFT: 10 שלבים (עם תמונות)
יסודות ממשק Arduino TFT: 10 שלבים (עם תמונות)

וִידֵאוֹ: יסודות ממשק Arduino TFT: 10 שלבים (עם תמונות)

וִידֵאוֹ: יסודות ממשק Arduino TFT: 10 שלבים (עם תמונות)
וִידֵאוֹ: interface arduino to oled display 2024, נוֹבֶמבֶּר
Anonim
יסודות ממשק Arduino TFT
יסודות ממשק Arduino TFT

מסכי מגע 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

שיפור UTFT Lib
שיפור 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

אתחול מגן TFT
אתחול מגן 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

גופני UTFT
גופני 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

צורות, קווים ודוגמאות UTFT
צורות, קווים ודוגמאות 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

מפת סיביות של UTFT
מפת סיביות של 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 שלי.

קישור:

תן אגודל אם זה באמת עזר לך ותעקוב אחרי הערוץ שלי לפרויקטים מעניינים:)

שתף את הסרטון הזה אם תרצה.

שמח שנרשמת:

תודה שקראתם!

מוּמלָץ: