#include <Adafruit_GFX.h>      // Library grafis untuk ILI9341
#include <Adafruit_ILI9341.h>  // Library untuk layar ILI9341
#include <Adafruit_FT6206.h>   // Library untuk touch panel capacitive FT6206

// Pin untuk SPI dan TFT ILI9341
#define TFT_CS 15
#define TFT_DC 2
#define TFT_RST 4

// Inisialisasi objek ILI9341 dan touch screen
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
Adafruit_FT6206 ts = Adafruit_FT6206();

void setup() {
  Serial.begin(115200);
  // Inisialisasi TFT
  tft.begin();
  tft.setRotation(1);  // Atur rotasi layar (sesuaikan sesuai orientasi yang diinginkan)
  tft.fillScreen(ILI9341_BLACK);  // Bersihkan layar dengan warna hitam

  // Inisialisasi touch panel
  if (!ts.begin(40)) { // Sensitivitas touch panel
    Serial.println("Touchscreen tidak terdeteksi!");
    while (1);
  }
  Serial.println("Touchscreen siap!");
}

void loop() {
  // Periksa apakah ada input sentuhan
  if (ts.touched()) {
    // Jika ada input sentuhan, baca posisi x dan y
    TS_Point p = ts.getPoint();

    // Ubah koordinat agar sesuai dengan orientasi layar
    int x = map(p.y, 0, 240, 0, tft.width());
    int y = map(p.x, 0, 320, 0, tft.height());

    // Tampilkan informasi koordinat yang ditekan
    Serial.print("X: "); Serial.print(x);
    Serial.print(" Y: "); Serial.println(y);

    // Gambarkan kotak di posisi yang ditekan
    drawSquare(x*320/426, (180-y)*240/180);
  }
  delay(50); // Tambahkan sedikit delay untuk menghindari pembacaan berulang terlalu cepat
}

// Fungsi untuk menggambar kotak di posisi yang ditekan
void drawSquare(int x, int y) {
  int size = 20;  // Ukuran kotak

  // Gambarkan kotak dengan pusat di posisi (x, y)
  tft.fillRect(x - size / 2, y - size / 2, size, size, ILI9341_RED);
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
lcd1:VCC
lcd1:GND
lcd1:CS
lcd1:RST
lcd1:D/C
lcd1:MOSI
lcd1:SCK
lcd1:LED
lcd1:MISO
lcd1:SCL
lcd1:SDA