
入手可能な最もパワフルなクックトップの1つ Arduinoの これはDUEバージョンですマイクロコントローラ、メモリ容量、そしてピン数の多さのおかげで、複雑なプロジェクトを実行する必要がある場合に最も需要の高い製品の一つとなっています。
このため この記事では、このタイプのプレートがどのような用途に使われるのか、そしてその主な特徴は何なのかを解説します。 それがユーザーに提供するもの。
さらに、留意すべき点についてもご説明します。 Arduino DUEを使用する場合、ボードのプログラミングを行う開発環境にはどのような違いがありますか?。 チェックアウト。
Arduino DUEとは何ですか?また、これらのオープンソース開発ボードは何に使われるのですか?
アルドゥイーノ・デュエ これはAtmel SAM3X8Eマイクロコントローラを搭載したボードです。 大規模プロジェクト向けに優れたパフォーマンスを提供しますこの基準は、 デジタルピンの数を増やす 入場と退出 アナログピン. 動作電圧は3.3Vです。 と持っています 4ポート ハードウェア向けで、うち2つはケーブル向けです。 マイクロUSB これらは、基板をコンピュータに接続するために使用されます。Arduino Dueのオペレーティングシステムが使用可能です。 Windowsの場合、 Linux y MacOSの.
Arduino DUEの特長:最も興味深い特長は何ですか?
Arduino DUEの主な特徴は以下のとおりです。
- その寸法は 101,52×53,3mm 重さは36グラムです。
- MCUを搭載しています アトメル SAM3X8E ARM Cortex-M3 84MHzで動作する32ビットコア。
- パッシブメモリを搭載しています 96KB SRAMしかし、他のArduinoボードのようにEEPROMメモリは搭載されていません。フラッシュメモリの容量は512KBです。
- 動作電圧は 3V最大入場制限があり 16V.
- アカウントを持つ 54個のデジタルピンそのうち12個はパルス変調用である。
- ピン アナログ入力は12 そして去っていくのは2人。
- あなたが持っている MicroUSBポート×2、 JTAG、 un SPI、 ドス TWI リセットボタンと消去ボタン。
Arduino DUEボードを使用する際に留意すべき点は何ですか?
まず最初に覚えておくべきことは、このボードは3.3Vの電流強度で動作するということです。これは、ほとんどの5V Arduinoボードよりもかなり高い電圧で動作することを意味します。そのため、過電圧によってMCU、メモリ、その他の部品が損傷しないよう注意する必要があります。
もう一つ考慮すべき要素は、やや重要度は低いものの、そのサイズと重量です。最後に、 利用可能なすべてのデジタルピンとアナログピンを考慮する必要があります。 (これは、プロジェクトが すべて使用してください。必要数が少ない場合は、より安価な別の5Vボードを選択することもできます。).
Arduino DUEボードの場合、開発環境(Arduino IDE)は異なりますか?
El Arduino DUEの環境は、他のボードの環境と何ら変わりません。 覚えておいてほしいのは、 IDE 設定済み Arduino UNOボードしたがって、タイプを変更する必要があります Arduinoの プログラムで。
そのためには、以下の手順に従う必要があります。
- 一度開けたら IDE に行く ツール.
- 次に選択 プレート.
- オプションを選択してください DUE.
ボードの用途: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 IDEを開いて以下のコードを記述してください。
#含む#含む#含む#含む#含む#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 . InitTouch(); myTouch 。 setPrecision ( PREC_HI ); tft. start(); tft 。 setRotation(3); tft. fillScreen(ILI9341_BLACK); // 白いTFTフレームを描画します。 drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // "Arduino" tft テキストを印刷します。 setCursor(80, 30); tft. setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft。 print ( "Arduino" ); // 「Tic Tac Toe」というテキストを印刷します。 tft . setCursor(30, 100); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft。 print("三目並べ"); // 赤いボタンを作成 // ボタンを作成します [0]。 initButton ( & tft , 160 , 200 , 200 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , start , 2 ); buttons [ 0 ]. drawButton(); do { wait for a tap ( & 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 ); // テキスト "Tic Tac Toe" tft を印刷します。 setCursor(30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft。 print("Tic Tac Toe"); // "YouTube!" と出力されます。 TFTテキスト。 setCursor(30, 100); tft. setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft。 print("誰が始める"); // 赤いボタンを作成 // ボタンを作成します [0]。 initButton ( & tft , 100 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , you , 2 ); buttons [ 0 ]. drawButton(); // ボタンを作成します // x、y、w、h、アウトライン、塗りつぶし、テキストボタン[1]。 initButton ( & tft , 200 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , cpu , 2 ); buttons [ 1 ]. drawButton(); b = 1; do { wait for a tap(&x, &y); if(buttons[0]. contains ( x , y )) { b = 0 ; player = 1 ; tft . fillScreen(ILI9341_BLACK); // 白いTFTフレームを描画します。 drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor(30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft。 print("OK、開始"); delay(2000); } if(buttons[1]. contains ( x , y )) { b = 0 ; player = 0 ; tft . fillScreen(ILI9341_BLACK); // 白いTFTフレームを描画します。 drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor(30, 30); tft. setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft。 print("OK、CPU が起動します"); 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("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); //フレームを描画 drawRect(0,0,320,240,ILI9341_WHITE); //「ゲームオーバー」テキストを表示 setCursor(50,30); setTextColor(ILI9341_WHITE); setTextSize(4); print("ゲームオーバー"); if(winner == 0) { //「引き分け!」を表示 text setCursor(110,100); setTextColor(ILI9341_YELLOW); setTextSize(4); print("DRAW"); } if(winner == 1) { //「HUMAN WINS!」と出力します。 text setCursor(40,100); setTextColor(ILI9341_BLUE); setTextSize(4); print("HUMAN WINS"); } if(winner == 2) { // "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. read(); x = myTouch 。 getX(); y = myTouch 。 getY(); return; } } while ( myTouch . dataAvailable () == false ); }
















