collapse

* Links de Robótica

* Posts Recentes

Printer 3D barata por andre_f_carvalho
[Hoje às 13:09]


Procuro resistências 220 Ohm de 1% por brunus
[02 de Dezembro de 2016, 15:50]


Package de cond 10uF 35V smd? por KammutierSpule
[02 de Dezembro de 2016, 11:19]


Videos hipnoticos de mecanica industrial por TigPT
[02 de Dezembro de 2016, 00:07]


FPV Drone Racing? por brunus
[02 de Dezembro de 2016, 00:00]


Decodificar cabo por Hugu
[01 de Dezembro de 2016, 23:11]


Ajuda para replicar e reparar um Dimmer por brunus
[30 de Novembro de 2016, 23:23]


Adaptar impressora 3D a Drill Maschine por Hugu
[30 de Novembro de 2016, 23:20]


Módulo gsm por dio123
[30 de Novembro de 2016, 13:39]


RAM SO-DIMM 256 MB por Hugu
[29 de Novembro de 2016, 22:52]

Autor Tópico: Menu touch  (Lida 908 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: 8.988
  • 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