Πίνακας περιεχομένων:

Arduino TFT Interfacing Basics: 10 βήματα (με εικόνες)
Arduino TFT Interfacing Basics: 10 βήματα (με εικόνες)

Βίντεο: Arduino TFT Interfacing Basics: 10 βήματα (με εικόνες)

Βίντεο: Arduino TFT Interfacing Basics: 10 βήματα (με εικόνες)
Βίντεο: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, Νοέμβριος
Anonim
Arduino TFT Interfacing Basics
Arduino TFT Interfacing Basics

Οι οθόνες αφής TFT είναι η εκπληκτική γραφική διεπαφή που μπορεί να χρησιμοποιηθεί με μικροελεγκτές όπως Atmel, PIC, STM, καθώς έχει μεγάλη χρωματική γκάμα και καλή γραφική ικανότητα και καλή χαρτογράφηση εικονοστοιχείων.

Σήμερα, θα μεταβούμε στη διεπαφή 2.4 ιντσών TFT LCD Shield με το Arduino.

Αυτή η ασπίδα είναι για το Arduino UNO, αλλά θα διδάξω πώς να τη χρησιμοποιώ με το Arduino Mega για έναν πολύ λογικό λόγο, την "Μνήμη προγράμματος".

Χρησιμοποιώντας αυτήν την έγχρωμη ασπίδα TFT LCD μπορούμε να δείξουμε χαρακτήρες, συμβολοσειρές, διασύνδεση κουμπιών, εικόνες χάρτη bitmap κ.λπ. στην έγχρωμη οθόνη LCD TFT.

Βήμα 1: Απαιτήσεις υλικού και λογισμικού

Απαιτήσεις υλικού και λογισμικού
Απαιτήσεις υλικού και λογισμικού
Απαιτήσεις υλικού και λογισμικού
Απαιτήσεις υλικού και λογισμικού

Για να κάνουμε τη διασύνδεση ασπίδας με το mega Arduino, χρειαζόμαστε τα ακόλουθα.

ΣΚΕΥΗ, ΕΞΑΡΤΗΜΑΤΑ:

• Arduino mega

• LCD TFT 2,4/2,8/3,2 ιντσών

• Καλώδιο USB

ΛΟΓΙΣΜΙΚΟ

• Arduino IDE

• Βιβλιοθήκη UTFT / Βιβλιοθήκη spfd5408

Το Shield είναι αρχικά κατασκευασμένο για τους πίνακες 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 διαθέτει 256kb μνήμης προγράμματος. Επιπλέον, υπάρχουν 54 ακίδες.

Τα περισσότερα από αυτά είναι δωρεάν για χρήση και τα αναλογικά μόλις 5 λαμβάνονται από το 16.

Αυτή η βιβλιοθήκη υποστηρίζει μια σειρά από οθόνες 8bit, 16bit και σειριακών γραφικών και θα συνεργαστεί τόσο με Arduino, πίνακες chipKit όσο και με επιλεγμένα TI LaunchPads.

ΣΗΜΕΙΩΣΗ: Λόγω του μεγέθους της βιβλιοθήκης δεν συνιστώ τη χρήση της σε ATmega328 (Arduino Uno) και ATmega32U4 (Arduino Leonardo) καθώς έχουν μόνο 32KB μνήμης flash. Θα λειτουργήσει, αλλά θα είστε πολύ περιορισμένοι στη διαθέσιμη μνήμη flash για την εφαρμογή σας

Βήματα

  • Κατεβάστε τη βιβλιοθήκη 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 _ & _ controller

Αυτός είναι ο στόχος μας, αυτό το αρχείο έχει τα ονόματα των μονάδων και των ασπίδων που υποστηρίζονται από αυτήν τη βιβλιοθήκη, μπορείτε να δείτε σε αυτήν μια λίστα με ονόματα λειτουργικών μονάδων και ονόματα λειτουργικών μονάδων για το UTFT που θα πρέπει να χρησιμοποιήσετε για να ορίσετε τη μονάδα σας.

