Grazie per la risposta, dunque ho visto il link e ho seguito il tuo consiglio ma ancora non ci sono! Posto un esempio con un solo pulsante attivo tanto per vedere la sequenza delle operazioni. Il problema che si presenta è che qualsiasi punto del display tocco, ricarica la pagina, se tocco il pulsante (mappato) mi ricarica la stessa pagina per poi andare alla seguente come giusto. Potresti cortesemente dare uno sguardo?
Grazie in anticipo
#include <Elegoo_GFX.h> // Core graphics library
#include <Elegoo_TFTLCD.h>
#include <TouchScreen.h>
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define MY_BLACK 0x2145
#define MY_RED 0xDAEC
#define MY_GREY 0x52CB
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A3 // must be an analog pin, use "An" notation!
#define YM 8 // can be a digital pin
#define XP 9 // can be a digital pin
#define TS_MINX 120
#define TS_MAXX 900
#define TS_MINY 70
#define TS_MAXY 920
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
#define BUTTONSIZE 40
#define REDBAR_MINX 80
#define GREENBAR_MINX 130
#define BLUEBAR_MINX 210
#define BAR_MINY 30
#define BAR_HEIGHT 260
#define BAR_WIDTH 30
#define MINPRESSURE 10
#define MAXPRESSURE 1000
//int touch = 0;
int prog = 0;
int currentpage;
bool BT=1;
bool HD=1;
bool touch = 0;
void drawHome()
{
//HOME
currentpage=0;
tft.fillScreen(MY_BLACK);
tft.drawRect(0,0,318,240,WHITE);//cornice bianca (distanza sx, top, width,height)
tft.fillRect(1,1, 316, 20, MY_GREY);//Disegno il banner (distanza sx, top, width,height)
tft.setTextColor(YELLOW);//colore del testo giallo
tft.setTextSize(1);//dimensione del font
tft.setCursor(10,7);//mi posiziono per la scrittura sul banner
tft.print("C4P1 - By: Filomeni Maurizio - for EDILTEC");//scrivo
tft.fillRect(50,30, 220, 40, MY_RED);//Disegno il pulsante (distanza sx, top, width,height)
//tft.drawRect(50,80,200,40,MY_RED);
tft.setCursor(82,40);//mi posiziono per la scrittura sul pulsante
tft.setTextColor(WHITE);//colore del testo bianco
tft.setTextSize(3);//dimensione del font
tft.print("Programma");//scrivo
tft.fillRect(50,80, 220, 40, MY_RED);//secondo pulsante come sopra
//tft.drawRect(20,125,200,40,MY_RED);
tft.setCursor(82,90);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("Contatori");
tft.fillRect(50,130, 220, 40, MY_RED);//terzo pulsante come sopra
//tft.drawRect(20,170,200,40,MY_RED);
tft.setCursor(100,140);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("Setting");
tft.fillRect(50,180, 220, 40, MY_RED);//quarto pulsante come sopra
//tft.drawRect(20,215,200,40,MY_RED);
tft.setCursor(90,190);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("Test C4P");
//FINE HOME
}
void drowBTHD(){
tft.fillScreen(MY_BLACK);
tft.drawRect(0,0,318,240,WHITE);//cornice bianca (distanza sx, top, width,height)
tft.fillRect(1,1, 316, 20, MY_GREY);//Disegno il banner (distanza sx, top, width,height)
tft.setTextColor(YELLOW);//colore del testo giallo
tft.setTextSize(1);//dimensione del font
tft.setCursor(10,7);//mi posiziono per la scrittura sul banner
tft.print("C4P1 - By: Filomeni Maurizio - for EDILTEC");//scrivo
tft.fillRect(1,30, 316, 50, MY_GREY);
tft.setCursor(50,35);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.print("Finitura - Densita'");
tft.print("\n");
tft.setTextSize(1);
tft.setTextColor(YELLOW);
tft.print(" Se il prodotto e' standard procedere con il\n");
tft.print(" pulsante NEXT lasciando i campi senza spunta.");
tft.fillRect(20,90, 240, 40, MY_GREY);
//tft.drawRect(20,125,200,40,MY_RED);
tft.setCursor(50,103);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("Battentato");
tft.drawRect(265,90,40,40,MY_RED);//disegno il check box spunta battentato
tft.fillRect(266,91, 38, 38, MY_GREY);
tft.fillRect(20,140, 240, 40, MY_GREY);
tft.setCursor(25,148);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("Alta Densita'");
tft.drawRect(265,140,40,40,MY_RED);//disegno il check box spunta Alta Densità
tft.fillRect(266,141, 38, 38, MY_GREY);
tft.fillRect(20,190, 115, 40, MY_RED);//Disegno pulsante next
tft.setCursor(45,203);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("NEXT");
tft.fillRect(145,190, 115, 40, MY_RED);//Disegno pulsante HOME
tft.setCursor(165,203);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("HOME");
}
void setup() {
Serial.begin(9600);
tft.reset();
tft.begin(0x9341);//driver display
tft.setRotation(3);//set the display diretion(0-3)
tft.drawRect(0,0,318,240,WHITE);
tft.setCursor(90,40);
tft.setTextColor(WHITE);
tft.setTextSize(6);
tft.print("C4P1");
tft.setCursor(40,100);
tft.setTextSize(3);
tft.print(" for EDILTEC");
tft.print("\n");
tft.print("\n");
tft.setCursor(50,130);
tft.setTextSize(2);
tft.setTextColor(YELLOW);
tft.print("project and program");
tft.setCursor(80,150);
tft.print("By:Filomeni M.");
tft.print("\n");
tft.setTextSize(2);
tft.setTextColor(WHITE);
tft.setCursor(50, 190);
tft.print("Loading sistem...");
tft.print("\n");
//loading bar
for (int i; i < 280; i++)
{
tft.fillRect(BAR_MINY - 10, BLUEBAR_MINX, i, 10, RED);
tft.setCursor(30, 270);
delay(7);
}
drawHome();
}
void loop() {
TSPoint p = ts.getPoint();
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(),0);//tft.width 320px
p.y = map(p.y, TS_MINY, TS_MAXY, 0,tft.height());//tft.height 240px
Serial.print("("); Serial.print(p.x);
Serial.print(", "); Serial.print(p.y);
Serial.println(")");
if(currentpage==0){
//HOME
currentpage=0;
drawHome();
if (p.x > 32 && p.x < 267 && p.y > 175 && p.y < 208) {
currentpage=1;
}
}
if(currentpage==1){
drowBTHD();
}
}
}