🔥 CHOLLOS 🔥 cada día en Telegram ÚNETE AQUÍ

Arduino DUE ¿Qué es, para qué sirve y qué dispositivos puedo desarrollar con estas placas?

Una de las placas más potentes que ofrece Arduino es la versión DUE. Gracias a su microcontrolador, a su memoria y a la cantidad de pines que dispone es una de las más buscadas cuando se necesita realizar proyectos complejos.

Por tal motivo hemos preparado este artículo para que puedas conocer para qué sirve este tipo de placa y cuáles son las principales características que ofrece a los usuarios.

Además, te explicaremos qué debes tener en cuenta al trabajar con una Arduino DUE en qué se diferencia el entorno de desarrollo para la programación de la placa. Echa un vistazo.


¿Qué es Arduino DUE y para qué sirve estas placas de desarrollo libre?

Arduino DUE es una placa que cuenta con un microcontrolador Atmel SAM3X8E, ofreciendo un rendimiento extra para proyectos de envergadura. Este criterio también se respalda en una mayor cantidad de pines digitales de entrada y salida y de pines analógicos. Trabaja con un voltaje de 3.3V y dispone de 4 puertos para hardware, de los cuales 2 son para cables MicroUSB que se utilizan para conectar la placa con el ordenador. Se puede usar Arduino DUE sistemas operativos Windows, Linux y MacOS.

Características de la Arduino DUE ¿Cuáles son sus prestaciones más interesantes?

Características de la Arduino DUE ¿Cuáles son sus prestaciones más interesantes?

Las características principales que tiene Arduino DUE son:

  • Sus dimensiones son 101,52 × 53,3mm y tiene un peso de 36 gramos.
  • Posee un MCU Atmel SAM3X8E ARM Cortex-M3 de 32 bits de núcleo que trabaja a 84 Mhz.
  • Dispone de una memoria pasiva SRAM de 96 KB, pero no cuenta con memoria de tipo EEPROM como el resto de las placas de Arduino. Mientras que la memoria flash es de 512 KB.
  • El voltaje con el que trabaja es de 3V, teniendo un límite máximo de entrada de 16V.
  • Cuenta con 54 pines digitales, en los que 12 son para 12 son para la modulación por pulsos.
  • Los pines de entrada analógica son 12 y los de salida, 2.
  • Tiene 2 puertos MicroUSB, un JTAG, un SPI, dos TWI pulsadores de reset y de borrado.

¿Qué tener en cuenta al trabajar con una placa Arduino DUE?

Lo primero que debes tener en cuenta es que esta placa trabaja con una intensidad de corriente de 3.3V, por lo que mantiene una gran diferencia con la mayoría de las Arduino de 5V. Por lo tanto, debes tener cuidado en no quemar el MCU, las memorias y los otros compontes a causa de un sobre voltaje.

Otro tema que debes tener en cuenta, aunque un poco menor, es su tamaño y peso. Por último, debes considerar todos los pines digitales y analógicos que tienes disponibles (con esto nos referimos a la necesidad que tiene tu proyecto de ocupar a todos, ya que si se requiere de menos podrías inclinarte por otra placa menos costosa y de 5V).

Recomendado para ti:
Ataque TCP Session Hijacking ¿Qué es, cómo funciona y cómo protegernos del ataque de secuestro de sesión?

¿Es diferente el entorno de desarrollo (Arduino IDE) para las placas Arduino DUE?

¿Es diferente el entorno de desarrollo (Arduino IDE) para las placas Arduino DUE?



"ACTUALIZADO ✅ ¿Quieres conocer acerca de las platas Arduino DUE y cómo trabajar con ellas? ⭐ ENTRA AQUÍ ⭐ y Aprende Todo ✅ DESDE CERO ✅"


El entorno de Arduino DUE no es diferente al del resto de las placas solo debes tener en cuenta que el IDE tiene configurado para la placa Arduino UNO, por lo que deberás cambiar el tipo de Arduino en el programa.

Para ello tendrás que seguir estos pasos:

  • Una vez que tengas abierto IDE dirígete a Herramientas.
  • Luego selecciona Placas.
  • Elige la opción DUE.

Utilidad de la placa ¿En qué proyectos se puede utilizar la Arduino DUE?

