Arduino DUE: Nó là gì, được dùng để làm gì và tôi có thể phát triển những thiết bị nào với bo mạch này?

Cập nhật lần cuối: 14/09/2022
tác giả: Felix Albornoz
Arduino Due: Nó là gì, được dùng để làm gì và tôi có thể phát triển những thiết bị nào với bo mạch này?

Một trong những loại bếp nấu mạnh mẽ nhất hiện có. Arduino Đây là phiên bản DUENhờ bộ vi điều khiển, bộ nhớ và số lượng chân kết nối, nó là một trong những sản phẩm được ưa chuộng nhất khi cần thực hiện các dự án phức tạp.

Vì lý do này Chúng tôi đã chuẩn bị bài viết này để bạn có thể tìm hiểu loại biển số này được sử dụng để làm gì và những đặc điểm chính của nó là gì. mà nó cung cấp cho người dùng.

Ngoài ra, chúng tôi sẽ giải thích những điều bạn cần lưu ý. Khi làm việc với Arduino DUE, môi trường phát triển để lập trình cho bo mạch này có những điểm khác biệt nào?. Thủ tục thanh toán.

Arduino DUE là gì và những bo mạch phát triển mã nguồn mở này được sử dụng để làm gì?

Arduino DO Đây là một bo mạch có tích hợp vi điều khiển Atmel SAM3X8E. Cung cấp hiệu năng vượt trội cho các dự án quy mô lớn.Tiêu chí này cũng được hỗ trợ bởi một số lượng mã PIN kỹ thuật số lớn hơn lối vào và lối ra và các chân tương tự. Nó hoạt động ở điện áp 3.3V. và có 4 cổng Đối với phần cứng, trong đó có 2 cái dành cho cáp. MicroUSB Những chân cắm này được sử dụng để kết nối bo mạch với máy tính. Có thể sử dụng hệ điều hành Arduino Due. Windows, Linux y Dành cho MacOS.

Các tính năng của Arduino DUE: Những tính năng thú vị nhất của nó là gì?

Các tính năng của Arduino DUE: Những tính năng thú vị nhất của nó là gì?

Các tính năng chính của Arduino DUE là:

  • Kích thước của nó là 101,52 × 53,3mm và có khối lượng 36 gam.
  • Nó có MCU Bộ xử lý Atmel SAM3X8E ARM Cortex-M3 Bộ xử lý 32-bit hoạt động ở tốc độ 84 MHz.
  • Nó có bộ nhớ thụ động 96 KB SRAMTuy nhiên, nó không có bộ nhớ EEPROM như các bo mạch Arduino khác. Bộ nhớ flash của nó là 512 KB.
  • Điện áp hoạt động của nó là 3Vcó giới hạn số người vào tối đa là 16V.
  • 54 chân kỹ thuật số, trong đó 12 cái dùng để điều chế xung.
  • Các ghim của Đầu vào tương tự là 12 và những người rời đi, 2.
  • Nó có 2 cổng MicroUSB, One JTAG, un SPI, dos TWI Các nút đặt lại và xóa.

Bạn cần lưu ý điều gì khi làm việc với bo mạch Arduino DUE?

Điều đầu tiên bạn cần ghi nhớ là bo mạch này hoạt động với dòng điện cường độ 3.3V.Điều này có nghĩa là nó hoạt động ở điện áp cao hơn đáng kể so với hầu hết các bo mạch Arduino 5V. Do đó, bạn phải cẩn thận để không làm hỏng MCU, bộ nhớ và các thành phần khác do quá áp.

Một yếu tố khác cần xem xét, mặc dù ít quan trọng hơn, là kích thước và trọng lượng của nó. Cuối cùng, Bạn phải xem xét tất cả các chân tín hiệu số và analog mà bạn có sẵn. (Ý chúng tôi ở đây là nhu cầu mà dự án của bạn cần) Hãy sử dụng hết tất cả các khe cắm, vì nếu cần ít hơn, bạn có thể chọn một bo mạch 5V khác rẻ hơn.).

Môi trường phát triển (Arduino IDE) có khác biệt đối với bo mạch Arduino DUE không?

Môi trường phát triển (Arduino IDE) có khác biệt đối với bo mạch Arduino DUE không?

El Môi trường lập trình Arduino DUE không khác biệt so với các bo mạch khác. Bạn chỉ cần nhớ rằng IDE đã được cấu hình cho Bo mạch Arduino UNODo đó, bạn cần phải thay đổi loại Arduino trong chương trình.

Để làm điều này, bạn sẽ phải làm theo các bước sau:

  • Sau khi bạn đã mở nó ra IDE đi đến Công cụ.
  • Sau đó chọn Tấm.
  • Chọn tùy chọn ĐÚNG.

Ứng dụng của bo mạch: Arduino DUE có thể được sử dụng trong những dự án nào?

Bạn có thể dùng Bo mạch Arduino DUE trên một số lượng lớn các dự án.