Βήματα για τον ορισμό του TFT:

Ανοίξτε το αρχείο ελεγκτή UTFT_Supported_display_modules _ & _ από τη βιβλιοθήκη

  • Ανοίξτε το αρχείο ελεγκτή UTFT_Supported_display_modules _ & _ από τη βιβλιοθήκη
  • Βρείτε τα Μοντέλα για UTFT για τις Ενότητες (ασπίδα) που έχετε.
  • Τώρα για να ορίσουμε μια συνάρτηση UTFT στο Arduino IDE, χρησιμοποιούμε την εντολή:

Όνομα UTFT (ενότητα, Rs, Wr, Cs, Rst)

Ανοίξτε το αρχείο UTFT_Requirement από τη βιβλιοθήκη

Από το έγγραφο, γνωρίζουμε ότι οι ακίδες βρίσκονται στις ακίδες Α5, Α4, Α3 και Α2.

χρησιμοποιούμε την εντολή:

UTFT myGLCD (ITDB28, 19, 18, 17, 16); # σημείωση ότι οι καρφίτσες 19, 18, 17, 16 στο Arduino Mega

UTFT myGLCD (ITDB28, A5, A4, A3, A2); # σημείωση που καρφώνει A5, A4, A3, A2 στο Arduino UNO

Και τελείωσε! Τώρα μπορείτε να χρησιμοποιήσετε τα παραδείγματα βιβλιοθήκης στο Arduino IDE με τις ακόλουθες αλλαγές.

Βήμα 4: Βασικό Hello World