Se puede usar la placa DUE de Arduino en una gran cantidad de proyectos.

Por ejemplo, puedes crear:

  • Un pedal para distorsionar el sonido de una guitarra eléctrica. https://create.arduino.cc/projecthub/electrosmash-team/arduino-due-programmable-guitar-pedal-edfe8b
  • Dispositivo para realizar electrocardiogramas. https://create.arduino.cc/projecthub/javiergonzalezb/heart-rate-estimation-using-arduino-due-a2271a
  • Generador de formas de onda. https://create.arduino.cc/projecthub/search?q=due&type=Project

Además, si quieres conocer en detalle un proyecto puedes crear un juego de Ceros y Cruces. Para este dispositivo necesitarás una placa DUE, un controlador o pantalla led TFT LCD de 2,8 pulgadas con touch y cables necesarios para la instalación.

En cuanto al montaje, lo tendrás que hacer de acuerdo con el siguiente dibujo:

Utilidad de la placa ¿En qué proyectos se puede utilizar la Arduino DUE?

Cuando termines vas a tener que ingresar al IDE de Arduino y escribir estos códigos:

#include  <SPI.h>

#include <Adafruit_GFX.h>

#include <Adafruit_ILI9341.h>

#include <URTouch.h>

#include <avr / pgmspace.h>

#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 );

Botones Adafruit_GFX_Button [ 9 ];

URTouch myTouch ( 30 ,  28 ,  26 ,  24 ,  22 );

movimientos int cortos sin firmar = 1 ;

ganador int corto sin firmar = 0 ;

unsigned short  int  x , y ;

cursor int corto sin firmar ;

unsigned short  int  firstMoves [] = { 0 , 2 , 6 , 8 };

tablero int corto sin firmar [] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 };

jugador bool ;

bool b = 1 ;

char start [ 10 ]  =  { "Gamestart" };

char you [ 4 ]  =  { "USTED" };

char cpu [ 4 ]  =  { "CPU" };

char again [ 7 ]  =  { "¿Otra vez?" };

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 . comenzar ();

tft . setRotation ( 3 );

tft . fillScreen ( ILI9341_BLACK );

// Dibujar marco blanco

tft . drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE );

// Imprimir texto "Arduino"

tft . setCursor ( 80 , 30 );

tft . setTextColor ( ILI9341_GREEN );

tft . setTextSize ( 4 );

tft . imprimir ( "Arduino" );

// Imprimir texto "Tic Tac Toe"

tft . setCursor ( 30 , 100 );

tft . setTextColor ( ILI9341_WHITE );

tft . setTextSize ( 4 );

tft . imprimir ( "Tic Tac Toe" );

// Crear botón rojo

// crear botones

botones [ 0 ]. initButton ( & tft , 160 , 200 , 200 , 40 , ILI9341_WHITE ,  ILI9341_RED ,  ILI9341_WHITE ,

inicio , 2 );

botones [ 0 ]. drawButton ();

hacer {

esperar un toque ( & x , & y );

si ( botones [ 0 ]. contiene ( x , y ))

b = 0 ;

} mientras ( b > 0 );

}

bucle vacío ()

{

for ( unsigned short  int  i = 0 ; i < 9 ; i ++ )

{

tablero [ i ] = 0 ;

}

tft . fillScreen ( ILI9341_BLACK );

// Dibujar marco blanco

tft . drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE );

// Imprimir texto "Tic Tac Toe"

tft . setCursor ( 30 , 30 );

tft . setTextColor ( ILI9341_WHITE );

tft . setTextSize ( 4 );

tft . imprimir ( "Tic Tac Toe" );

// Imprime "YouTube!" texto

tft . setCursor ( 30 , 100 );

tft . setTextColor ( ILI9341_GREEN );

tft . setTextSize ( 4 );

tft . print ( "Quién comienza" );

// Crear botón rojo

// crear botones

botones [ 0 ]. initButton ( & tft , 100 , 200 , 80 , 40 , ILI9341_WHITE ,  ILI9341_RED ,  ILI9341_WHITE ,

usted , 2 );

botones [ 0 ]. drawButton ();

// crear botones // x, y, w, h, contorno, relleno, texto