Ví dụ, bạn có thể tạo ra:

  • Một bàn đạp Làm biến dạng âm thanh của đàn guitar điện. https://create.arduino.cc/projecthub/electrosmash-team/arduino-due-programmable-guitar-pedal-edfe8b
  • Thiết bị để thực hiện Điện tâm đồ. https://create.arduino.cc/projecthub/javiergonzalezb/heart-rate-estimation-using-arduino-due-a2271a
  • Máy phát điện của các dạng sóng. https://create.arduino.cc/projecthub/search?q=due&type=Project

Bên cạnh đó, Nếu bạn muốn tìm hiểu chi tiết về một dự án, bạn có thể tạo trò chơi Số Không và Dấu X.Đối với thiết bị này, bạn sẽ cần một bo mạch DUE, một bộ điều khiển hoặc màn hình cảm ứng LED TFT LCD 2,8 inch và các dây cáp cần thiết để lắp đặt.

Về phần lắp ráp, bạn sẽ phải thực hiện theo sơ đồ sau:

Ứng dụng của bo mạch: Arduino DUE có thể được sử dụng trong những dự án nào?

Khi hoàn thành, bạn cần mở Arduino IDE và nhập các đoạn mã sau:

#bao gồm #bao gồm #bao gồm #bao gồm #bao gồm #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}; player 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 . Khởi tạo Touch(); myTouch . setPrecision ( PREC_HI ); tft. start(); tft . setRotation ( 3 ); tft . fillScreen(ILI9341_BLACK); // Vẽ khung TFT màu trắng. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // In văn bản "Arduino" trên màn hình TFT. setCursor ( 80 , 30 ); tft . setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print("Arduino"); // In văn bản "Tic Tac Toe" tft. setCursor ( 30 , 100 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Tic Tac Toe"); // Tạo nút màu đỏ // tạo các nút [0]. initButton ( & tft , 160 , 200 , 200 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , start , 2 ); buttons [ 0 ]. drawButton(); do { chờ chạm ( & x , & y ); if ( buttons [ 0 ). chứa ( 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); // Vẽ khung TFT màu trắng. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // In văn bản "Tic Tac Toe" tft . setCursor ( 30 , 30 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Tic Tac Toe"); // In ra "YouTube!" Văn bản TFT. setCursor ( 30 , 100 ); tft . setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print("Ai bắt đầu"); // Tạo nút màu đỏ // tạo các nút [0]. initButton ( & tft , 100 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , you , 2 ); buttons [ 0 ]. drawButton(); // tạo các nút // x, y, w, h, outline, fill, text buttons[1]. initButton ( & tft , 200 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , cpu , 2 ); buttons [ 1 ]. drawButton(); b = 1; do { chờ chạm(&x, &y); if(buttons[0]. chứa ( x , y )) { b = 0 ; player = 1 ; tft . fillScreen(ILI9341_BLACK); // Vẽ khung TFT màu trắng. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor ( 30 , 30 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("Được rồi, bạn bắt đầu"); delay(2000); } if(buttons[1]. chứa ( x , y )) { b = 0 ; player = 0 ; tft . fillScreen(ILI9341_BLACK); // Vẽ khung TFT màu trắng. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor ( 30 , 30 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("OK, CPU starts"); delay(2000); } } while (b > 0); b = 1; moves = 1; winner = 0; cursor = 10; tft. fillScreen(ILI9341_BLACK); // Vẽ khung TFT. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // Vẽ một đường thẳng đứng tft . fillRect ( 80 , 15 , 5 , 205 , ILI9341_WHITE ); tft. fillRect ( 150 , 15 , 5 , 205 , ILI9341_WHITE ); // Vẽ một đường ngang 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("Tôi rút"); arduinoMove(); checkWinner(); }else { cursor+=10; setCursor(240,cursor); setTextSize(1); println("Đến lượt bạn"); playerMove(); checkWinner(); } delay(1000); moves++; }while (winner==0 && moves<10); waitonetouch(&x,&y); fillScreen(ILI9341_BLACK); //Vẽ khung hình drawRect(0,0,320,240,ILI9341_WHITE); //In chữ "Game Over" setCursor(50,30); setTextColor(ILI9341_WHITE); setTextSize(4); print("GAME OVER"); if(winner == 0) { //In chữ "DRAW!" text setCursor(110,100); setTextColor(ILI9341_YELLOW); setTextSize(4); print("HÒA"); } if(winner == 1) { //In "NGƯỜI THẮNG!" text setCursor(40,100); setTextColor(ILI9341_BLUE); setTextSize(4); print("HUMAN WINS"); } if(winner == 2) { //In "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 ( 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. đọc(); x = myTouch . getX(); y = myTouch . getY(); return ; } } while ( myTouch . dữ liệu có sẵn () == false); }
Sách điện tử của IPAP
Ebooks IPAP

🔥THAM GIA🔥 CỘNG ĐỒNG IP@P MỚI! ĐĂNG KÝ TẠI ĐÂY!

Chủ đề

Tác giả: Félix Albornoz

Tôi có hơn 20 năm kinh nghiệm làm việc trong lĩnh vực công nghệ, hỗ trợ các công ty và người dùng phát triển và đào tạo trong lĩnh vực này. Tôi luôn luôn học hỏi những điều mới.

Có liên quan