Arduino DUE: Що це таке, для чого використовується та які пристрої можна розробляти за допомогою цих плат?

Останнє оновлення: 14/09/2022
Arduino Due: Що це таке, для чого використовується та які пристрої можна розробляти за допомогою цих плат?

Одна з найпотужніших варильних поверхонь на ринку Arduino Це версія DUEЗавдяки своєму мікроконтролеру, пам'яті та кількості контактів, він є одним з найбільш затребуваних, коли потрібно виконувати складні проекти.

З цієї причини Ми підготували цю статтю, щоб ви могли дізнатися, для чого використовується цей тип плити та які його основні характеристики. які він пропонує користувачам.

Крім того, ми пояснимо, що слід пам’ятати Які відмінності в середовищі розробки для програмування плати під час роботи з Arduino DUE?. Перевіряти.

Що таке Arduino DUE і для чого використовуються ці плати розробки з відкритим кодом?

Arduino DUE Це плата, на якій встановлено мікроконтролер Atmel SAM3X8E, пропонуючи додаткову продуктивність для великомасштабних проектівЦей критерій також підтверджується більша кількість цифрових контактів вхід та вихід та аналогові контакти. Працює на напрузі 3.3 В і має 4 портів для обладнання, з яких 2 призначені для кабелів MicroUSB Вони використовуються для підключення плати до комп'ютера. Можна використовувати операційні системи Arduino Due. Windows, Linux y MacOS.

Особливості Arduino DUE: Які його найцікавіші функції?

Особливості Arduino DUE: Які його найцікавіші функції?

Основні характеристики Arduino DUE:

  • Його розміри складають 101,52 × 53,3 мм і має вагу 36 грам.
  • Він має мікроконтролер Atmel SAM3X8E ARM Cortex-M3 32-бітне ядро, що працює на частоті 84 МГц.
  • Має пасивну пам'ять 96 КБ SRAMОднак, вона не має пам'яті EEPROM, як інші плати Arduino. Її флеш-пам'ять становить 512 КБ.
  • Напруга, при якій він працює, становить 3Vз максимальним лімітом входу 16V.
  • Має 54 цифрові контакти, з яких 12 призначені для імпульсної модуляції.
  • Штифти аналогових входів 12 і ті, що йдуть, 2.
  • Має 2 порти MicroUSB, А JTAG, un SPI, душ TWI кнопки скидання та видалення.

Що слід пам'ятати під час роботи з платою Arduino DUE?

Перше, що слід пам'ятати, це те, що ця плата працює зі струмом 3.3 В.Це означає, що він працює на значно вищій напрузі, ніж більшість плат Arduino на 5 В. Тому слід бути обережним, щоб не пошкодити мікроконтролер, пам'ять та інші компоненти через перенапругу.

Ще один фактор, який слід враховувати, хоча й дещо менш важливий, – це його розмір і вага. Нарешті, Ви повинні враховувати всі цифрові та аналогові контакти, які у вас є. (під цим ми маємо на увазі потребу, яку має ваш проект для займіть їх усі, оскільки якщо потрібно менше, ви можете вибрати іншу, менш дорогу плату на 5 В).

Чи відрізняється середовище розробки (Arduino IDE) для плат Arduino DUE?

