#include<Adafruit_GFX.h>
#include <SPI.h>
#include <Adafruit_ILI9341.h>
#define tftDC 49
#define tftCS 53
#define sygnal A0

#define BLACK    0x0000
#define BLUE     0x001F
#define RED      0xF800
#define GREEN    0x07E0
#define CYAN     0x07FF
#define MAGENTA  0xF81F
#define YELLOW   0xFFE0 
#define WHITE    0xFFFF

const double Pi = 3.14;

Adafruit_ILI9341 tft = Adafruit_ILI9341(tftCS, tftDC);

void setup() {
  tft.begin();
  tft.setRotation(3);
  Serial.begin(9600);
  //Serial.println(tft.width());
  //Serial.println(tft.height());
  
  // put your setup code here, to run once:
  
 /* tft.fillScreen(GREEN);
  tft.setRotation(3); //dla mnie najlepiej zaminic y i x miejscami
  tft.fillRect(0,0, 10, 10, RED);
  tft.fillRect(0,230, 10, 10, BLACK);
  tft.fillRect(tft.width()/2, tft.height() - 10, 10, 10, BLUE);
  tft.fillRect(230,310, 10, 10, YELLOW);
  tft.setCursor(0,0);
  tft.setTextSize(2);
  tft.setTextColor(RED);
  tft.print("EEEEEEE");*/
  //setScreen();
  
}

void loop() {
  // put your main code here, to run repeatedly:
  int cisnienie = analogRead(sygnal);
  //double nachylenie = cisnienie/1023*Pi;
  setScreen(cisnienie/1023*Pi);
}
void setScreen(double radian)
{
  int width = 40;
  int length = tft.width()/2; // długość wskazówki
  int initialX = tft.width()/2;
  int initialY = tft.height() - width/2;
  tft.fillScreen(WHITE);
  tft.fillCircle(initialX, initialY, length, GREEN);
  tft.fillCircle(initialX, initialY, length - 20, WHITE);
  //double radian = rad;
  //Serial.println(length);
  Serial.println(sin(radian));
  Serial.println(cos(radian));
  double endXX = length*cos(radian);
  double endYY = length*sin(radian);
  double X1 = (width/2)*cos(radian - Pi/2);
  double Y1 = (width/2)*sin(radian - Pi/2);
  int endX = initialX - endXX + 0.5;
  int endY = initialY - endYY + 0.5;
  int X11 = X1 + 0.5;
  int Y11 = Y1 + 0.5; 
  Serial.println(endX);
  Serial.println(endY);
  tft.fillTriangle(initialX - X11, initialY - Y11, initialX + X11, initialY + Y11, endX, endY, BLACK);
  tft.fillCircle(initialX, initialY, width/2, RED);
  Serial.println(radian);
}