Basic Hello World
Basic 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 shield:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT shield:, 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 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:;? ", CENTER, 16); myGLCD.print ("@ ABCDEFGHIJKLMNO ", CENTER, 32). MyGLCD.print (" PQRSTUVWXYZ ^_ ", CENTER, 48); myGLCD.print (" "abcdefghijklmno", CENTER, 64); myGLCD.prw ({pqrstu} | ~ ", CENTER, 80); myGLCD.setFont (SmallFont); myGLCD.print ("! / "#$%& '()*+, -./0123456789:;?", ΚΕΝΤΡΟ, 120); myGLCD.print ("@ABCDEFGHIJKLMNOPQRSTUVWXYZ ^_", ΚΕΝΤΡΟ, 132); myGLCD.print ("" abcdefghijklmnopqrstuvwxyz {|} ~ ", CENTER, 144); myGLCD.setFont (SevenSegNumFont); myGLCD.print ("0123456789", CENTER, 190); ενώ (1) {}; }

Βήμα 6: Σχήματα, γραμμές και μοτίβο UTFT

Σχήματα, γραμμές και μοτίβο UTFT
Σχήματα, γραμμές και μοτίβο UTFT

#include "UTFT.h" // Δηλώστε ποιες γραμματοσειρές θα χρησιμοποιήσουμε extern uint8_t SmallFont ; // Ορίστε τις καρφίτσες στις σωστές για την ασπίδα ανάπτυξης // -------------- -------------------------------------------------- // Arduino Uno / 2009: // ------------------- // Standard Arduino Uno/ 2009 shield:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT shield:, 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 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 *", CENTER, 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); // Draw sin-, cos- και tan-lines myGLCD.setColor (0, 255, 255) ? myGLCD.print ("Sin", 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); για (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 ("Tan", 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+(αμαρτία (((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) {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)); } καθυστέρηση (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)); } καθυστέρηση (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); } καθυστέρηση (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); } καθυστέρηση (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 ("Αυτό είναι!", ΚΕΝΤΡΟ, 93); myGLCD.print ("Επανεκκίνηση σε α", ΚΕΝΤΡΟ, 119); myGLCD.print ("λίγα δευτερόλεπτα …", ΚΕΝΤΡΟ, 132); myGLCD.setColor (0, 255, 0); myGLCD.setBackColor (0, 0, 255); myGLCD.print ("Runtime: (msecs)", CENTER, 210); myGLCD.printNumI (millis (), CENTER, 225); καθυστέρηση (10000)? }

Βήμα 7: Bitmap UTFT

Bitmap UTFT
Bitmap UTFT

#περιλαμβάνω

#include // Δηλώστε ποιες γραμματοσειρές θα χρησιμοποιήσουμε εξωτερικά uint8_t SmallFont ; // Ορίστε τις ακίδες στις σωστές για την ασπίδα ανάπτυξης // ------------------ ------------------------------------------ // Arduino Uno / 2009: / / ------------------- // Standard ασπίδα Arduino Uno/ 2009:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT shield:, 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) · εξωτερικές ανυπόγραφες πληροφορίες int [0x400]. εξωτερικό ανυπόγραφο εικονίδιο int [0x400]. εξωτερικό ανυπόγραφο int tux [0x400]; void setup () {myGLCD. InitLCD (); myGLCD.setFont (SmallFont); } void loop () {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, εικονίδιο, s); x+= (s*32); } καθυστέρηση (5000); }

Βήμα 8: Διασύνδεση κουμπιού

Διασύνδεση κουμπιού
Διασύνδεση κουμπιού

#include #include // Αρχικοποίηση οθόνης // ------------------ // Ορίστε τις καρφίτσες στις σωστές για τον πίνακα ανάπτυξης // ------- ------------------------------------------------------ - // 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 για 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); // Δηλώστε ποιες γραμματοσειρές θα χρησιμοποιούμε εξωτερικά 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: 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); // ==== Καθορισμός γραμματοσειρών εξωτερικά uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; εξωτερικό ανυπόγραφο 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 = 0; int lastSpeedUpScore = 0; int υψηλότερη βαθμολογία; boolean screenPressed = false; boolean gameStarted = false; void setup () {// Έναρξη εμφάνισης myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPrecision (PREC_MEDIUM); υψηλότερη βαθμολογία = EEPROM.read (0); // Διαβάστε την υψηλότερη βαθμολογία από το EEPROM initateGame (); // Ξεκινήστε το παιχνίδι} void loop () {xP = xP-moveRate; // xP - x συντεταγμένη των πυλώνων. εύρος: 319 - (-51) drawPilars (xP, yP); // Σχεδιάζει τους πυλώνες // yB - y συντεταγμένη του πουλιού που εξαρτάται από την τιμή της μεταβλητής πτώσηςRate yB+= fallRateInt; fallRate = fallRate+0,4; // Κάθε εισροή ο ρυθμός πτώσης αυξάνεται έτσι ώστε να μπορούμε να επιδράσουμε στην επιτάχυνση/ βαρύτητα fallRateInt = int (fallRate). // Ελέγχει για σύγκρουση εάν (yB> = 180 || yB <= 0) {// πάνω και κάτω gameOver (); } if ((xP = 5) && (yB <= yP-2)) {// παιχνίδι άνω πυλώναOver (); } 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 υψηλότερο σκορ) {υψηλότερο σκορ = σκορ? EEPROM.write (0, υψηλότερη βαθμολογία); } // Επαναφέρει τις μεταβλητές για να ξεκινήσει τις τιμές θέσης xP = 319; yB = 50; fallRate = 0; βαθμολογία = 0; lastSpeedUpScore = 0; κίνησηRate = 3; gameStarted = false? // Επανεκκίνηση παιχνιδιού initateGame (); }

Βήμα 10: Εργασία του Έργου

Μπορείτε να βρείτε τον πηγαίο κώδικα στο αποθετήριο Github μου.

Σύνδεσμος:

Δώστε μπράβο αν πραγματικά σας βοήθησε και ακολουθήστε το κανάλι μου για ενδιαφέροντα έργα:)

Μοιραστείτε αυτό το βίντεο αν σας αρέσει.

Χαίρομαι που εγγραφείτε:

Ευχαριστώ για την ανάγνωση!

Συνιστάται: