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
#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);
}