/***************************************************
This is our GFX example for the Adafruit ILI9341 Breakout and Shield
----> http://www.adafruit.com/products/1651
Check out the links above for our tutorials and wiring diagrams
These displays use SPI to communicate, 4 or 5 pins are required to
interface (RST is optional)
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution
****************************************************/
float layout_scaling = .5;
float layout_button_scaling = 2;
float layout_hori_spaced_button_1_MM[] = {0, 0};
float layout_hori_spaced_button_2_MM[] = {31.25, 18};
float layout_hori_spaced_button_3_MM[] = {66.25, 27};
float layout_hori_spaced_button_4_MM[] = {102.25, 27};
float layout_hori_spaced_button_5_MM[] = {0, 39};
float layout_hori_spaced_button_6_MM[] = {31.25, 57};
float layout_hori_spaced_button_7_MM[] = {66.25, 66};
float layout_hori_spaced_button_8_MM[] = {102.25, 66};
float layout_hori_spaced_button_1[] = {layout_hori_spaced_button_1_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_1_MM[1]*layout_scaling*layout_button_scaling};
float layout_hori_spaced_button_2[] = {layout_hori_spaced_button_2_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_2_MM[1]*layout_scaling*layout_button_scaling};
float layout_hori_spaced_button_3[] = {layout_hori_spaced_button_3_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_3_MM[1]*layout_scaling*layout_button_scaling};
float layout_hori_spaced_button_4[] = {layout_hori_spaced_button_4_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_4_MM[1]*layout_scaling*layout_button_scaling};
float layout_hori_spaced_button_5[] = {layout_hori_spaced_button_5_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_5_MM[1]*layout_scaling*layout_button_scaling};
float layout_hori_spaced_button_6[] = {layout_hori_spaced_button_6_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_6_MM[1]*layout_scaling*layout_button_scaling};
float layout_hori_spaced_button_7[] = {layout_hori_spaced_button_7_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_7_MM[1]*layout_scaling*layout_button_scaling};
float layout_hori_spaced_button_8[] = {layout_hori_spaced_button_8_MM[0]*layout_scaling*layout_button_scaling, layout_hori_spaced_button_8_MM[1]*layout_scaling*layout_button_scaling};
float layout_rightstick_MM[] = {16, -45.75};
float layout_rightstick_scaled[] = {layout_rightstick_MM[0]*layout_scaling*layout_button_scaling, layout_rightstick_MM[1]*layout_scaling*layout_button_scaling};
float layout_leftstick1_MM[] = {-199.15, 23.75};
float layout_leftstick1_scaled[] = {layout_leftstick1_MM[0]*layout_scaling, layout_leftstick1_MM[1]*layout_scaling};
float layout_leftstick2_MM[] = {-294.15, 23.75};
float layout_leftstick2_scaled[] = {layout_leftstick2_MM[0]*layout_scaling, layout_leftstick2_MM[1]*layout_scaling};
float layout_button_select_MM[] = {-219.15, -94.6};
float layout_button_select_scaled[] = {layout_button_select_MM[0]*layout_scaling, layout_button_select_MM[1]*layout_scaling};
float layout_button_start_MM[] = {-274.15, -94.6};
float layout_button_start_scaled[] = {layout_button_start_MM[0]*layout_scaling, layout_button_start_MM[1]*layout_scaling};
float layout_trackball_MM[] = {-100.65, -23.75};
float layout_trackball_scaled[] = {layout_trackball_MM[0]*layout_scaling, layout_trackball_MM[1]*layout_scaling};
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
// For the Adafruit shield, these are the default.
#define TFT_DC 9
#define TFT_CS 10
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// If using the breakout, change pins as desired
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
//void tft.drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size);
//void tft.setCursor(int16_t x0, int16_t y0);
//void tft.setTextColor(uint16_t color);
//void tft.setTextColor(uint16_t color, uint16_t backgroundcolor);
//void tft.setTextSize(uint8_t size);
//void tft.setTextWrap(boolean w);
//void tft.print();
//void drawRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
//void fillRect(uint16_t x0, uint16_t y0, uint16_t w, uint16_t h, uint16_t color);
//void fillCircle(uint16_t x0, uint16_t y0, uint16_t r, uint16_t color);
void setup(void) {
tft.begin();
tft.setRotation(1);
tft.setTextColor(ILI9341_BLACK);
tft.setTextSize(2.5);
int button_5[6] = {layout_hori_spaced_button_1[0]+180, layout_hori_spaced_button_1[1]+130, 20, button_5[0]-9, button_5[1]-11};
String button_5_text = "A";
tft.fillCircle(button_5[0], button_5[1], button_5[2], ILI9341_DARKGREEN);
tft.drawCircle(button_5[0], button_5[1], button_5[2], ILI9341_GREEN);
tft.setCursor(button_5[3], button_5[4]);
tft.print(button_5_text);
int button_6[6] = {button_5[0]+layout_hori_spaced_button_2[0], button_5[1]-layout_hori_spaced_button_2[1], 20, button_6[0]-9, button_6[1]-11};
String button_6_text = "B";
tft.fillCircle(button_6[0], button_6[1], button_6[2], ILI9341_RED);
tft.drawCircle(button_6[0], button_6[1], button_6[2], ILI9341_GREEN);
tft.setCursor(button_6[3], button_6[4]);
tft.print(button_6_text);
int button_7[6] = {button_5[0]+layout_hori_spaced_button_3[0], button_5[1]-layout_hori_spaced_button_3[1], 20, button_7[0]-9, button_7[1]-11};
String button_7_text = "L2";
tft.fillCircle(button_7[0], button_7[1], button_7[2], ILI9341_LIGHTGREY);
tft.drawCircle(button_7[0], button_7[1], button_7[2], ILI9341_GREEN);
tft.setCursor(button_7[3], button_7[4]);
tft.print(button_7_text);
int button_8[6] = {button_5[0]+layout_hori_spaced_button_4[0], button_5[1]-layout_hori_spaced_button_4[1], 20, button_8[0]-9, button_8[1]-11};
String button_8_text = "R2";
tft.fillCircle(button_8[0], button_8[1], button_8[2], ILI9341_LIGHTGREY);
tft.drawCircle(button_8[0], button_8[1], button_8[2], ILI9341_GREEN);
tft.setCursor(button_8[3], button_8[4]);
tft.print(button_8_text);
int button_1[6] = {button_5[0]+layout_hori_spaced_button_5[0], button_5[1]-layout_hori_spaced_button_5[1], 20, button_1[0]-9, button_1[1]-11};
String button_1_text = "X";
tft.fillCircle(button_1[0], button_1[1], button_1[2], ILI9341_BLUE);
tft.drawCircle(button_1[0], button_1[1], button_1[2], ILI9341_GREEN);
tft.setCursor(button_1[3], button_1[4]);
tft.print(button_1_text);
int button_2[6] = {button_5[0]+layout_hori_spaced_button_6[0], button_5[1]-layout_hori_spaced_button_6[1], 20, button_2[0]-9, button_2[1]-11};
String button_2_text = "Y";
tft.fillCircle(button_2[0], button_2[1], button_2[2], ILI9341_YELLOW);
tft.drawCircle(button_2[0], button_2[1], button_2[2], ILI9341_GREEN);
tft.setCursor(button_2[3], button_2[4]);
tft.print(button_2_text);
int button_3[6] = {button_5[0]+layout_hori_spaced_button_7[0], button_5[1]-layout_hori_spaced_button_7[1], 20, button_3[0]-9, button_3[1]-11};
String button_3_text = "L1";
tft.fillCircle(button_3[0], button_3[1], button_3[2], ILI9341_LIGHTGREY);
tft.drawCircle(button_3[0], button_3[1], button_3[2], ILI9341_GREEN);
tft.setCursor(button_3[3], button_3[4]);
tft.print(button_3_text);
int button_4[6] = {button_5[0]+layout_hori_spaced_button_8[0], button_5[1]-layout_hori_spaced_button_8[1], 20, button_4[0]-9, button_4[1]-11};
String button_4_text = "R1";
tft.fillCircle(button_4[0], button_4[1], button_4[2], ILI9341_LIGHTGREY);
tft.drawCircle(button_4[0], button_4[1], button_4[2], ILI9341_GREEN);
tft.setCursor(button_4[3], button_4[4]);
tft.print(button_4_text);
int rightstick[6] = {button_5[0]-layout_rightstick_scaled[0], button_5[1]-layout_rightstick_scaled[1], 20, rightstick[0]-9, rightstick[1]-11};
String stick_right_text = "RS";
tft.fillCircle(rightstick[0], rightstick[1], rightstick[2], ILI9341_LIGHTGREY);
tft.drawCircle(rightstick[0], rightstick[1], rightstick[2], ILI9341_GREEN);
tft.setCursor(rightstick[3], rightstick[4]);
tft.print(stick_right_text);
int leftstick1[6] = {button_5[0]+layout_leftstick1_scaled[0], button_5[1]+layout_leftstick1_scaled[1], 20, leftstick1[0]-9, leftstick1[1]-11};
String leftstick1_text = "LS";
tft.fillCircle(leftstick1[0], leftstick1[1], leftstick1[2], ILI9341_LIGHTGREY);
tft.drawCircle(leftstick1[0], leftstick1[1], leftstick1[2], ILI9341_GREEN);
tft.setCursor(leftstick1[3], leftstick1[4]);
tft.print(leftstick1_text);
int leftstick2[6] = {button_5[0]+layout_leftstick2_scaled[0], button_5[1]+layout_leftstick2_scaled[1], 20, leftstick2[0]-9, leftstick2[1]-11};
String leftstick2_text = "DP";
tft.fillCircle(leftstick2[0], leftstick2[1], leftstick2[2], ILI9341_LIGHTGREY);
tft.drawCircle(leftstick2[0], leftstick2[1], leftstick2[2], ILI9341_GREEN);
tft.setCursor(leftstick2[3], leftstick2[4]);
tft.print(leftstick2_text);
int button_select[6] = {button_5[0]+layout_button_select_scaled[0], button_5[1]+layout_button_select_scaled[1], 20, button_select[0]-9, button_select[1]-11};
String button_select_text = "SL";
tft.fillCircle(button_select[0], button_select[1], button_select[2], ILI9341_LIGHTGREY);
tft.drawCircle(button_select[0], button_select[1], button_select[2], ILI9341_GREEN);
tft.setCursor(button_select[3], button_select[4]);
tft.print(button_select_text);
int button_start[6] = {button_5[0]+layout_button_start_scaled[0], button_5[1]+layout_button_start_scaled[1], 20, button_start[0]-9, button_start[1]-11};
String button_start_text = "ST";
tft.fillCircle(button_start[0], button_start[1], button_start[2], ILI9341_LIGHTGREY);
tft.drawCircle(button_start[0], button_start[1], button_start[2], ILI9341_GREEN);
tft.setCursor(button_start[3], button_start[4]);
tft.print(button_start_text);
int trackball[6] = {button_5[0]+layout_trackball_scaled[0], button_5[1]+layout_trackball_scaled[1], 20, trackball[0]-9, trackball[1]-11};
String trackball_text = "M";
tft.fillCircle(trackball[0], trackball[1], trackball[2], ILI9341_LIGHTGREY);
tft.drawCircle(trackball[0], trackball[1], trackball[2], ILI9341_GREEN);
tft.setCursor(trackball[3], trackball[4]);
tft.print(trackball_text);
//int button_8[6] = {190, 90, 20, button_8[0]-9, button_8[1]-11};
int menu[6] = {15, 210, 20, button_8[0]-9, button_8[1]-11};
//tft.drawCircle(button_8[0], button_8[1], button_8[2], ILI9341_WHITE);
tft.setCursor(menu[0], menu[1]);
tft.setTextSize(3);
tft.setTextColor(ILI9341_DARKGREEN);
String MENU = "Standard Layout";
// tft.drawCircle(button_8[0], button_8[1], button_8[2], ILI9341_WHITE);
//tft.setCursor(button_8[3], button_8[4]);
tft.print(MENU);
/*tft.begin();
tft.setRotation(1);
tft.fillScreen(ILI9341_BLACK);
tft.drawCircle(40, 40, 20, ILI9341_WHITE);
tft.drawChar(31, 29, 'X', ILI9341_WHITE, ILI9341_BLACK,3);
tft.drawCircle(90, 40, 20, ILI9341_WHITE);
tft.drawChar(81, 29, 'Y', ILI9341_WHITE, ILI9341_BLACK,3);
tft.drawCircle(140, 40, 20, ILI9341_WHITE);
tft.drawChar(131, 29, "L1", ILI9341_WHITE, ILI9341_BLACK,3);
tft.drawCircle(190, 40, 20, ILI9341_WHITE);
tft.drawChar(181, 29, 'R', ILI9341_WHITE, ILI9341_BLACK,3);
tft.drawCircle(40, 90, 20, ILI9341_WHITE);
tft.drawChar(31, 79, 'A', ILI9341_WHITE, ILI9341_BLACK,3);
tft.drawCircle(90, 90, 20, ILI9341_WHITE);
tft.drawChar(81, 79, 'B', ILI9341_WHITE, ILI9341_BLACK,3);
tft.drawCircle(140, 90, 20, ILI9341_WHITE);
tft.drawChar(31, 79, 'A', ILI9341_WHITE, ILI9341_BLACK,3);
tft.drawCircle(190, 90, 20, ILI9341_WHITE);
tft.drawChar(31, 79, 'A', ILI9341_WHITE, ILI9341_BLACK,3);*/
}
void loop() {
//tft.fillScreen(ILI9341_BLACK);
//draw_button("A", layout_hori_spaced_button_1[0], layout_hori_spaced_button_1[1], 180, 130, 9, 11, ILI9341_PINK, ILI9341_WHITE);
//delay(100000);
}
//function inputs - text, x, y, x_offset, y_offset, text_x_offset, text_y_offset, fill_color, circle_color
void draw_button(String text, int x, int y, int x_offset, int y_offset, int text_x_offset, int text_y_offset, unsigned long fill_color, unsigned long circle_color) {
int button_5[6] = {x+x_offset, y+y_offset, 20, button_5[0]-text_x_offset, button_5[1]-text_y_offset};
String button_5_text = "A";
tft.fillCircle(button_5[0], button_5[1], button_5[2], fill_color);
tft.drawCircle(button_5[0], button_5[1], button_5[2], circle_color);
tft.setCursor(button_5[3], button_5[4]);
tft.print(button_5_text);
}