#include <Servo.h>
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"

Servo servo1;
Servo servo2;

#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

void setup() 
{
  Serial.begin(9600);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);

  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);

  servo1.attach(6);
  servo2.attach(5);

  ///////////


  tft.begin();

  //  tft.setCursor(26, 120);
  //  tft.setTextColor(ILI9341_RED);
  //  tft.setTextSize(3);
  //  tft.println("Hello, TFT!");

  //  tft.setCursor(20, 10);
  //  tft.setTextColor(ILI9341_GREEN);
  //  tft.setTextSize(1);
  //  tft.println("I can has colors?");


}

void loop() 
{
  int flip = digitalRead(4);

  int push1 = digitalRead(2);
  int push2 = digitalRead(3);
  int up1 = analogRead(A0);
  int up2 = analogRead(A1);
  int side1 = analogRead(A2);
  int side2 = analogRead(A3);

  int virt1 = map(up1, 0, 1023, 0, 180);
  int virt2 = map(up2, 0, 1023, 0, 180);
  int horz1 = map(side1, 0, 1023, 0, 180);
  int horz2 = map(side2, 0, 1023, 0, 180);

  servo1.write(virt2);
  servo2.write(horz2);


  tft.setCursor(20, 10);
  tft.setTextColor(ILI9341_WHITE);
  tft.setTextSize(2);
  tft.print(up2);
  tft.print(" ");
  tft.print(side2);
  tft.print(" ");
  tft.print(push2);
  
  tft.setCursor(20, 30);
  tft.setTextColor(ILI9341_WHITE);
  tft.setTextSize(2);
  tft.print(up1);
  tft.print(" ");
  tft.print(side1);
  tft.print(" ");
  tft.print(push1);


  if(flip == HIGH) //activate the serial readout
  {
    Serial.print(up1);
    Serial.print(" ");
    Serial.print(up2);
    Serial.print(" ");
    Serial.print(side1);
    Serial.print(" ");
    Serial.print(side2);
    Serial.print(" ");
    Serial.print(push1);
    Serial.print(push2);
    Serial.print('\n');


    delay(200);
  }
  
  if(up1 == 1023)
  {
    digitalWrite(7, HIGH);
  }
  if(up1 == 0)
  {
    digitalWrite(8, HIGH);
  }
  if(up1 == 512)
  {
    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
  }
  delay(250);
  tft.setCursor(20, 10);
  tft.setTextColor(ILI9341_BLACK);
  tft.setTextSize(2);
  tft.print(up2);
  tft.print(" ");
  tft.print(side2);
  tft.print(" ");
  tft.print(push2);
  
  tft.setCursor(20, 30);
  tft.setTextColor(ILI9341_BLACK);
  tft.setTextSize(2);
  tft.print(up1);
  tft.print(" ");
  tft.print(side1);
  tft.print(" ");
  tft.print(push1);

}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
joystick1:VCC
joystick1:VERT
joystick1:HORZ
joystick1:SEL
joystick1:GND
joystick2:VCC
joystick2:VERT
joystick2:HORZ
joystick2:SEL
joystick2:GND
servo1:GND
servo1:V+
servo1:PWM
servo2:GND
servo2:V+
servo2:PWM
sw1:1
sw1:2
sw1:3
r1:1
r1:2
lcd3:VCC
lcd3:GND
lcd3:CS
lcd3:RST
lcd3:D/C
lcd3:MOSI
lcd3:SCK
lcd3:LED
lcd3:MISO
rgb1:R
rgb1:COM
rgb1:G
rgb1:B