Creare menu touch con Mega2560 e tft Kuman R328.

Salve, prima di presentare il mio primo quesito faccio una mia breve presentazione,
Lavoro in campo indutriale ho sempre praticato l'Elettronica a livello obbistico ho lavorato parecchio con i PLC e da qualche tempo mi sono appassionato ad Arduino di cui non ho grande conoscenza scrivo semplici codice e riesco a modificare quelli un pò più complessi detto ciò passo al soggetto del post, mi servirebbe uno codice di partenza per creare una pagina menu con dei pulsanti touch collegate ad altre pagine.

Grazie

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: ... e leggi con attenzione il punto 16.1 del suddetto regolamento ...

ciao questo è quello che ho creato io, fai conto che ho fatto una schermata iniziale con 4 pulsanti e quando clicco su uno di questi mi apre un relè preciso, non so ma magari ti è di aiuto è un anno che ci lavoro e piano piano sto capendo sempre di più...ti consiglio di leggere anche le istruzioni "print" e poi anche le istruzioni "if" Arduino Reference - Arduino Reference

io ho uno schermo differente dal tuo quindi avrai bisogno delle giuste librerie che magari non hanno i stessi comandi dei miei...

//CONTROLLO VALVOLE STALLA
#include <Adafruit_GFX.h>    
#include <Adafruit_TFTLCD.h>  
#include <TouchScreen.h>     

// Pines necesarios para los 4 pines del panel tactil
#define YP A1 // Pin analogico A1 para ADC
#define XM A2 // Pin analogico A2 para ADC
#define YM 7 
#define XP 6 

// Definimos la presion máxima y minima que podemos realizar sobre el panel
#define MINPRESSURE 1
#define MAXPRESSURE 1000

// Para mejor precision de la presion realizada, es necesario 
// medir la resistencia entre los pines X+ y X-.
// En Shield TFT 2.4" LCD se mide entre los pines A2 y 6
// Instancia del panel tactil (Pin XP, YP, XM, YM, Resistencia del panel) 
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 364); 

short TS_MINX = 150; // Coordenadas del panel tactil para delimitar
short TS_MINY = 120; // el tamaño de la zona donde podemos presionar
short TS_MAXX = 850; // y que coincida con el tamaño del LCD
short TS_MAXY = 891; 

#define LCD_CS A3   // Definimos los pines del LCD
#define LCD_CD A2   // para poder visualizar elementos graficos
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

#define BLACK   0x0000  // Definimos los colores 
#define BLUE    0x001F  // que utilizaremos para 
#define RED     0xF800  // el texto y los elementos graficos
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Instancia LCD 

int X; // Variables que almacenaran la coordenada
int Y; // X, Y donde presionemos y la variable Z 
int Z; // almacenara la presion realizada

int a = 0;          // variable "flag" para control rebotes
int b = 0;
int c = 0;
int d = 0;


int  val = 0;               //pin di input 
int  valb = 0;

#define V1 16
#define V2 17
#define V3 18 
#define VAA 19   //alimentazione valvole



void setup(void) 
{ 
 tft.begin(0x9341); 
 
 

 pinMode(16, OUTPUT); //V1
 pinMode(17, OUTPUT); //V2
 pinMode(18, OUTPUT);  //V3
 pinMode(19, OUTPUT);  //VAA

 

 digitalWrite(V1, LOW);
 digitalWrite(V2, HIGH);
 digitalWrite(V3, HIGH);
 digitalWrite(VAA, LOW);


 tft.fillScreen(WHITE);
 tft.setRotation(0);

 tft.setCursor(20,10);  
 tft.setTextSize(1);    
 tft.setTextColor(RED); 
 tft.println("BY DANIELE PASSINI 22/10/18 V 1");
 
 tft.drawRect(40, 20, 160, 60, RED); // BOTTONE1

 tft.setCursor(60,35);  
 tft.setTextSize(2);    
 tft.setTextColor(BLUE); 
 tft.println("V1 APERTA");

 tft.drawRect(40, 100, 160, 60,RED); // bottone 2
 
 tft.setCursor(60,115); 
 tft.setTextSize(2);    
 tft.setTextColor(BLUE);
 tft.println("V2 CHIUSA"); 


 
 tft.drawRect(40, 180, 160, 60,RED); // bottone 3
 
 tft.setCursor(60,195);  
 tft.setTextSize(2);    
 tft.setTextColor(BLUE); 
 tft.println("V3 CHIUSA"); 


 tft.drawRect(40, 260, 160, 60,RED); // bottone 3
 
 tft.setCursor(60,275);  
 tft.setTextSize(2);   
 tft.setTextColor(BLUE);
 tft.println("PROGVALVOLE"); 
 
 delay(3000);
 digitalWrite(VAA, HIGH);
 
 
}

