#include <Adafruit_ILI9341.h> // Knižnica pre displej ILI9341
#include <Adafruit_FT6206.h> // Knižnica pre dotykový panel FT6206
// Inicializácia dotykového panela
Adafruit_FT6206 touch = Adafruit_FT6206();
// Definícia pinov pre displej
#define CS 15 // Pin pre Chip Select (CS)
#define DC 2 // Pin pre Data/Command (DC)
#define RST 4 // Pin pre Reset (RST)
// Nastavenie šírky a výšky displeja
#define SCREEN_WIDTH 240
#define SCREEN_HEIGHT 320
Adafruit_ILI9341 tft = Adafruit_ILI9341(CS, DC, RST);
int counter = 0; // Počiatočná hodnota počítadla
// Definícia citlivej oblasti v spodnej časti displeja
int sensitiveYStart = SCREEN_HEIGHT - 50; // Začiatok citlivej oblasti (50 px nad spodkom)
int sensitiveYEnd = SCREEN_HEIGHT; // Koniec citlivej oblasti (spodná hrana)
void setup() {
Serial.begin(115200); // Inicializácia sériovej komunikácie pre debuggovanie
tft.begin(); // Inicializácia displeja
tft.fillScreen(ILI9341_BLUE); // Vyplnenie obrazovky modrou farbou
tft.setTextColor(ILI9341_WHITE, ILI9341_BLUE); // Nastavenie textovej farby (biely text na modrom pozadí)
tft.setRotation(0); // Nastavenie orientácie displeja na výšku
// Inicializácia dotykového panela
if (!touch.begin(40)) {
Serial.println("Dotykový panel nefunguje!");
while (1); // Zastaví program, ak dotykový panel nefunguje
}
// Zobrazenie počiatočného textu
tft.setCursor(50, 50); // Nastavenie pozície kurzora
tft.setTextSize(2); // Nastavenie veľkosti textu
tft.print("Count: ");
tft.print(counter);
// Zvýraznenie citlivej oblasti (voliteľné)
tft.fillRect(0, sensitiveYStart, SCREEN_WIDTH, 50, ILI9341_DARKGREY);
}
void loop() {
// Kontrola dotyku
if (touch.touched()) {
TS_Point p = touch.getPoint(); // Získanie bodu dotyku
// Prepočet súradníc podľa orientácie displeja (na výšku)
int x = p.x; // Súradnice X zostávajú nezmenené
int y = SCREEN_HEIGHT - p.y; // Súradnice Y sa invertujú podľa orientácie displeja
// Debugging: Zobrazenie súradníc v sériovom monitore
Serial.print("X: ");
Serial.print(x);
Serial.print(" Y: ");
Serial.println(y);
// Kontrola, či sa dotyk nachádza v citlivej oblasti
if (y >= sensitiveYStart && y <= sensitiveYEnd) {
counter++; // Pripočítanie čísla
Serial.print("Counter: ");
Serial.println(counter);
// Aktualizácia textu na displeji
tft.fillRect(50, 50, 140, 20, ILI9341_BLUE); // Vymaže predchádzajúci text
tft.setCursor(50, 50);
tft.setTextSize(2);
tft.print("Count: ");
tft.print(counter);
}
}
delay(100); // Malé oneskorenie
}
Loading
ili9341-cap-touch
ili9341-cap-touch