collapse

* Links de Robótica

* Posts Recentes

Ajuda Projecto IR / RF por Njay
[Ontem às 13:24]


Medir Agua que está no Poço por edeweld
[18 de Outubro de 2017, 09:15]


Equipar laboratorio por LVirtual
[13 de Outubro de 2017, 08:34]


Arranjo de Berbequim por jm_araujo
[13 de Outubro de 2017, 08:34]


Escolher ligações por dropes
[08 de Outubro de 2017, 23:26]


Perfis V-Slot vs C-Beam vs Bosch vs 8020 por senso
[08 de Outubro de 2017, 18:22]


Ideias para construir um quadrúpede simples por Njay
[07 de Outubro de 2017, 22:12]


Meu projecto - Arm Robot com arduino por Diogo Bento
[05 de Outubro de 2017, 20:54]


Alimentar arduino nano com 12V por helderjsd
[05 de Outubro de 2017, 16:26]


Compra Colectiva RS-Amidata por Hugu
[02 de Outubro de 2017, 20:20]

Autor Tópico: Menu touch  (Lida 1152 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.398
  • 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