
Jedna od najmoćnijih ploča za kuhanje na tržištu Arduino To je DUE verzijaZahvaljujući mikrokontroleru, memoriji i broju pinova, jedan je od najtraženijih kada je potrebno izvršavati složene projekte.
Iz tog razloga Pripremili smo ovaj članak kako biste saznali za šta se koristi ova vrsta ploče i koje su njene glavne karakteristike. koje nudi korisnicima.
Osim toga, objasnit ćemo vam šta trebate imati na umu Prilikom rada sa Arduino DUE, koje su razlike u razvojnom okruženju za programiranje ploče?. Provjeri.
Šta je Arduino DUE i za šta se koriste ove razvojne ploče otvorenog koda?
Arduino DUE To je ploča koja sadrži Atmel SAM3X8E mikrokontroler, nudeći dodatne performanse za velike projekteOvaj kriterij je također podržan od strane veći broj digitalnih pinova ulaz i izlaz i analogne pinove. Radi na naponu od 3.3 V i ima 4 portova za hardver, od kojih su 2 za kablove MicroUSB Koriste se za povezivanje ploče sa računarom. Mogu se koristiti Arduino Due operativni sistemi. Windows, Linux y MacOS.
Karakteristike Arduino DUE: Koje su njegove najzanimljivije karakteristike?
Glavne karakteristike Arduino DUE su:
- Njegove dimenzije su 101,52 × 53,3 mm i ima težinu od 36 grama.
- Ima mikrokontroler (MCU) Atmel SAM3X8E ARM Cortex-M3 32-bitno jezgro koje radi na 84 MHz.
- Ima pasivno pamćenje 96 KB SRAM-aMeđutim, nema EEPROM memoriju kao ostale Arduino ploče. Njegova fleš memorija je 512 KB.
- Napon na kojem radi je 3Vs maksimalnim ograničenjem unosa 16V.
- Račun sa 54 digitalna pina, od kojih je 12 za pulsnu modulaciju.
- Igle od analognih ulaza je 12 i oni koji odlaze, 2.
- Ima 2 MicroUSB porta, a JTAG, un SPI, dos TWI dugmad za resetovanje i brisanje.
Šta treba imati na umu pri radu sa Arduino DUE pločom?
Prvo što trebate imati na umu je da ova ploča radi sa strujom jačine od 3.3 V.To znači da radi na znatno višem naponu od većine Arduino ploča od 5V. Stoga morate biti oprezni da ne oštetite MCU, memoriju i druge komponente zbog prenapona.
Još jedan faktor koji treba uzeti u obzir, iako malo manje važan, je njegova veličina i težina. Konačno, Morate uzeti u obzir sve digitalne i analogne pinove koje imate na raspolaganju. (pod ovim mislimo na potrebu koju vaš projekat ima za zauzmite ih sve, jer ako je potrebno manje, možete se odlučiti za drugu jeftiniju 5V ploču).
Da li se razvojno okruženje (Arduino IDE) razlikuje za Arduino DUE ploče?
El Arduino DUE okruženje se ne razlikuje od okruženja na drugim pločama. Samo trebate imati na umu da IDE je konfigurirao za Arduino UNO pločaStoga ćete morati promijeniti vrstu Arduino u programu.
Da biste to učinili, morat ćete slijediti ove korake:
- Nakon što ga otvorite IDE idi alat.
- Zatim odaberite Ploče.
- Odaberite opciju DOKAZNO.
Upotreba ploče: U kojim projektima se može koristiti Arduino DUE?
Možete koristiti Arduino DUE ploča na veliki broj projekata.
Na primjer, možete kreirati:
- Pedala izobličiti zvuk električne gitare.
https://create.arduino.cc/projecthub/electrosmash-team/arduino-due-programmable-guitar-pedal-edfe8b - Uređaj da se izvode elektrokardiogrami.
https://create.arduino.cc/projecthub/javiergonzalezb/heart-rate-estimation-using-arduino-due-a2271a - Generator talasnih oblika.
https://create.arduino.cc/projecthub/search?q=due&type=Project
Takođe, Ako želite detaljno saznati o projektu, možete napraviti igru Nula i Krstića.Za ovaj uređaj će vam trebati DUE ploča, kontroler ili 2,8-inčni TFT LCD LED ekran osjetljiv na dodir i potrebni kablovi za instalaciju.
Što se tiče montaže, morat ćete to uraditi prema sljedećem dijagramu:
Kada završite, morat ćete otvoriti Arduino IDE i napisati ove kodove:
#uključi #uključi #uključi #uključi #uključi #define TFT_RST 8 #define TFT_DC 9 #define TFT_CS 10 #define PEJZAŽ ORIJENTACIJE_DODIROM 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}; unsigned short board[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 9341}; igrač bool; bool b = 1; char početak[10] = {"Početak igre"}; char ti[4] = {"TI"}; char procesor[4] = {"CPU"}; char ponovo[7] = {"Opet?"} };
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 . InitDodir(); mojDodir . postaviPrecision(PREC_HI); tft. početak(); tft. postaviRotaciju(3); tft. fillScreen(ILI9341_BLACK); // Crtanje bijelog TFT okvira. drawRect(0, 0, 320, 240, ILI9341_WHITE); // Ispis tft teksta "Arduino". postaviKursor(80, 30); tft. postaviBojuTeksta (ILI9341_ZELENA); tft. postaviVeličinuTeksta(4); tft. print("Arduino"); // Ispis teksta "Krstić-kružić" tft. postaviKursor(30, 100); tft. postaviBojuTeksta (ILI9341_BIJELA); tft. postaviVeličinuTeksta(4); tft. print("Krstić-kružić"); // Kreiraj crveno dugme // kreiraj dugmad [0]. initButton(&tft, 160, 200, 200, 40, ILI9341_BIJELA, ILI9341_RED, ILI9341_BIJELA, start, 2); dugmad[0]. drawButton(); do { čekaj na dodir (& x , & y ); if ( buttons [ 0 ). sadrži (x, y)) b = 0; } while (b > 0); } void loop() { for (unsigned short int i = 0; i < 9; i++) { board[i] = 0; } tft. fillScreen(ILI9341_BLACK); // Crtanje bijelog TFT okvira. drawRect(0, 0, 320, 240, ILI9341_WHITE); // Ispis teksta "Krstić-kružić" u tft formatu. postaviKursor(30, 30); tft. postaviBojuTeksta (ILI9341_BIJELA); tft. postaviVeličinuTeksta(4); tft. print("Krikić-kružić"); // Ispisuje "YouTube!" TFT tekst. postaviKursor(30, 100); tft. postaviBojuTeksta (ILI9341_ZELENA); tft. postaviVeličinuTeksta(4); tft. print("Ko počinje"); // Kreiraj crveno dugme // kreiraj dugmad [0]. initButton(&tft, 100, 200, 80, 40, ILI9341_BIJELA, ILI9341_RED, ILI9341_BIJELA, ti, 2); dugmad[0]. drawButton(); // kreiraj dugmad // dugmad za x, y, w, h, obris, popunjavanje, tekst[1]. initButton (& tft, 200, 200, 80, 40, ILI9341_BIJELA, ILI9341_RED, ILI9341_BIJELA, cpu, 2); dugmad[1]. drawButton(); b = 1; do { čekaj na dodir(&x, &y); if(buttoni[0]. sadrži (x, y)) { b = 0; igrač = 1; tft. fillScreen(ILI9341_BLACK); // Crtanje bijelog TFT okvira. drawRect(0, 0, 320, 240, ILI9341_WHITE); tft. postaviKursor(30, 30); tft. postaviBojuTeksta (ILI9341_BIJELA); tft. postaviVeličinuTeksta(2); tft. print("U redu, počinjete"); delay(2000); } if(dugmad[1]. sadrži (x, y)) { b = 0; igrač = 0; tft. fillScreen(ILI9341_BLACK); // Crtanje bijelog TFT okvira. drawRect(0, 0, 320, 240, ILI9341_WHITE); tft. postaviKursor(30, 30); tft. postaviBojuTeksta (ILI9341_BIJELA); tft. postaviVeličinuTeksta(2); tft. print("U redu, CPU se pokreće"); delay(2000); } } while (b > 0); b = 1; potezi = 1; pobjednik = 0; kursor = 10; tft. fillScreen(ILI9341_BLACK); // Crtanje TFT okvira. drawRect(0, 0, 320, 240, ILI9341_WHITE); // Crtanje vertikalne linije tft. fillRect (80, 15, 5, 205, ILI9341_WHITE); tft. fillRect(150, 15, 5, 205, ILI9341_WHITE); // Crtanje horizontalne linije 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("Izvlačim"); arduinoMove(); checkWinner(); }else { cursor+=10; setCursor(240,cursor); setTextSize(1); println("Tvoj potez"); playerMove(); checkWinner(); } delay(1000); moves++; }while (winner==0 && moves<10); waitonetouch(&x,&y); fillScreen(ILI9341_BLACK); //Crtanje okvira drawRect(0,0,320,240,ILI9341_WHITE); //Ispis teksta "Game Over" setCursor(50,30); setTextColor(ILI9341_WHITE); setTextSize(4); print("GAME OVER"); if(winner == 0) { //Ispis "DRAW!" tekst setCursor(110,100); setTextColor(ILI9341_YELLOW); setTextSize(4); print("NEIZVJEŠENO"); } ako(pobjednik == 1) { //Ispis "ČOVJEK POBJEĐUJE!" tekst setCursor(40,100); setTextColor(ILI9341_BLUE); setTextSize(4); print("ČOVJEK POBJEĐUJE"); } if(pobjednik == 2) { //Ispis "CPU POBJEĐUJE!" 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?
ako (ploča[0]>0 && ploča[1]==ploča[0] && ploča[2]==ploča[0]) { pobjednik=ploča[0]; fillRect(15, 45, 205, 5, ILI9341_BIJELA); } ako (ploča[3]>0 && ploča[4]==ploča[3] && ploča[5]==ploča[3]) { pobjednik=ploča[3]; fillRect(15, 115, 205, 5, ILI9341_BIJELA); } ako (ploča [6] > 0 && ploča [7] == ploča [6] && ploča [8] == ploča [6]) { pobjednik = ploča [6]; tft. fillRect(15, 185, 205, 5, ILI9341_WHITE); } ako (ploča[0] > 0 && ploča[3] == ploča[0] && ploča[6] == ploča[0]) { pobjednik = ploča[0]; tft. fillRect(45, 15, 5, 205, ILI9341_WHITE); } ako (ploča[1] > 0 && ploča[4] == ploča[1] && ploča[7] == ploča[1]) { pobjednik = ploča[1]; tft. fillRect (115, 15, 5, 205, ILI9341_WHITE); } if (ploča[2]>0 && ploča[5]==ploča[2] && ploča[8]==ploča[2]) { pobjednik=ploča[2]; fillRect(185, 15, 5, 205, ILI9341_WHITE); } if (ploča[0]>0 && ploča[4]==ploča[0] && ploča[8]==ploča[0]) { pobjednik=ploča[0]; for(unsigned short int xx=0;xx<6;xx++){ drawLine(20+xx, 20, 210+xx, 210, ILI9341_WHITE); } } ako (ploča[2]>0 && ploča[4]==ploča[2] && ploča[6]==ploča[2]) { pobjednik=ploča[2]; for(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); if (myTouch.com/tools ). podaciDostupni() == tačno) { mojDodir. čitaj(); x = mojDodir. getX(); y = mojDodir. getY(); vrati; } } dok (mojTouch.) dataAvailable () == false ); }
















