
Een van de krachtigste kookplaten die verkrijgbaar zijn. Arduino Het is de DUE-versie.Dankzij de microcontroller, het geheugen en het aantal pinnen is het een van de meest gewilde apparaten voor het uitvoeren van complexe projecten.
Om deze reden We hebben dit artikel samengesteld zodat u kunt leren waarvoor dit type plaat wordt gebruikt en wat de belangrijkste kenmerken ervan zijn. wat het aan gebruikers biedt.
Daarnaast leggen we uit waar u rekening mee moet houden. Wat zijn de verschillen in de ontwikkelomgeving voor het programmeren van een Arduino DUE?. Uitchecken.
Wat is Arduino DUE en waarvoor worden deze open-source ontwikkelingsboards gebruikt?
Arduino-DUE Het is een printplaat met een Atmel SAM3X8E microcontroller. biedt extra prestaties voor grootschalige projectenDit criterium wordt ook ondersteund door een groter aantal digitale pinnen in- en uitgang en analoge pinnen. Het werkt op een spanning van 3.3V. en heeft 4 poorten voor hardware, waarvan 2 voor kabels. MicroUSB Deze worden gebruikt om het bord met de computer te verbinden. Arduino Due-besturingssystemen kunnen worden gebruikt. Windows, Linux y MacOS.
Kenmerken van de Arduino DUE: Wat zijn de meest interessante kenmerken?
De belangrijkste kenmerken van Arduino DUE zijn:
- De afmetingen zijn 101,52 × 53,3 mm en heeft een gewicht van 36 gram.
- Het heeft een microcontroller. Atmel SAM3X8E ARM Cortex-M3 32-bits core die werkt op 84 MHz.
- Het heeft een passief geheugen. 96 KB SRAMHet beschikt echter niet over EEPROM-geheugen zoals de andere Arduino-boards. Het flashgeheugen bedraagt 512 KB.
- De spanning waarbij het werkt is 3Vmet een maximale instaplimiet van 16V.
- Account bij 54 digitale pinnen, waarvan 12 voor pulsmodulatie zijn.
- De pinnen van analoge ingangen zijn 12 en degenen die vertrekken, 2.
- je hebt 2 MicroUSB-poorteneen JTAG, un SPI, van TWEE Reset- en wisknoppen.
Waar moet je op letten bij het werken met een Arduino DUE-bord?
Het eerste wat je moet onthouden, is dat dit bord werkt met een stroomsterkte van 3.3V.Dit betekent dat het op een aanzienlijk hogere spanning werkt dan de meeste 5V Arduino-boards. Daarom moet je oppassen dat je de microcontroller, het geheugen en andere componenten niet beschadigt door overspanning.
Een andere factor om rekening mee te houden, hoewel een iets minder belangrijke, is de grootte en het gewicht. Tot slot, Je moet rekening houden met alle beschikbare digitale en analoge pinnen. (Hiermee bedoelen we de behoefte die uw project heeft aan) Gebruik ze allemaal, want als er minder nodig zijn, kun je kiezen voor een ander, goedkoper 5V-bord.).
Is de ontwikkelomgeving (Arduino IDE) anders voor Arduino DUE-boards?
El De Arduino DUE-omgeving verschilt niet van die van de andere boards. Je moet er alleen rekening mee houden dat de IDE heeft geconfigureerd voor de Arduino UNO-bordDaarom moet u het type wijzigen. Arduino in het programma.
Om dit te doen, moet je de volgende stappen volgen:
- Zodra je het open hebt IDE ga naar gereedschap.
- Selecteer vervolgens platen.
- Kies de optie TWO.
Toepassingen van het bord: In welke projecten kan de Arduino DUE worden gebruikt?
U kunt de Arduino DUE-bord op een groot aantal projecten.
Je kunt bijvoorbeeld het volgende maken:
- Een pedaal Het geluid van een elektrische gitaar vervormen.
https://create.arduino.cc/projecthub/electrosmash-team/arduino-due-programmable-guitar-pedal-edfe8b - inrichting uitvoeren elektrocardiogrammen.
https://create.arduino.cc/projecthub/javiergonzalezb/heart-rate-estimation-using-arduino-due-a2271a - generator van golfvormen.
https://create.arduino.cc/projecthub/search?q=due&type=Project
Bovendien heeft Als je een project tot in detail wilt bestuderen, kun je een Nul-Kruis-spel maken.Voor dit apparaat hebt u een DUE-kaart, een controller of een 2,8-inch TFT LCD LED-touchscreen en de benodigde kabels voor de installatie nodig.
Wat de montage betreft, die dient u te verrichten volgens het volgende diagram:
Als je klaar bent, moet je de Arduino IDE openen en deze code invoeren:
#erbij betrekken #erbij betrekken #erbij betrekken #erbij betrekken #erbij betrekken #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); // Teken een wit TFT-frame. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // Print "Arduino" tft text. setCursor ( 80 , 30 ); tft . setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print("Arduino"); // Print de tekst "Tic Tac Toe" tft. setCursor ( 30 , 100 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Tic Tac Toe"); // Maak een rode knop // maak knoppen [0]. initButton ( & tft , 160 , 200 , 200 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , start , 2 ); buttons [ 0 ]. drawButton(); doe { wacht op een tik ( & x , & y ); als ( buttons [ 0 ). bevat (x, y)) b = 0; } terwijl (b > 0); } void loop() { for (unsigned short int i = 0; i < 9; i++) { board[i] = 0; } tft. fillScreen(ILI9341_BLACK); // Teken een wit TFT-frame. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // Print text "Tic Tac Toe" tft . setCursor ( 30 , 30 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(4); tft. print("Tic Tac Toe"); // Print "YouTube!" TFT-tekst. setCursor ( 30 , 100 ); tft . setTextColor ( ILI9341_GREEN ); tft. setTextSize(4); tft. print("Wie begint?"); // Maak een rode knop // maak knoppen [0]. initButton ( & tft , 100 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , you , 2 ); buttons [ 0 ]. drawButton(); // maak knoppen aan // x, y, w, h, omtrek, vulling, tekstknoppen[1]. initButton ( & tft , 200 , 200 , 80 , 40 , ILI9341_WHITE , ILI9341_RED , ILI9341_WHITE , cpu , 2 ); buttons [ 1 ]. drawButton(); b = 1; doe { wacht op een tik (&x, &y); als (buttons[0]. bevat ( x , y )) { b = 0 ; speler = 1 ; tft . fillScreen(ILI9341_BLACK); // Teken een wit TFT-frame. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor ( 30 , 30 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("Oké, je kunt beginnen"); delay(2000); } if(buttons[1]. bevat ( x , y )) { b = 0 ; speler = 0 ; tft . fillScreen(ILI9341_BLACK); // Teken een wit TFT-frame. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); tft. setCursor ( 30 , 30 ); tft . setTextColor ( ILI9341_WHITE ); tft. setTextSize(2); tft. print("OK, CPU start"); delay(2000); } } while (b > 0); b = 1; moves = 1; winner = 0; cursor = 10; tft. fillScreen(ILI9341_BLACK); // Teken het TFT-frame. drawRect ( 0 , 0 , 320 , 240 , ILI9341_WHITE ); // Teken een verticale lijn tft . fillRect ( 80 , 15 , 5 , 205 , ILI9341_WHITE ); tft. fillRect(150, 15, 5, 205, ILI9341_WHITE); // Teken een horizontale lijn 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("Ik trek"); arduinoMove(); checkWinner(); } else { cursor += 10; setCursor(240, cursor); setTextSize(1); } println("Jouw zet"); playerMove(); checkWinner(); } delay(1000); moves++; }while (winner==0 && moves<10); waitonetouch(&x,&y); fillScreen(ILI9341_BLACK); //Teken kader drawRect(0,0,320,240,ILI9341_WHITE); //Print "Game Over" tekst setCursor(50,30); setTextColor(ILI9341_WHITE); setTextSize(4); print("GAME OVER"); if(winner == 0) { //Print "GAME!" tekst setCursor(110,100); setTextColor(ILI9341_YELLOW); setTextSize(4); print("GELIJKSPEL"); } if(winner == 1) { //Print "MENS WINT!" tekst setCursor(40,100); setTextColor(ILI9341_BLUE); setTextSize(4); print("MENS WINT"); } if(winner == 2) { //Print "CPU WINT!" 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 . lees(); x = myTouch. getX(); y = myTouch. getY(); return; } } while (myTouch. dataAvailable () == vals); }
















