#include <Adafruit_GFX.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_ILI9341.h>
#include <Adafruit_FT6206.h>
// Pin tanımlamaları
#define TFT_CS 13
#define TFT_DC 11
#define TFT_RST 12
#define LED 8 // LED pini tanımlandı
// Ekran ve dokunmatik ekran nesneleri
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
Adafruit_FT6206 ts = Adafruit_FT6206();
boolean RecordOn = false;
// Düğme ve çerçeve boyutları
#define FRAME_X 210
#define FRAME_Y 180
#define FRAME_W 100
#define FRAME_H 50
#define REDBUTTON_X FRAME_X
#define REDBUTTON_Y FRAME_Y
#define REDBUTTON_W (FRAME_W / 2)
#define REDBUTTON_H FRAME_H
#define GREENBUTTON_X (REDBUTTON_X + REDBUTTON_W)
#define GREENBUTTON_Y FRAME_Y
#define GREENBUTTON_W (FRAME_W / 2)
#define GREENBUTTON_H FRAME_H
void drawFrame()
{
tft.drawRect(FRAME_X, FRAME_Y, FRAME_W, FRAME_H, ILI9341_BLACK);
}
void redBtn()
{
tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_RED);
tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_BLUE);
drawFrame();
tft.setCursor(GREENBUTTON_X + 6, GREENBUTTON_Y + (GREENBUTTON_H / 2) - 8);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("ON");
RecordOn = false;
}
void greenBtn()
{
tft.fillRect(GREENBUTTON_X, GREENBUTTON_Y, GREENBUTTON_W, GREENBUTTON_H, ILI9341_GREEN);
tft.fillRect(REDBUTTON_X, REDBUTTON_Y, REDBUTTON_W, REDBUTTON_H, ILI9341_BLUE);
drawFrame();
tft.setCursor(REDBUTTON_X + 6, REDBUTTON_Y + (REDBUTTON_H / 2) - 8);
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
tft.println("OFF");
RecordOn = true;
}
void setup(void)
{
pinMode(LED, OUTPUT);
Serial.begin(9600);
tft.begin();
if (!ts.begin(40))
{
Serial.println("Unable to start touchscreen.");
}
else
{
Serial.println("Touchscreen started.");
}
tft.fillScreen(ILI9341_CYAN);
tft.setRotation(3); // Ekranı döndür
redBtn(); // Başlangıçta kırmızı düğme göster
}
void loop()
{
// Dokunmatik ekranın dokunulup dokunulmadığını kontrol et
if (ts.touched())
{
// Dokunma noktasını al
TS_Point p = ts.getPoint();
// Koordinat sistemini ekran ile uyumlu hale getir
p.x = map(p.x, 0, 240, 240, 0);
p.y = map(p.y, 0, 320, 320, 0);
int y = tft.height() - p.x;
int x = p.y;
if (RecordOn)
{
if ((x > REDBUTTON_X) && (x < (REDBUTTON_X + REDBUTTON_W)))
{
if ((y > REDBUTTON_Y) && (y <= (REDBUTTON_Y + REDBUTTON_H)))
{
Serial.println("Red btn hit");
digitalWrite(LED, LOW); // LED'yi kapat
redBtn(); // Kırmızı düğme fonksiyonunu çağır
}
}
}
else // RecordOn == false
{
if ((x > GREENBUTTON_X) && (x < (GREENBUTTON_X + GREENBUTTON_W)))
{
if ((y > GREENBUTTON_Y) && (y <= (GREENBUTTON_Y + GREENBUTTON_H)))
{
Serial.println("Green btn hit");
digitalWrite(LED, HIGH); // LED'yi aç
greenBtn(); // Yeşil düğme fonksiyonunu çağır
}
}
}
Serial.println(RecordOn);
delay(100); // Dokunma okuma sıklığını sınırlamak için kısa bir gecikme
}
}