Πίνακας περιεχομένων:
- Βήμα 1: Απαιτήσεις υλικού και λογισμικού
- Βήμα 2: Τροποποίηση του UTFT Lib
- Βήμα 3: Αρχικοποίηση της ασπίδας TFT
- Βήμα 4: Βασικό Hello World
- Βήμα 5: Γραμματοσειρές UTFT
- Βήμα 6: Σχήματα, γραμμές και μοτίβο UTFT
- Βήμα 7: Bitmap UTFT
- Βήμα 8: Διασύνδεση κουμπιού
- Βήμα 9: Flappy Bird
- Βήμα 10: Εργασία του Έργου
Βίντεο: Arduino TFT Interfacing Basics: 10 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Οι οθόνες αφής 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
Αυτή η βιβλιοθήκη είναι η συνέχεια των βιβλιοθηκών μου 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
Αφού επεξεργαστείτε τη βιβλιοθήκη, προσθέστε την στον κατάλογο 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
#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 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
#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
#περιλαμβάνω
#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
#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 μου.
Σύνδεσμος:
Δώστε μπράβο αν πραγματικά σας βοήθησε και ακολουθήστε το κανάλι μου για ενδιαφέροντα έργα:)
Μοιραστείτε αυτό το βίντεο αν σας αρέσει.
Χαίρομαι που εγγραφείτε:
Ευχαριστώ για την ανάγνωση!
Συνιστάται:
Reckless Racer Arduino OLED Game, AdafruitGFX και Bitmaps Basics: 6 βήματα
Reckless Racer Arduino OLED Game, AdafruitGFX και Bitmaps Basics: Σε αυτό το σεμινάριο θα εξετάσουμε πώς να χρησιμοποιούμε bitmaps χρησιμοποιώντας τη βιβλιοθήκη Adafruit_GFX.c ως είδος sprites σε ένα παιχνίδι. Το απλούστερο παιχνίδι που θα μπορούσαμε να σκεφτούμε είναι ένα παιχνίδι αλλαγής αυτοκινήτου με πλευρική κύλιση, στο τέλος ο δοκιμαστής beta και ο βοηθός κωδικοποιητή μας
Dot Matrix 32x8 Max7219 Interfacing With Ardiuno: 5 βήματα (με εικόνες)
Dot Matrix 32x8 Max7219 Interfacing With Ardiuno: Γεια σε όλους, το Dot Matrix που βασίζεται στο Max7219 δεν είναι καινούργιο το 2020, μέχρι πρόσφατα, η διαδικασία εγκατάστασης ήταν καλά τεκμηριωμένη, κάποιος θα κατέβαζε βιβλιοθήκη υλικού από το MajicDesigns. και άλλαξε μερικές γραμμές στα αρχεία κεφαλίδας και το FC16 λειτούργησε σαν γούρι. Αυτό ήταν μέχρι
Interfacing Pushbutton - Arduino Basics: 3 βήματα
Κουμπί διασύνδεσης - Βασικά στοιχεία Arduino: Το κουμπί είναι ένα στοιχείο που συνδέει δύο σημεία σε ένα κύκλωμα όταν το πατάτε. Όταν το κουμπί είναι ανοιχτό (χωρίς πίεση) δεν υπάρχει σύνδεση μεταξύ των δύο ποδιών του κουμπιού, οπότε ο πείρος συνδέεται με το 5 βολτ (μέσω της ανίχνευσης ανύψωσης
Arduino Lux Meter - Interfacing OPT3001 With Arduino: 4 βήματα
Arduino Lux Meter - Interfacing OPT3001 With Arduino: Γενικά αντιμετωπίζουμε μια κατάσταση, όπου πρέπει να μετρήσουμε την ένταση του φωτός. Έτσι αποφάσισα να κάνω ένα μικρό έργο που θα μας βοηθήσει να λύσουμε αυτό το πρόβλημα. Αυτό το έργο απεικονίζει πώς μπορούμε να χρησιμοποιήσουμε το OPT3001 με το Arduino ως Lux μετρητή. Σε αυτό το έργο, έχω
Πώς να φτιάξετε ρολόι σε πραγματικό χρόνο χρησιμοποιώντας οθόνη Arduino και TFT - Arduino Mega RTC με οθόνη TFT 3,5 ιντσών: 4 βήματα
Πώς να φτιάξετε ρολόι σε πραγματικό χρόνο χρησιμοποιώντας οθόνη Arduino και TFT | Arduino Mega RTC με οθόνη TFT 3,5 ιντσών: Επισκεφτείτε το κανάλι μου στο Youtube. Εισαγωγή:- Σε αυτήν την ανάρτηση πρόκειται να φτιάξω "Ρολόι πραγματικού χρόνου" χρησιμοποιώντας οθόνη αφής TFT 3,5 ιντσών, Arduino Mega Ενότητα 2560 και DS3231 RTC…. Πριν ξεκινήσετε… ελέγξτε το βίντεο από το κανάλι μου στο YouTube..Σημείωση:- Εάν χρησιμοποιείτε Arduin