
Μία από τις πιο ισχυρές εστίες που διατίθενται Arduino Είναι η έκδοση DUEΧάρη στον μικροελεγκτή του, τη μνήμη του και τον αριθμό των ακίδων που διαθέτει, είναι ένα από τα πιο περιζήτητα όταν χρειάζεται να εκτελέσετε σύνθετα έργα.
Για αυτόν τον λόγο Έχουμε ετοιμάσει αυτό το άρθρο για να μάθετε σε τι χρησιμοποιείται αυτός ο τύπος πλάκας και ποια είναι τα κύρια χαρακτηριστικά του. που προσφέρει στους χρήστες.
Επιπλέον, θα εξηγήσουμε τι πρέπει να έχετε κατά νου Όταν εργάζομαι με ένα Arduino DUE, ποιες είναι οι διαφορές στο περιβάλλον ανάπτυξης για τον προγραμματισμό της πλακέτας;. Ολοκλήρωση παραγγελίας.
Τι είναι το Arduino DUE και σε τι χρησιμοποιούνται αυτές οι πλακέτες ανάπτυξης ανοιχτού κώδικα;
Arduino ΛΟΓΩ Είναι μια πλακέτα που διαθέτει έναν μικροελεγκτή Atmel SAM3X8E, προσφέροντας επιπλέον απόδοση για έργα μεγάλης κλίμακαςΑυτό το κριτήριο υποστηρίζεται επίσης από ένα μεγαλύτερος αριθμός ψηφιακών ακίδων είσοδος και έξοδος και αναλογικές ακίδες. Λειτουργεί με τάση 3.3V και έχει 4 θύρες για υλικό, εκ των οποίων 2 είναι για καλώδια MicroUSB Αυτά χρησιμοποιούνται για τη σύνδεση της πλακέτας στον υπολογιστή. Μπορούν να χρησιμοποιηθούν λειτουργικά συστήματα Arduino Due. Windows, Linux y MacOS.
Χαρακτηριστικά του Arduino DUE: Ποια είναι τα πιο ενδιαφέροντα χαρακτηριστικά του;
Τα κύρια χαρακτηριστικά του Arduino DUE είναι:
- Οι διαστάσεις του είναι 101,52 × 53,3 χιλιοστά και έχει βάρος 36 γραμμάρια.
- Διαθέτει MCU Atmel SAM3X8E ARM Cortex-M3 Πυρήνας 32-bit που λειτουργεί στα 84 MHz.
- Έχει παθητική μνήμη 96 KB SRAMΩστόσο, δεν διαθέτει μνήμη EEPROM όπως οι άλλες πλακέτες Arduino. Η μνήμη flash του είναι 512 KB.
- Η τάση στην οποία λειτουργεί είναι 3Vμε μέγιστο όριο εισόδου 16V.
- Λογαριασμός με 54 ψηφιακές καρφίτσες, όπου τα 12 είναι για διαμόρφωση παλμών.
- Οι καρφίτσες του Οι αναλογικές είσοδοι είναι 12 και αυτοί που φεύγουν, 2.
- έχετε 2 θύρες MicroUSB, μια JTAG, un ΣΠΙ, μέσα ΔΥΟ κουμπιά επαναφοράς και διαγραφής.
Τι πρέπει να έχετε κατά νου όταν εργάζεστε με μια πλακέτα Arduino DUE;
Το πρώτο πράγμα που πρέπει να έχετε κατά νου είναι ότι αυτή η πλακέτα λειτουργεί με ένταση ρεύματος 3.3V.Αυτό σημαίνει ότι λειτουργεί σε σημαντικά υψηλότερη τάση από τις περισσότερες πλακέτες Arduino 5V. Επομένως, πρέπει να είστε προσεκτικοί ώστε να μην προκαλέσετε ζημιά στην MCU, τη μνήμη και άλλα εξαρτήματα λόγω υπέρτασης.
Ένας άλλος παράγοντας που πρέπει να ληφθεί υπόψη, αν και ελαφρώς λιγότερο σημαντικός, είναι το μέγεθος και το βάρος του. Τέλος, Πρέπει να λάβετε υπόψη όλες τις ψηφιακές και αναλογικές ακίδες που έχετε διαθέσιμες. (με αυτό εννοούμε την ανάγκη που έχει το έργο σας για καταλαμβάνουν όλα αυτά, καθώς αν απαιτούνται λιγότερα, θα μπορούσατε να επιλέξετε μια άλλη φθηνότερη πλακέτα 5V).
Είναι το περιβάλλον ανάπτυξης (Arduino IDE) διαφορετικό για τις πλακέτες Arduino DUE;
El Το περιβάλλον Arduino DUE δεν διαφέρει από αυτό των άλλων πλακετών. Απλώς πρέπει να έχετε κατά νου ότι το IDE έχει διαμορφωθεί για το Πλακέτα Arduino UNOΕπομένως, θα χρειαστεί να αλλάξετε τον τύπο του Arduino στο πρόγραμμα.
Για να το κάνετε αυτό, θα πρέπει να ακολουθήσετε τα εξής βήματα:
- Μόλις το ανοίξετε IDE παω σε εργαλεία.
- Στη συνέχεια, επιλέξτε Σημάδια.
- Ορίστε την επιλογή ΛΟΓΩ.
Χρήσεις της πλακέτας: Σε ποια έργα μπορεί να χρησιμοποιηθεί το Arduino DUE;
Μπορείτε να χρησιμοποιήσετε το Πλακέτα Arduino DUE σε ένα μεγάλο αριθμό έργων.
Για παράδειγμα, μπορείτε να δημιουργήσετε:
- Ένα πεντάλ να παραμορφώσει τον ήχο μιας ηλεκτρικής κιθάρας.
https://create.arduino.cc/projecthub/electrosmash-team/arduino-due-programmable-guitar-pedal-edfe8b - Συσκευή να εκτελέσει ηλεκτροκαρδιογραφήματα.
https://create.arduino.cc/projecthub/javiergonzalezb/heart-rate-estimation-using-arduino-due-a2271a - Γεννήτρια των κυματομορφών.
https://create.arduino.cc/projecthub/search?q=due&type=Project
Επιπλέον, Αν θέλετε να μάθετε περισσότερα για ένα έργο λεπτομερώς, μπορείτε να δημιουργήσετε ένα παιχνίδι με μηδενικά και σταυρούς.Για αυτήν τη συσκευή θα χρειαστείτε μια πλακέτα DUE, έναν ελεγκτή ή μια οθόνη αφής LED TFT LCD 2,8 ιντσών και τα απαραίτητα καλώδια για την εγκατάσταση.
Όσον αφορά τη συναρμολόγηση, θα πρέπει να την κάνετε σύμφωνα με το ακόλουθο διάγραμμα:
Όταν τελειώσετε, θα χρειαστεί να ανοίξετε το Arduino IDE και να γράψετε αυτούς τους κωδικούς:
#συμπεριλαμβάνω #συμπεριλαμβάνω #συμπεριλαμβάνω #συμπεριλαμβάνω #συμπεριλαμβάνω #define TFT_RST 8 #define TFT_DC 9 #define TFT_CS 10 #define ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΣ_ΑΦΗΣ ΤΟΠΙΟ Adafruit_ILI9341 tft = Adafruit_ILI9341 ( TFT_CS , TFT_DC , TFT_RST ); Adafruit_GFX_Buttons [ 9 ]; URTouch myTouch ( 30 , 28 , 26 , 24 , 22 ); unsigned short int moves = 1 ; unsigned short int winner = 0 ; unsigned short int x, y ; unsigned short int cursor ; unsigned short int firstMoves [] = { 0 , 2 , 6 , 8 }; ανυπόγραφο short board[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; παίκτης bool; bool b = 1; char start[10] = {"Έναρξη παιχνιδιού"}; char you[4] = {"ΕΣΕΙΣ"}; char cpu[4] = {"CPU"}; char again[7] = {"Πάλι;"} };
const unsigned char círculo [] PROGMEM = {
0 b0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7 , 0xF8 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0,0x0,0x7f,0xff,0x80,0x0,0x0,0x0,0x0,0x0,0x3,0xff,0xff,0xf0,0x0,0x0,0x0,
0x0 , 0x0 , 0xf , 0xff , 0xff , 0xFC , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1f , 0xff , 0xff , 0xfe , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7f , 0xF0 , 0x3 , 0xff , 0x80 , 0x0 , 0x0 , 0x0 ,0x0,0xff,0x80,0x0,0x7f,0xc0,0x0,0x0,0x0,0x1,0xfe,0x0,0x0,0x1f,0xe0,0x0,0x0,
0x0 , 0x3 , 0xF8 , 0x0 , 0x0 , 0x7 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x7 , 0xF0 , 0x0 , 0x0 , 0x3 , 0xF8 , 0x0 , 0x0 , 0x0 , 0xf , 0xE0 , 0x0 , 0x0 , 0x1 , 0xFC , 0x0 , 0x0 , 0x0 ,0xf,0xc0,0x0,0x0,0x0,0xfc,0x0,0x0,0x0,0x1f,0x80,0x0,0x0,0x0,0x7e,0x0,0x0,
0x0 , 0x3f , 0x0 , 0x0 , 0x0 , 0x0 , 0x3f , 0x0 , 0x0 , 0x0 , 0x3E , 0x0 , 0x0 , 0x0 , 0x0 , 0x1f , 0x0 , 0x0 , 0x0 , 0x7E , 0x0 , 0x0 , 0x0 , 0x0 , 0x1f , 0x80 , 0x0 , 0x0 ,0x7c,0x0,0x0,0x0,0x0,0xf,0x80,0x0,0x0,0x7c,0x0,0x0,0x0,0x0,0xf,0x80,0x0,
0x0 , 0xF8 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7 , 0xC0 , 0x0 , 0x0 , 0xF8 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7 , 0xC0 , 0x0 , 0x0 , 0xF8 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7 , 0xc0 , 0x0 , 0x0 ,0xf0,0x0,0x0,0x0,0x0,0x3,0xc0,0x0,0x1,0xf0,0x0,0x0,0x0,0x0,0x3,0xe0,0x0,
0x1 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xE0 , 0x0 , 0x1 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xE0 , 0x0 , 0x1 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xe0 , 0x0 , 0x1 ,0xf0,0x0,0x0,0x0,0x0,0x3,0xe0,0x0,0x1,0xf0,0x0,0x0,0x0,0x0,0x3,0xe0,0x0,
0x1 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xE0 , 0x0 , 0x1 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xE0 , 0x0 , 0x0 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xc0 , 0x0 , 0x0 ,0xf8,0x0,0x0,0x0,0x0,0x7,0xc0,0x0,0x0,0xf8,0x0,0x0,0x0,0x0,0x7,0xc0,0x0,
0x0 , 0xF8 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7 , 0xC0 , 0x0 , 0x0 , 0x7c , 0x0 , 0x0 , 0x0 , 0x0 , 0xf , 0x80 , 0x0 , 0x0 , 0x7c , 0x0 , 0x0 , 0x0 , 0x0 , 0xf , 0x80 , 0x0 , 0x0 ,0x7e,0x0,0x0,0x0,0x0,0x1f,0x80,0x0,0x0,0x3e,0x0,0x0,0x0,0x0,0x1f,0x0,0x0,
0x0 , 0x3f , 0x0 , 0x0 , 0x0 , 0x0 , 0x3f , 0x0 , 0x0 , 0x0 , 0x1f , 0x80 , 0x0 , 0x0 , 0x0 , 0x7E , 0x0 , 0x0 , 0x0 , 0xf , 0xC0 , 0x0 , 0x0 , 0x0 , 0xFC , 0x0 , 0x0 , 0x0 ,0xf,0xe0,0x0,0x0,0x1,0xfc,0x0,0x0,0x0,0x7,0xf0,0x0,0x0,0x3,0xf8,0x0,0x0,
0x0 , 0x3 , 0xF8 , 0x0 , 0x0 , 0x7 , 0xF0 , 0x0 , 0x0 , 0x0 , 0x1 , 0xfe , 0x0 , 0x0 , 0x1f , 0xE0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xff , 0x80 , 0x0 , 0x7f , 0xC0 , 0x0 , 0x0 , 0x0 ,0x0,0x7f,0xf0,0x3,0xff,0x80,0x0,0x0,0x0,0x0,0x1f,0xff,0xff,0xfe,0x0,0x0,0x0,
0x0 , 0x0 , 0xf , 0xff , 0xff , 0xFC , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xff , 0xff , 0xF0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7f , 0xff , 0x80 , 0x0 , 0x0 , 0x0 , 0x0 ,0x0,0x0,0x7,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0
};
const unsigned char x_bitmap [] PROGMEM = {
0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0xff,0xff,0xc0,0x1,0xff,0xff,0xe0,0x0,
0x1 , 0xff , 0xff , 0xE0 , 0x1 , 0xff , 0xff , 0xC0 , 0x0 , 0x1 , 0xff , 0xff , 0xF0 , 0x3 , 0xff , 0xff , 0xC0 , 0x0 , 0x0 , 0xff , 0xff , 0xF0 , 0x7 , 0xff , 0xff , 0x80 , 0x0 , 0x0 ,0xff,0xff,0xf8,0x7,0xff,0xff,0x80,0x0,0x0,0x7f,0xff,0xf8,0xf,0xff,0xff,0x0,0x0,
0x0 , 0x3f , 0xff , 0xfc , 0xf , 0xff , 0xfe , 0x0 , 0x0 , 0x0 , 0x3f , 0xff , 0xfe , 0x1f , 0xff , 0xfe , 0x0 , 0x0 , 0x0 , 0x1f , 0xff , 0xfc , 0x1f , 0xff , 0xfc , 0x1f 0x0 , 0x0 , 0x0 ,0x1f,0xff,0xff,0x3f,0xff,0xfc,0x0,0x0,0x0,0xf,0xff,0xff,0x7f,0xff,0xf8,0x0,0x0,
0x0 , 0xf , 0xff , 0xff , 0xff , 0xff , 0xF8 , 0x0 , 0x0 , 0x0 , 0x7 , 0xff , 0xff , 0xff , 0xff , 0xF0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xff , 0xff , 0xff , 0xff , 0xE0 , 0x0 , 0x0 , 0x0 ,0x3,0xff,0xff,0xff,0xff,0xe0,0x0,0x0,0x0,0x1,0xff,0xff,0xff,0xff,0xc0,0x0,0x0,
0x0 , 0x1 , 0xff , 0xff , 0xff , 0xff , 0xC0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xff , 0xff , 0xff , 0xff , 0x80 , 0x0 , 0x0 , 0x0 , 0x0 , 0xff , 0xff , 0xff , 0xff , 0x80 , 0x0 , 0x0 , 0x0 ,0x0,0x7f,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x3f,0xff,0xff,0xfe,0x0,0x0,0x0,
0x0 , 0x0 , 0x3f , 0xff , 0xff , 0xfe , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1f , 0xff , 0xff , 0xFC , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x1f , 0xff , 0xff , 0xFC , 0x0 , 0x0 , 0x0 , 0x0 ,0x0,0x1f,0xff,0xff,0xfc,0x0,0x0,0x0,0x0,0x0,0x3f,0xff,0xff,0xfe,0x0,0x0,0x0,
0x0 , 0x0 , 0x3f , 0xff , 0xff , 0xfe , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x7f , 0xff , 0xff , 0xff , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0xff , 0xff , 0xff , 0xff , 0x80 , 0x0 , 0x0 , 0x0 ,0x0,0xff,0xff,0xff,0xff,0x80,0x0,0x0,0x0,0x1,0xff,0xff,0xff,0xff,0xc0,0x0,0x0,
0x0 , 0x1 , 0xff , 0xff , 0xff , 0xff , 0xC0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xff , 0xff , 0xff , 0xff , 0xE0 , 0x0 , 0x0 , 0x0 , 0x3 , 0xff , 0xff , 0xff , 0xff , 0xE0 , 0x0 , 0x0 , 0x0 ,0x7,0xff,0xff,0xff,0xff,0xf0,0x0,0x0,0x0,0xf,0xff,0xff,0xff,0xff,0xf8,0x0,0x0,
0x0 , 0xf , 0xff , 0xff , 0xff , 0xff , 0xf8 , 0x0 , 0x0 , 0x0 , 0x1f , 0xff , 0xff , 0x7f , 0xff , 0xfc , 0x0 , 0x0 , 0x0 , 0x1f , 0xff , 0xfc , 0x3f , 0xff , 0xfc , 0x3 0x0 , 0x0 , 0x0 ,0x3f,0xff,0xfc,0x3f,0xff,0xfe,0x0,0x0,0x0,0x3f,0xff,0xfc,0x1f,0xff,0xfe,0x0,0x0,
0x0 , 0x7f , 0xff , 0xF8 , 0x1f , 0xff , 0xff , 0x0 , 0x0 , 0x0 , 0xff , 0xff , 0xF8 , 0xf , 0xff , 0xff , 0x80 , 0x0 , 0x0 , 0xff , 0xff , 0xF0 , 0x7 , 0xff , 0xff , 0x80 , 0x0 , 0x1 ,0xff,0xff,0xe0,0x7,0xff,0xff,0xc0,0x0,0x1,0xff,0xff,0xe0,0x3,0xff,0xff,0xc0,0x0,
0x3 , 0xff , 0xff , 0xC0 , 0x3 , 0xff , 0xff , 0xE0 , 0x0 , 0x3 , 0xff , 0xff , 0xC0 , 0x1 , 0xff , 0xff , 0xE0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 ,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0, 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0
};
configuración vacía () {
myTouch . InitTouch(); η αφή μου. setPrecision ( PREC_HI ); tft. έναρξη(); tft. setRotation (3); tft. fillScreen(ILI9341_BLACK); // Σχεδίαση λευκού πλαισίου TFT. drawRect (0, 0, 320, 240, ILI9341_WHITE); // Εκτύπωση κειμένου tft "Arduino". setCursor (80, 30); tft. setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print ( "Arduino" ); // Εκτύπωση κειμένου "Tic Tac Toe" tft . setCursor (30, 100); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Τριλίκι"); // Δημιουργία κόκκινου κουμπιού // δημιουργία κουμπιών [0]. initButton (& tft, 160, 200, 200, 40, ILI9341_WHITE, ILI9341_RED, ILI9341_WHITE, έναρξη, 2); κουμπιά [0]. drawButton(); do { περιμένετε ένα πάτημα (& x, & y); if (κουμπιά [0). περιέχει (x, y)) b = 0; } ενώ (b > 0); } void loop () { for (unsigned short int i = 0; i < 9; i++) { board [i] = 0; } tft. fillScreen(ILI9341_BLACK); // Σχεδίαση λευκού πλαισίου TFT. drawRect (0, 0, 320, 240, ILI9341_WHITE); // Εκτύπωση κειμένου "Τρίλιζα" tft. setCursor (30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Τρίλιζα"); // Εκτυπώνει "YouTube!" Κείμενο TFT. setCursor (30, 100); tft. setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print("Ποιος ξεκινά"); // Δημιουργία κόκκινου κουμπιού // δημιουργία κουμπιών [0]. initButton (& tft, 100, 200, 80, 40, ILI9341_WHITE, ILI9341_RED, ILI9341_WHITE, εσείς, 2); κουμπιά [0]. drawButton(); // δημιουργία κουμπιών // x, y, w, h, περίγραμμα, γέμισμα, κουμπιά κειμένου[1]. initButton (& tft, 200, 200, 80, 40, ILI9341_WHITE, ILI9341_RED, ILI9341_WHITE, cpu, 2); κουμπιά [1]. drawButton(); b = 1; do { περιμένετε για ένα πάτημα(&x, &y); if(buttons[0]. περιέχει (x, y)) { b = 0; παίκτης = 1; tft. fillScreen(ILI9341_BLACK); // Σχεδίαση λευκού πλαισίου TFT. drawRect (0, 0, 320, 240, ILI9341_WHITE); tft. setCursor (30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("Εντάξει, ξεκινάτε"); delay(2000); } if(buttons[1]. περιέχει (x, y)) { b = 0; παίκτης = 0; tft. fillScreen(ILI9341_BLACK); // Σχεδίαση λευκού πλαισίου TFT. drawRect (0, 0, 320, 240, ILI9341_WHITE); tft. setCursor (30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("OK, η CPU ξεκινά"); delay(2000); } } while (b > 0); b = 1; moves = 1; winner = 0; cursor = 10; tft. fillScreen(ILI9341_BLACK); // Σχεδίαση πλαισίου TFT. drawRect (0, 0, 320, 240, ILI9341_WHITE); // Σχεδίαση κάθετης γραμμής tft. fillRect (80, 15, 5, 205, ILI9341_WHITE); tft. fillRect ( 150 , 15 , 5 , 205 , ILI9341_WHITE ); // Σχεδιάστε μια οριζόντια γραμμή fillRect(15,80,205,5,ILI9341_WHITE); fillRect(15,150,205,5,ILI9341_WHITE); drawRect(230,10,80,220,ILI9341_WHITE); { do { if(moves%2==1 && player==false || moves%2==0 && player==true) { cursor+=10; setCursor(240,cursor); setTextSize(1); println("Σχεδιάζω"); arduinoMove(); checkWinner(); }else { cursor+=10; setCursor(240,cursor); setTextSize(1); println("Η κίνησή σας"); playerMove(); checkWinner(); } delay(1000); moves++; }while (winner==0 && moves<10); waitonetouch(&x,&y); fillScreen(ILI9341_BLACK); //Σχεδίαση πλαισίου drawRect(0,0,320,240,ILI9341_WHITE); //Εκτύπωση κειμένου "Τέλος παιχνιδιού" setCursor(50,30); setTextColor(ILI9341_WHITE); setTextSize(4); print("ΤΕΛΟΣ ΠΑΙΧΝΙΔΙΟΥ"); if(winner == 0) { //Εκτύπωση "ΤΕΛΟΣ ΠΑΙΧΝΙΔΙΟΥ!" text setCursor(110,100); setTextColor(ILI9341_YELLOW); setTextSize(4); print("ΚΛΗΡΩΣΗ"); } if(winner == 1) { //Εκτύπωση "ΑΝΘΡΩΠΟΣ ΝΙΚΗΣΕ!" text setCursor(40,100); setTextColor(ILI9341_BLUE); setTextSize(4); print("ΑΝΘΡΩΠΙΝΟ ΚΕΡΔΟΣ"); } if(winner == 2) { //Εκτύπωση "Η CPU ΚΕΡΔΙΖΕΙ!" text
setCursor(60,100);
setTextColor(ILI9341_RED);
setTextSize(4);
print("CPU WINS");
}
buttons[0].initButton(&tft, 160,200,200,40,ILI9341_WHITE, ILI9341_RED, ILI9341_WHITE,
again, 2);
buttons[0].drawButton();
do{
waitonetouch(&x,&y);
if (buttons[0].contains(x,y))
b=0;
}while(b>0);
}
}
void playerMove()
{
waitonetouch(&x,&y);
if((x>15 && x<85) && (y>15 && y<85))
{
if(board[0]==0)
{
board[0]=1;
drawX(15,15);
}
else error();
}
else if((x>85 && x<155)&& (y>15 && y<85)) //1
{
if(board[1]==0)
{
board[1]=1;
drawX(85,15);
}
else error();
}
if((x>155 && x<225)&& (y>15 && y<85)) //2
{
if(board[2]==0)
{
board[2]=1;
drawX(155,15);
}
else error();
}
if((x>15 && x<85)&& (y>85 && y<155)) //3
{
if(board[3]==0)
{
board[3]=1;
drawX(15,85);
}
else error();
}
si (( x > 85 && x < 155 ) && ( y > 85 && y < 155 )) // 4
{
si ( tablero [ 4 ] == 0 )
{
tablero [ 4 ] = 1 ;
dibujarX ( 85 , 85 );
}
else error ();
}
if (( x > 155 && x < 225 ) && ( y > 85 && y < 155 )) // 5
{
if ( tablero [ 5 ] == 0 )
{
tablero [ 5 ] = 1 ;
dibujarX ( 155 , 85 );
}
else error ();
}
si (( x > 15 && x < 85 ) && ( y > 155 && y < 225 )) // 6
{
si ( tablero [ 6 ] == 0 )
{
tablero [ 6 ] = 1 ;
dibujarX ( 15 , 155 );
}
else error ();
}
if((x>85 && x<155)&& (y>155 && y<225)) //7
{
if(board[7]==0)
{
board[7]=1;
drawX(85,155);
}
else error();
}
if((x>155 && x<225)&& (y>155 && y<225)) //8
{
if(board[8]==0)
{
board[8]=1;
drawX(155,155);
}
else error();
}
}
void error(){
cursor+=10;
setCursor(240,cursor);
setTextSize(1);
println("Error");
delay(1000);
cursor+=10;
setCursor(240,cursor);
println("Try again.");
playerMove();
}
{
if(board[1]==x && board[2]==x && board[0]==y){
if(y==0){
return 0;
}
else return 1;
}
if(board[3]==x && board[6]==x && board[0]==y){
if(y==0){
return 0;
}
else return 6;
}
if(board[0]==y && board[4]==x && board[8]==x){
if(y==0){
return 0;
}
else return 8;
}
if(board[0]==x && board[1]==y && board[2]==x){
if(y==0){
return 1;
}
else return 0;
}
if(board[4]==x && board[7]==x && board[1]==y){
if(y==0){
return 1;
}
de lo contrario, devuelve 7 ;
}
if ( tablero [ 0 ] == x && tablero [ 1 ] == x && tablero [ 2 ] == y ) {
si ( y == 0 ) {
volver 2 ;
}
de lo contrario, devuelve 0 ;
}
if ( tablero [ 5 ] == x && tablero [ 8 ] == x && tablero [ 2 ] == y ) {
si ( y == 0 ) {
volver 2 ;
}
si no, devuelve 8 ;
}
if ( tablero [ 4 ] == x && tablero [ 6 ] == x && tablero [ 2 ] == y ) {
si ( y == 0 ) {
volver 2 ;
}
de lo contrario, devuelve 6 ;
}
if ( tablero [ 4 ] == x && tablero [ 5 ] == x && tablero [ 3 ] == y ) {
si ( y == 0 ) {
volver 3 ;
}
si no, devuelve 5 ;
}
if(board[0]==x && board[6]==x && board[3]==y){
if(y==0){
return 3;
}
else return 6;
}
if(board[3]==x && board[4]==y && board[5]==x){
if(y==0){
return 4;
}
else return 3;
}
if(board[1]==x && board[7]==x && board[4]==y){
if(y==0){
return 4;
}
else return 1;
}
if(board[0]==x && board[8]==x && board[4]==y){
if(y==0){
return 4;
}
else return 0;
}
if(board[2]==x && board[6]==x && board[4]==y){
if(y==0){
return 4;
}
else return 2;
}
if(board[3]==x && board[4]==x && board[5]==y){
if(y==0){
return 5;
}
else return 3;
}
if(board[2]==x && board[8]==x && board[5]==y){
if(y==0){
return 5;
}
else return 2;
}
if(board[7]==x && board[8]==x && board[6]==y){
if(y==0){
return 6;
}
else return 8;
}
if(board[0]==x && board[3]==x && board[6]==y){
if(y==0){
return 6;
}
else return 0;
}
if(board[4]==x && board[2]==x && board[6]==y){
if(y==0){
return 6;
}
else return 2;
}
if(board[1]==x && board[4]==x && board[7]==y){
if(y==0){
return 7;
}
else return 1;
}
if(board[6]==x && board[8]==x && board[7]==y){
if(y==0){
return 7;
}
else return 6;
}
if(board[6]==x && board[7]==x && board[8]==y){
if(y==0){
return 8;
}
else return 6;
}
if(board[5]==x && board[2]==x && board[8]==y){
if(y==0){
return 8;
}
else return 2;
}
if(board[4]==x && board[0]==x && board[8]==y){
if(y==0){
return 8;
}
else return 0;
}
else
return 100;
}
void arduinoMove()
{
if(moves<2)
{
do{
unsigned short int randomMove =random(4);
unsigned short int c=firstMoves[randomMove];
if(board[c]==0){
board[c]=2;
drawCpuMove(firstMoves[randomMove]);
return;
}
}while(moves<2);
}
if(moves<3)
{
if(board[4]==0)
{
board[4]=2;
drawCpuMove(4);
return;
}
}
unsigned short int twoPlayer = checkOpponent(2,0);
if(twoPlayer < 9)
{
board[twoPlayer]=2;
drawCpuMove(twoPlayer);
return;
}
unsigned short int nextMove = checkOpponent(1,0);
if(nextMove < 9)
{
board[nextMove]=2;
drawCpuMove(nextMove);
return;
}
unsigned short int next = checkOpponent(0,2);
if(next < 9)
{
board[next]=2;
drawCpuMove(next);
return;
}
do
{
unsigned short int randomMove =random(9);
if (board[randomMove]==0)
{
board[randomMove]=2;
drawCpuMove(randomMove);
return;
}
}while(nextMove == 100);
}
{
drawBitmap(x,y,circle,65,65,ILI9341_RED);
}
{
drawBitmap(x,y,x_bitmap,65,65,ILI9341_BLUE);
}
{
switch(move)
{
case 0: drawCircle(15,15); break;
case 1: drawCircle(85,15); break;
case 2: drawCircle(155,15); break;
case 3: drawCircle(15,85); break;
case 4: drawCircle(85,85); break;
case 5: drawCircle(155,85); break;
case 6: drawCircle(15,155); break;
case 7: drawCircle(85,155);break;
case 8: drawCircle(155,155);break;
}
}
void checkWinner()
{
// noughts win?
αν (πίνακας[0]>0 && πινάκας[1]==πίνακας[0] && πινάκας[2]==πίνακας[0]) { νικητής=πίνακας[0]; fillRect(15, 45, 205, 5, ILI9341_WHITE); } αν (πίνακας[3]>0 && πινάκας[4]==πίνακας[3] && πινάκας[5]==πίνακας[3]) { νικητής=πίνακας[3]; fillRect(15, 115, 205, 5, ILI9341_WHITE); } αν (πίνακας[6] > 0 && πινάκας[7] == πινάκας[6] && πινάκας[8] == πινάκας[6]) { νικητής = πινάκας[6]; tft. fillRect(15, 185, 205, 5, ILI9341_WHITE); } αν (πίνακας[0] > 0 && πίνακας[3] == πίνακας[0] && πίνακας[6] == πίνακας[0]) { νικητής = πίνακας[0]; tft. fillRect(45, 15, 5, 205, ILI9341_WHITE); } αν (πίνακας[1] > 0 && πίνακας[4] == πίνακας[1] && πίνακας[7] == πίνακας[1]) { νικητής = πίνακας[1]; tft. fillRect (115, 15, 5, 205, ILI9341_WHITE); } αν (board[2]>0 && board[5]==board[2] && board[8]==board[2]) { νικητής=board[2]; fillRect(185, 15, 5, 205, ILI9341_WHITE); } αν (board[0]>0 && board[4]==board[0] && board[8]==board[0]) { νικητής=board[0]; για (μη πρόσημο short int xx=0;xx<6;xx++){ drawLine(20+xx, 20, 210+xx, 210, ILI9341_WHITE); } } αν (board[2]>0 && board[4]==board[2] && board[6]==board[2]) { νικητής=board[2]; για(unsigned short int xx=0;xx<6;xx++){ drawLine(210+xx, 20, 20+xx, 210, ILI9341_WHITE); } } } void waitonetouch(unsigned short int *x,unsigned short int *y){ do { delay(10); αν ( myTouch . dataAvailable() == true) { myTouch.}, { myTouch ... ανάγνωση(); x = η αφή μου. getX(); y = myTouch. getY(); return; } } ενώ (myTouch.) dataAvailable () == false ); }
















