collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Hoje às 15:31]


Arame de Estendal por almamater
[Ontem às 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Menu touch  (Lida 3535 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

barrma

  • Visitante
Menu touch
« em: 24 de Janeiro de 2015, 13:14 »
Boa Tarde,

Estou com algumas dificuldades no código para um menu touch.


Criei um botão no inicio que chama outros botões, dois destes ligam e desligam um rele, o outro teria a função de voltar a traz.

Acontece que não sei o que fazer para este voltar ao inicio.

Todas as dicas são bem vindas...

Obrigado

Código: [Seleccione]
#define VT100_MODE  1
 
#include <UTFT.h>  //biblioteca do UTFT fazer download se nao tiver instalado
#include <UTouch.h>  //biblioteca do Touch fazer download se nao tiver instalado
 
// declaração das fontes que serão utilizadas
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
 
UTFT    myGLCD(SSD1289,38,39,40,41); 

UTouch  myTouch(6,5,4,3,2); // pinagem do touch

 
int rele2 = 12; //rele pin 12
 
void setup()
{       pinMode(rele2, OUTPUT); //rele pinv12
    digitalWrite(rele2, HIGH);
 
    myGLCD.InitLCD();
    myGLCD.setFont(SmallFont);
 
    myTouch.InitTouch();
    myTouch.setPrecision(PREC_HI);
 
 
     myGLCD.clrScr(); //limpa o lcd quando carregado novo codigo
       
   
 
    //resolução ecra 320x240
    // desenho do BOTAO MENU
    myGLCD.setColor(16, 78, 139);             //cor azul R,G,B
    myGLCD.fillRoundRect(10, 90, 40, 130);  //função fazer retangulo com cantos redondos  (ponto inicio horizontal,ponto inicio vertical, 319, 239);
    myGLCD.setColor(255, 255, 255);           //cor branco
    myGLCD.drawRoundRect(10, 90, 40, 130);  //função fazer BORDAS retangulo com cantos redondos
    myGLCD.setBackColor(16, 78, 139);
    myGLCD.print("Menu", 14, 100); // myGLCD.print("palavra a escrever", eixo X, eixo Y);
    myGLCD.setBackColor(0, 0, 0);
 
   
   
   
}
 
//------------------------ LOOP --------------------------------------------------
void loop()
{
    int x, y;
 
//---------------- função touch -----------------------------------
// Durante o loop está a ser lido se os pixeis que compõem os botões, estão a ser pressionados.
        if (myTouch.dataAvailable())
        {
            myTouch.read();
            x=myTouch.getX();
            y=myTouch.getY();
 
//botao 1
            if (((y>=90) && (y<=130)) && ((x>=10) && (x<=40)))
            {       
                               
                myGLCD.setColor (255, 0, 0);
                myGLCD.drawRoundRect(10, 90, 40, 130);
 
            } else {
               
                myGLCD.clrScr();
   
 
   
    // desenho do BOTAO ligar
    myGLCD.setColor(16, 78, 139);             //cor azul R,G,B
    myGLCD.fillRoundRect(275, 90, 245, 130);  //função fazer retangulo com cantos redondos  (ponto inicio horizontal,ponto inicio vertical, 319, 239);
    myGLCD.setColor(255, 255, 255);           //cor branco
    myGLCD.drawRoundRect(275, 90, 245, 130);  //função fazer BORDAS retangulo com cantos redondos
    myGLCD.setBackColor(16, 78, 139);
    myGLCD.print("ON", 255, 100); // myGLCD.print("palavra a escrever", eixo X, eixo Y);
    myGLCD.setBackColor(0, 0, 0);
 
    // FAZER O BOTAO desligar
    myGLCD.setColor(16, 78, 139);             //cor azul R,G,B
    myGLCD.fillRoundRect(280, 90, 310, 130); //função fazer retangulo com cantos redondos  (ponto inicio horizontal,ponto inicio vertical, 319, 239);
    myGLCD.setColor(255, 255, 255);           //cor branco
    myGLCD.drawRoundRect(280, 90, 310, 130); //função fazer BORDAS retangulo com cantos redondos
    myGLCD.setBackColor(16, 78, 139);
    myGLCD.print("OFF", 285, 100); // myGLCD.print("palavra a escrever", eixo X, eixo Y);
    myGLCD.setBackColor(0, 0, 0);
   
    // FAZER O BOTAO Voltar
    myGLCD.setColor(64, 64, 128);             //cor azul R,G,B
    myGLCD.fillRoundRect(280, 180, 310, 220); //função fazer retangulo com cantos redondos  (ponto inicio horizontal,ponto inicio vertical, 319, 239);
    myGLCD.setColor(255, 255, 255);           //cor branco
    myGLCD.drawRoundRect(280, 180, 310, 220); //função fazer BORDAS retangulo com cantos redondos
    myGLCD.setBackColor(64, 64, 128);
    myGLCD.print("Voltar", 285, 195); // myGLCD.print("palavra a escrever", eixo X, eixo Y);
    myGLCD.setBackColor(0, 0, 0);
   
    //Botao 1
            if (((y>=90) && (y<=130)) && ((x>=255) && (x<=285)))
            {       digitalWrite(rele2, HIGH);
                               
                myGLCD.setColor (255, 0, 0);
                myGLCD.drawRoundRect(275, 90, 245, 130);
 
            } else {
                                myGLCD.setColor (255,255, 255);
                myGLCD.drawRoundRect(275, 90, 245, 130);
                        }
      //Botao 1.1     
          if (((y>=90) && (y<=130)) && ((x>=290) && (x<=320)))
            {       digitalWrite(rele2, LOW);
                               
                myGLCD.setColor (255, 0, 0);
                myGLCD.drawRoundRect(280, 90, 310, 130);
 
            } else {
                                myGLCD.setColor (255,255, 255);
                myGLCD.drawRoundRect(280, 90, 310, 130);
            }
           
            //Botao Voltar     
          if (((y>=180) && (y<=220)) && ((x>=290) && (x<=320)))
            {       
                               
                myGLCD.setColor (255, 0, 0);
                myGLCD.drawRoundRect(280, 180, 310, 220);
 
            } else {
                                myGLCD.setColor (255,255, 255);
                myGLCD.drawRoundRect(280, 180, 310, 220);
    }                 
                        }
 
 
     
                      }
       
//-----------------------------------------------------------------
        delay(10);
 
    }

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Menu touch
« Responder #1 em: 24 de Janeiro de 2015, 13:38 »
Seguindo a ideia, não precisas de usar funções(apesar de ficar mais bonito, ou não), usas uma função gigante com todo o sistema de menus, e continuas com a coisa de numerar cada sub-menu, o menu base é por exemplo o 0, logo se do 0 foste para o 3 e queres voltar ao 0 simplesmente usas uma variavel para indicar que menu deves desenhar e metes essa variavel a 0 ou a outro valor qualquer, caso tenhas sub-sub menus.
Avr fanboy