void loop()
{ 
 lecturaPanel(); // lettura del pannello

        // V1
    
   if((X > 40 && X < 200) && (Y > 20 && Y <60) && (Z > MINPRESSURE && Z < MAXPRESSURE)) 
   {
   if (d == 0) 
     {
       
   tft.fillScreen(WHITE);
   tft.setRotation(0);   
     tft.setCursor(20,10);  
     tft.setTextSize(1);    
     tft.setTextColor(RED); 
     tft.println("BY DANIELE PASSINI 22/10/18 V 1");
 
     tft.drawRect(40, 20, 160, 60, RED); // BOTTONE1

     tft.setCursor(60,35);  
     tft.setTextSize(2);    
     tft.setTextColor(BLUE); 
     tft.println("V1 APERTA");

     tft.drawRect(40, 100, 160, 60,RED); // bottone 2
 
     tft.setCursor(60,115); 
     tft.setTextSize(2);    
     tft.setTextColor(BLUE);
     tft.println("V2 CHIUSA"); 


 
     tft.drawRect(40, 180, 160, 60,RED); // bottone 3
 
     tft.setCursor(60,195);  
     tft.setTextSize(2);    
     tft.setTextColor(BLUE); 
     tft.println("V3 CHIUSA"); 


     tft.drawRect(40, 260, 160, 60,RED); // bottone 3
 
     tft.setCursor(60,275);  
     tft.setTextSize(2);   
     tft.setTextColor(BLUE);
      tft.println("PROGVALVOLE"); 
      
    
     delay(150);
    digitalWrite(VAA, LOW);
    delay(150);   
    digitalWrite(V1, LOW);  //V1

    delay(3000);            //ASPETTO LA APERTURA
    digitalWrite(V2, HIGH);  //CHIUDO TUTTO
    digitalWrite(V3, HIGH);
    delay(3000);             //ASPETTO CHIUSURA
    digitalWrite(VAA, HIGH);  //TOLGO ALIMENTAZIONE ALLE ELETTROVALVOLE

    delay(7000);
    digitalWrite(VAA, HIGH);

      } 
} 
   
   // V2
    
   if((X > 40 && X < 200) && (Y > 100 && Y <150) && (Z > MINPRESSURE && Z < MAXPRESSURE)) 
   {
   if (d == 0) 
     {
       
   tft.fillScreen(WHITE);
   tft.setRotation(0);   
     tft.setCursor(20,10);  
     tft.setTextSize(1);    
     tft.setTextColor(RED); 
     tft.println("BY DANIELE PASSINI 22/10/18 V 1");
 
     tft.drawRect(40, 20, 160, 60, RED); // BOTTONE1

     tft.setCursor(60,35);  
     tft.setTextSize(2);    
     tft.setTextColor(BLUE); 
     tft.println("V1 CHIUSA");

     tft.drawRect(40, 100, 160, 60,RED); // bottone 2
 
     tft.setCursor(60,115); 
     tft.setTextSize(2);    
     tft.setTextColor(BLUE);
     tft.println("V2 APERTA"); 


 
     tft.drawRect(40, 180, 160, 60,RED); // bottone 3
 
     tft.setCursor(60,195);  
     tft.setTextSize(2);    
     tft.setTextColor(BLUE); 
     tft.println("V3 CHIUSA"); 


     tft.drawRect(40, 260, 160, 60,RED); // bottone 3
 
     tft.setCursor(60,275);  
     tft.setTextSize(2);   
     tft.setTextColor(BLUE);
      tft.println("PROGVALVOLE"); 
      
    
     delay(150);
     digitalWrite(VAA, LOW);
    delay(150);
     digitalWrite(V2, LOW);
     
     delay(3000);
        
    digitalWrite(V1, HIGH);  //V1
                    
    digitalWrite(V3, HIGH);
    delay(3000);             //ASPETTO CHIUSURA
    digitalWrite(VAA, HIGH);  //TOLGO ALIMENTAZIONE ALLE ELETTROVALVOLE
    delay(3000);
    digitalWrite(VAA, HIGH);
    

      } 
}

  //V3
      
if((X > 40 && X < 200) && (Y > 180 && Y <230) && (Z > MINPRESSURE && Z < MAXPRESSURE)) 
   {
   if (d == 0) 
     {
       
   tft.fillScreen(WHITE);
   tft.setRotation(0);   
     tft.setCursor(20,10);  
     tft.setTextSize(1);    
     tft.setTextColor(RED); 
     tft.println("BY DANIELE PASSINI 22/10/18 V 1");
 
     tft.drawRect(40, 20, 160, 60, RED); // BOTTONE1

     tft.setCursor(60,35);  
     tft.setTextSize(2);    
     tft.setTextColor(BLUE); 
     tft.println("V1 CHIUSA");

     tft.drawRect(40, 100, 160, 60,RED); // bottone 2
 
     tft.setCursor(60,115); 
     tft.setTextSize(2);    
     tft.setTextColor(BLUE);
     tft.println("V2 CHIUSA"); 


 
     tft.drawRect(40, 180, 160, 60,RED); // bottone 3
 
     tft.setCursor(60,195);  
     tft.setTextSize(2);    
     tft.setTextColor(BLUE); 
     tft.println("V3 APERTA"); 


     tft.drawRect(40, 260, 160, 60,RED); // bottone 3
 
     tft.setCursor(60,275);  
     tft.setTextSize(2);   
     tft.setTextColor(BLUE);
      tft.println("PROGVALVOLE"); 
      
    
    delay(150);

    digitalWrite(VAA, LOW);
    delay(150);

     
    digitalWrite(V3, LOW); 
    delay(3000);     //tempo
    digitalWrite(V1, HIGH);
      
    digitalWrite(V2, HIGH); 
    delay(3000);             //ASPETTO CHIUSURA
    digitalWrite(VAA, HIGH);  //TOLGO ALIMENTAZIONE ALLE ELETTROVALVOLE
    delay(3000);
    digitalWrite(VAA, HIGH); 
    
} 
}



}
void lecturaPanel()
{
   digitalWrite(13, HIGH); 
   TSPoint p = ts.getPoint(); // Realizamos lectura de las coordenadas
   digitalWrite(13, LOW);
 
   pinMode(XM, OUTPUT); // La librería utiliza estos pines como entrada y salida
   pinMode(YP, OUTPUT); // por lo que es necesario declararlos como salida justo
                        // despues de realizar una lectura de coordenadas.    
 
   // Mapeamos los valores analogicos leidos del panel tactil (0-1023)
   // y los convertimos en valor correspondiente a la medida del LCD 320x240
   X = map(p.x, TS_MAXX, TS_MINX, tft.width(), 0);
   Y = map(p.y, TS_MAXY, TS_MINY, tft.height(), 0);
   Z = p.z;
}


/code]

Grazie,
è un ottimo punto di partenza, questo week end ci smanetto un pò, ti terrò aggiornato sui progressi.
Ciao