#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);
}