Arduino DUE: cos'è, a cosa serve e quali dispositivi posso sviluppare con queste schede?

Ultimo aggiornamento: 14/09/2022
Arduino Due: cos'è, a cosa serve e quali dispositivi posso sviluppare con queste schede?

Uno dei piani cottura più potenti disponibili Arduino È la versione DUEGrazie al suo microcontrollore, alla sua memoria e al numero di pin di cui dispone, è uno dei più ricercati quando si ha bisogno di realizzare progetti complessi.

Per questa ragione Abbiamo preparato questo articolo affinché possiate scoprire a cosa serve questo tipo di piastra e quali sono le sue caratteristiche principali. che offre agli utenti.

Inoltre, spiegheremo cosa dovresti tenere a mente Quando si lavora con un Arduino DUE, quali sono le differenze nell'ambiente di sviluppo per la programmazione della scheda?. Guardare.

Cos'è Arduino DUE e a cosa servono queste schede di sviluppo open-source?

Arduino-DUE Si tratta di una scheda dotata di un microcontrollore Atmel SAM3X8E, offrendo prestazioni superiori per progetti su larga scalaQuesto criterio è supportato anche da un un maggior numero di pin digitali ingresso e uscita e pin analogici. Funziona a una tensione di 3.3 V e ha 4 porte per l'hardware, di cui 2 sono per i cavi MicroUSB Questi componenti servono per collegare la scheda al computer. È possibile utilizzare il sistema operativo Arduino Due. Windows, Linux y MacOS.

Caratteristiche di Arduino DUE: quali sono le sue caratteristiche più interessanti?

Caratteristiche di Arduino DUE: quali sono le sue caratteristiche più interessanti?

Le caratteristiche principali di Arduino DUE sono:

  • Le sue dimensioni sono 101,52 × 53,3 mm e ha un peso di 36 grammi.
  • Ha un MCU Atmel SAM3X8E BRACCIO Cortex-M3 Core a 32 bit che opera a 84 MHz.
  • Ha una memoria passiva 96 KB di SRAMTuttavia, a differenza delle altre schede Arduino, non dispone di memoria EEPROM. La sua memoria flash è di 512 KB.
  • La tensione alla quale funziona è 3Vcon un limite massimo di immissione di 16V.
  • Ha 54 pin digitali, di cui 12 sono per la modulazione a impulsi.
  • Gli spilli di gli ingressi analogici sono 12 e quelli che se ne vanno, 2.
  • Hai 2 porte MicroUSB, un JTAG, un SPI, dos TWI pulsanti di ripristino e cancellazione.

Cosa bisogna tenere presente quando si lavora con una scheda Arduino DUE?

La prima cosa da tenere a mente è che questa scheda funziona con un'intensità di corrente di 3.3 V.Ciò significa che funziona a una tensione significativamente più elevata rispetto alla maggior parte delle schede Arduino a 5V. Pertanto, è necessario fare attenzione a non danneggiare la MCU, la memoria e gli altri componenti a causa di una sovratensione.

Un altro fattore da considerare, sebbene un po' meno importante, è la sua dimensione e il suo peso. Infine, È necessario considerare tutti i pin digitali e analogici disponibili. (con questo intendiamo la necessità che il tuo progetto ha di occupali tutti, poiché se ne serve di meno potresti optare per un'altra scheda da 5V meno costosa).

L'ambiente di sviluppo (Arduino IDE) è diverso per le schede Arduino DUE?

L'ambiente di sviluppo (Arduino IDE) è diverso per le schede Arduino DUE?

El L'ambiente Arduino DUE non è diverso da quello delle altre schede. Devi solo tenere presente che il IDE ha configurato per il Scheda Arduino UNOPertanto, sarà necessario cambiare il tipo di Arduino nel programma.

Per fare ciò, dovrai seguire questi passaggi:

  • Una volta aperto IDE vai a Strumenti.
  • Quindi selezionare Piastre.
  • Scegli l'opzione DOVUTO.

Utilizzi della scheda: In quali progetti può essere utilizzato Arduino DUE?

Puoi usare il scheda Arduino DUE su una gran numero di progetti.

Ad esempio, è possibile creare:

  • Un pedale distorcere il suono di una chitarra elettrica. https://create.arduino.cc/projecthub/electrosmash-team/arduino-due-programmable-guitar-pedal-edfe8b
  • dispositivo per esibirsi elettrocardiogrammi. https://create.arduino.cc/projecthub/javiergonzalezb/heart-rate-estimation-using-arduino-due-a2271a
  • generatore di forme d'onda. https://create.arduino.cc/projecthub/search?q=due&type=Project

Inoltre, Se vuoi conoscere un progetto nel dettaglio, puoi creare un gioco di zeri e croci.Per questo dispositivo avrai bisogno di una scheda DUE, un controller o un touchscreen TFT LCD LED da 2,8 pollici e i cavi necessari per l'installazione.

Per quanto riguarda il montaggio, dovrete procedere seguendo il seguente schema:

Utilizzi della scheda: In quali progetti può essere utilizzato Arduino DUE?

Al termine, dovrai aprire l'IDE di Arduino e scrivere questi codici:

#includi #includi #includi #includi #includi #define TFT_RST 8 #define TFT_DC 9 #define TFT_CS 10 #define TOUCH_ORIENTATION LANDSCAPE 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}; giocatore bool; bool b = 1; char start[10] = {"Gamestart"}; char you[4] = {"YOU"}; char cpu[4] = {"CPU"}; char again[7] = {"Again?"} };

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(); myTouch . setPrecision ( PREC_HI ); tft. start(); tft . setRotation(3); tft. fillScreen(ILI9341_BLACK); // Disegna la cornice TFT bianca. drawRect(0, 0, 320, 240, ILI9341_WHITE); // Stampa il testo "Arduino" sul display TFT. setCursor(80, 30); tft. setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print ( "Arduino" ); // Stampa il testo "Tic Tac Toe" tft . setCursor(30, 100); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Tris"); // Crea pulsante rosso // crea pulsanti [0]. initButton ( & tft , 160 , 200 , 200 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , start , 2 ); buttons [ 0 ]. drawButton(); fai { attendi un tocco ( & x , & y ); se ( pulsanti [ 0 ). contiene ( 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); // Disegna la cornice TFT bianca. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // Stampa il testo "Tic Tac Toe" tft . setCursor(30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Tic Tac Toe"); // Stampa "YouTube!" Testo TFT. setCursor(30, 100); tft. setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print("Chi inizia"); // Crea pulsante rosso // crea pulsanti [0]. initButton ( & tft , 100 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , you , 2 ); buttons [ 0 ]. drawButton(); // crea pulsanti // x, y, w, h, contorno, riempimento, pulsanti di testo[1]. initButton ( & tft , 200 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , cpu , 2 ); buttons [ 1 ]. drawButton(); b = 1; do { attendi un tocco(&x, &y); if(buttons[0). contiene ( x , y )) { b = 0 ; player = 1 ; tft . fillScreen(ILI9341_BLACK); // Disegna la cornice TFT bianca. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor(30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("Ok, inizia tu"); delay(2000); } if(buttons[1]. contiene ( x , y )) { b = 0 ; player = 0 ; tft . fillScreen(ILI9341_BLACK); // Disegna la cornice TFT bianca. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor(30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("OK, la CPU si avvia"); delay(2000); } } while (b > 0); b = 1; moves = 1; winner = 0; cursor = 10; tft. fillScreen(ILI9341_BLACK); // Disegna la cornice TFT. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // Disegna una linea verticale tft . fillRect ( 80 , 15 , 5 , 205 , ILI9341_WHITE ); tft. fillRect ( 150 , 15 , 5 , 205 , ILI9341_WHITE ); // Disegna una linea orizzontale 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("Disegno"); arduinoMove(); checkWinner(); }else { cursor+=10; setCursor(240,cursor); setTextSize(1); println("La tua mossa"); playerMove(); checkWinner(); } delay(1000); moves++; }while (winner==0 && moves<10); waitonetouch(&x,&y); fillScreen(ILI9341_BLACK); //Disegna la cornice drawRect(0,0,320,240,ILI9341_WHITE); //Stampa il testo "Game Over" setCursor(50,30); setTextColor(ILI9341_WHITE); setTextSize(4); print("GAME OVER"); if(winner == 0) { //Stampa "DARE IN PAREGGIO!" setCursor(110,100); setTextColor(ILI9341_YELLOW); setTextSize(4); print("PAREGGIO"); } if(winner == 1) { //Stampa "L'UMANO VINCE!" setCursor(40,100); setTextColor(ILI9341_BLUE); setTextSize(4); print("VINCE L'UMANO"); } if(winner == 2) { //Stampa "VINCE LA 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?

if (board[0]>0 && board[1]==board[0] && board[2]==board[0]) { winner=board[0]; fillRect(15, 45, 205, 5, ILI9341_WHITE); } if (board[3]>0 && board[4]==board[3] && board[5]==board[3]) { winner=board[3]; fillRect(15, 115, 205, 5, ILI9341_WHITE); } if ( board [ 6 ] > 0 && board [ 7 ] == board [ 6 ] && board [ 8 ] == board [ 6 ]) { winner = board [ 6 ]; tft. fillRect(15, 185, 205, 5, ILI9341_WHITE); } if (board[0] > 0 && board[3] == board[0] && board[6] == board[0]) { winner = board[0]; tft. fillRect(45, 15, 5, 205, ILI9341_WHITE); } if (board[1] > 0 && board[4] == board[1] && board[7] == board[1]) { winner = board[1]; tft. fillRect(115, 15, 5, 205, ILI9341_WHITE); } if (board[2]>0 && board[5]==board[2] && board[8]==board[2]) { winner=board[2]; fillRect(185, 15, 5, 205, ILI9341_WHITE); } if (board[0]>0 && board[4]==board[0] && board[8]==board[0]) { winner=board[0]; for(unsigned short int xx=0;xx<6;xx++){ drawLine(20+xx, 20, 210+xx, 210, ILI9341_WHITE); } } if (board[2]>0 && board[4]==board[2] && board[6]==board[2]) { winner=board[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 . dataAvailable() == true) { myTouch. read(); x = myTouch . getX(); y = myTouch . getY(); return ; } } while ( myTouch . datiAvailable () == false); }
Ebook di IPAP
Ebooks IPAP

🔥UNISCITI🔥 ALLA NUOVA COMMUNITY IP@P! ISCRIVITI QUI!

Temi

Autore: Félix Albornoz

Ho maturato oltre 20 anni di esperienza nel settore tecnologico, aiutando aziende e utenti a svilupparsi e formarsi in questo campo. Sono sempre alla ricerca di nuove conoscenze.

È parente