botones [ 1 ]. initButton ( & tft , 200 , 200 , 80 , 40 , ILI9341_WHITE ,  ILI9341_RED ,  ILI9341_WHITE ,

cpu , 2 );

botones [ 1 ]. drawButton ();

b = 1 ;

hacer {

esperar un toque ( & x , & y );

si ( botones [ 0 ]. contiene ( x , y ))

{

b = 0 ;

jugador =  1 ;

tft . fillScreen ( ILI9341_BLACK );

// Dibujar marco blanco

tft . drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE );

tft . setCursor ( 30 , 30 );

tft . setTextColor ( ILI9341_WHITE );

tft . setTextSize ( 2 );

tft . print ( "Ok, empiezas" );

retraso ( 2000 );

}

si ( botones [ 1 ]. contiene ( x , y ))

{

b = 0 ;

jugador =  0 ;

tft . fillScreen ( ILI9341_BLACK );

// Dibujar marco blanco

tft . drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE );

tft . setCursor ( 30 , 30 );

tft . setTextColor ( ILI9341_WHITE );

tft . setTextSize ( 2 );

tft . print ( "Ok, comienza la CPU" );

retraso ( 2000 );

}

} mientras ( b > 0 );

b = 1 ;

movimientos =  1 ;

ganador =  0 ;

cursor =  10 ;

tft . fillScreen ( ILI9341_BLACK );

// Dibujar marco

tft . drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE );

// Dibuja una línea vertical

tft . fillRect ( 80 , 15 , 5 , 205 , ILI9341_WHITE );

tft . fillRect ( 150 , 15 , 5 , 205 , ILI9341_WHITE );

// Dibuja una línea horizontal

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("I draw");

arduinoMove();

checkWinner();

}else

{

cursor+=10;

setCursor(240,cursor);

setTextSize(1);

println("Your move");

playerMove();

checkWinner();

}

delay(1000);

moves++;

}while (winner==0 && moves<10);

waitonetouch(&x,&y);

fillScreen(ILI9341_BLACK);

//Draw frame

drawRect(0,0,320,240,ILI9341_WHITE);

//Print "Game Over" Text

setCursor(50,30);

setTextColor(ILI9341_WHITE);

setTextSize(4);

print("GAME OVER");

if(winner == 0)

{

//Print "DRAW!" text

setCursor(110,100);

setTextColor(ILI9341_YELLOW);

setTextSize(4);

print("DRAW");

}

if(winner == 1)

{

//Print "HUMAN WINS!" text

setCursor(40,100);

setTextColor(ILI9341_BLUE);

setTextSize(4);

print("HUMAN WINS");

}

if(winner == 2)

{

//Print "CPU WINS!" 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 ( tablero [ 6 ] > 0  &&  tablero [ 7 ] == tablero [ 6 ]  &&  tablero [ 8 ] == tablero [ 6 ])  {

ganador = tablero [ 6 ];

tft . fillRect ( 15 , 185 ,  205 ,  5 ,  ILI9341_WHITE );

}

if ( tablero [ 0 ] > 0  &&  tablero [ 3 ] == tablero [ 0 ]  &&  tablero [ 6 ] == tablero [ 0 ])  {

ganador = tablero [ 0 ];

tft . fillRect ( 45 , 15 ,  5 ,  205 ,  ILI9341_WHITE );

}

if ( tablero [ 1 ] > 0  &&  tablero [ 4 ] == tablero [ 1 ]  &&  tablero [ 7 ] == tablero [ 1 ])  {

ganador = tablero [ 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 . leer ();

x =  myTouch . getX ();

y =  myTouch . getY ();

volver ;

}

} while ( myTouch . dataAvailable () == false );

}

Si te quedaste con alguna duda, déjalas en los comentarios, te contestaremos lo antes posible, además seguro que será de gran ayuda para más miembros de la comunidad. Gracias! 😉

Más Trucos y Consejos cada día ¡Apúntate Aquí!


He leído y acepto los términos y condiciones

Temas

Félix Albornoz
Autor: Félix Albornoz

Llevo más de 20 años trabajando en el sector tecnológico ayudando a empresas y usuarios a desarrollarse y formarse en este campo. Siempre aprendiendo cosas nuevas.

Recomendadas

Relacionadas


Destacadas


Deja un comentario

  ◀ Acepto los términos de privacidad