Чи відрізняється середовище розробки (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, контролер або 2,8-дюймовий сенсорний TFT LCD LED-екран та необхідні кабелі для встановлення.

Що стосується складання, то вам доведеться робити це за наступною схемою:

Використання плати: У яких проектах можна використовувати Arduino DUE?

Коли ви закінчите, вам потрібно буде відкрити середовище розробки 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}; unsigned short board[] = {0, 0, 0, 0, 0, 0, 0, 0, 0}; player bool; bool b = 1; char start[10] = {"Початок гри"}; char you[4] = {"ВИ"}; char cpu[4] = {"ЦП"}; 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(); мійДотик. встановитиТочність(PREC_HI); tft. старт(); tft. встановитиПоворот(3); tft. fillScreen(ILI9341_BLACK); // Малюємо білу TFT-рамку. drawRect(0, 0, 320, 240, ILI9341_WHITE); // Вивести tft-текст "Arduino". встановитиКурсор(80, 30); tft. встановитиКолірТексту(ILI9341_ЗЕЛЕНИЙ); tft. встановити розмірТексту(4); tft. print("Arduino"); // Вивести текст "Хрестики-нулики" tft. встановитиКурсор(30, 100); tft. встановитиКолірТексту(ILI9341_БІЛИЙ); tft. встановити розмірТексту(4); tft. print("Хрестики-нулики"); // Створити червону кнопку // створити кнопки [0]. initButton(&tft, 160, 200, 200, 40, ILI9341_WHITE, ILI9341_RED, ILI9341_WHITE, старт, 2); кнопки[0]. drawButton(); do { чекати на дотик (&x, &y); if (buttons[0). містить (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); // Малюємо білу TFT-рамку. drawRect(0, 0, 320, 240, ILI9341_WHITE); // Вивести текст "Хрестики-нулики" у форматі tft. встановитиКурсор(30, 30); tft. встановитиКолірТексту(ILI9341_БІЛИЙ); tft. встановити розмірТексту(4); tft. print("Хрестики-нулики"); // Виводить "YouTube!" TFT-текст. встановитиКурсор(30, 100); tft. встановитиКолірТексту(ILI9341_ЗЕЛЕНИЙ); tft. встановити розмірТексту(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); якщо(buttons[0]. містить (x, y)) { b = 0; гравець = 1; tft. fillScreen(ILI9341_BLACK); // Малюємо білу TFT-рамку. drawRect(0, 0, 320, 240, ILI9341_WHITE); tft. встановитиКурсор(30, 30); tft. встановитиКолірТексту(ILI9341_БІЛИЙ); tft. встановити розмірТексту(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. встановитиКурсор(30, 30); tft. встановитиКолірТексту(ILI9341_БІЛИЙ); tft. встановити розмірТексту(2); tft. print("ОК, процесор запускається"); 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) { //Виводимо "НІЧИЯ!" текст setCursor(110,100); setTextColor(ILI9341_YELLOW); setTextSize(4); print("НІЧИЯ"); } якщо(переможець == 1) { //Вивести "ПЕРЕМОГАЄ ЛЮДИНА!" текст setCursor(40,100); setTextColor(ILI9341_BLUE); setTextSize(4); print("ПЕРЕМОГА ЛЮДИНИ"); } якщо(переможець == 2) { //Вивести "ПЕРЕМОГА ПРОЦЕСОРА!" 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); } якщо (дошка[2]>0 && дошка[5]==дошка[2] && дошка[8]==дошка[2]) { переможець=дошка[2]; fillRect(185, 15, 5, 205, ILI9341_WHITE); } якщо (дошка[0]>0 && дошка[4]==дошка[0] && дошка[8]==дошка[0]) { переможець=дошка[0]; для(unsigned short int xx=0;xx<6;xx++){ drawLine(20+xx, 20, 210+xx, 210, ILI9341_WHITE); } } якщо (дошка[2]>0 && дошка[4]==дошка[2] && дошка[6]==дошка[2]) { переможець=дошка[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). даніДоступні() == true) { myTouch . читати(); x = мійДотик. getX(); y = myTouch. getY(); повернути; } } поки (myTouch. dataAvailable () == false ); }
Електронні книги IPAP
Електронні книги IPAP

🔥ПРИЄДНУЙТЕСЬ🔥 ДО НОВОЇ СПІЛЬНОТИ IP@P! ЗАРЕЄСТРУЙТЕСЬ ТУТ!

Теми

Автор: Фелікс Альборнос

Я маю понад 20 років досвіду роботи в технологічному секторі, допомагаючи компаніям і користувачам розвиватися та навчатися в цій галузі. Я завжди навчаюся новому.

Пов’язані