Saudações a todos.

Estou a tentar fazer um Remote Control integrado no Arduino Mega com TFT 3.2" para controlar a TV, a Box da parabólica e uma fita LED.

O projecto funciona bem via Serial mas estou com dificuldades em adaptá-lo ao TFT devido aos fracos conhecimentos de linguagem C.

Os menus estão feitos bem como o que quero que cada botão faça mas, a transição de menus é que não funciona bem.

Alguma ajuda?

Deixo o sketch para analizarem e melhorarem.

Nas teclas de ON e OFF, gostaria de fazer só com 1 botão que mudasse de cor quando ligado ou desligado em vez de ocupar espaço com 2 botões.

Exibições: 1053

Anexos

Responder esta

Respostas a este tópico

Também estou aprendendo Sketch.

E nunca mexi com esse TFT.

Qual seria o problema ? A tela inicial funciona OK, não é?

Após selecionar uma opção que a tela apresenta problema?

Será quer teria que inicializar o TFT sempre que mudar de tela, ou não?

myGLCD.InitLCD(PORTRAIT);
myGLCD.clrScr();
myTouch.InitTouch(PORTRAIT);
myTouch.setPrecision(PREC_MEDIUM);
myButtons.setTextFont(BigFont);

Eu faria um teste sem limpar a tela - clrscr - ou fica tudo atrapalhado?

:(, pois é... mesmo com essa alteração , não resulta.

Se no Void Setup começar com outro menu, a tela aparece como eu quero.

Quando mudo da tela inicial para a tela TV, passa mas fica bloqueado e assim sucessivamente.

Vou começar de inicio e tentar fazer as telas só com 1 ou 2 botões para ver se se torna mais fácil de dar com o gato!

Obrigado na mesma, caro colega

Opa , acho que o problema deve ocorrer ao chamar void INICIAL()

Sugiro que faça um teste simplificado com a seleção de TV por exemplo.

Dentro do menu TV coloque somente uma seleção para teste.

já fiz isso e o erro continua.

Não consegui intercalar a função switch.. case... (falta de conhecimento)

Vou pesquisar mais pela net e ver se descubro alguma coisa.

De qualquer maneira, os meus sinceros agradecimentos.

Assim que souber de mais alguma coisa, deixo aqui.

Entretanto se alguém puder ajudar, será bem vindo.

Graças ao excelente trabalho do amigo Adelino João, consegui com que o projecto funcionasse.

Fica sketch em anexo

Anexos

amigo o senhor poderia coloca o arquivo de novo, porque não estou conseguindo baixar

tambem estou com problema com um TFT 3.2"

Obrigado

Será que agora resultou?

Anexos

// LCD_Menu_Principal_Resolvido
// Alterado por:
// Adelino João
// Data: 01/03/2014
// email: adelino_joao@hotmail.com
#include <UTFT.h>
#include <UTouch.h>
// MAX_BUTTONS 20
#include <UTFT_Buttons.h>
#include <IRremote.h>
// Panasonic address (Pre data)
#define PanasonicAddress 0x4004
#define PanasonicPower 0x100BCBD
#define PanasonicAv 0x100A0A1

extern uint8_t BigFont[];
extern uint8_t SmallFont[];

//UTFT myGLCD(ITDB32S, 38, 39, 40, 41);
// Uncomment the next line for Arduino Mega
// Remember to change the model parameter to suit your
// display module!
UTFT myGLCD(TFT01_32, 38, 39, 40, 41);

UTouch myTouch(6, 5, 4, 3, 2);
UTFT_Buttons myButtons(&myGLCD, &myTouch);
IRsend irsend; // TX = pin 9

int but1, but2, but3;
int but4, but5, but6, but7;
int but8, but9, but10, but11, but12, but13, but14, but15, but16,
but17, but18, but19;
int but20, but21, but22, but23, but24, but25, but26, but27, but28,
but29;

int btnArea[30][4] = { //(x, y, width, height)
// Index zero
{ 0, 0, 0, 0},
// Principal
{ 25, 30, 190, 60 }, // but1
{ 25, 120, 190, 60 }, // but2
{ 25, 210, 190, 60 }, // but3
// TV
{ 25, 30, 190, 50 }, // but4
{ 25, 100, 190, 50 }, // but5
{ 25, 170, 190, 50 }, // but6
{ 25, 240, 190, 50 }, // but7
// MEO
{ 5, 30, 105, 30 }, // but8
{ 130, 30, 105, 30 }, // but9
{ 5, 65, 105, 30 }, // but10
{ 130, 65, 105, 30 }, // but11
{ 5, 100, 105, 30 }, // but12
{ 130, 100, 105, 30 }, // but13
{ 5, 135, 230, 30 }, // but14
{ 5, 170, 70, 30 }, // but15
{ 80, 170, 65, 30 }, // but16
{ 150, 170, 85, 30 }, // but17
{ 5, 205, 230, 30 }, // but18
{ 5, 240, 230, 30 }, // but19
// FITA LED
{ 5, 30, 105, 30 }, // but20
{ 130, 30, 105, 30 }, // but21
{ 5, 65, 105, 30 }, // but22
{ 130, 65, 105, 30}, // but23
{ 5, 100, 230, 30 }, // but24
{ 5, 135, 230, 30 }, // but25
{ 5, 170, 230, 30 }, // but26
{ 5, 205, 230, 30 }, // but27
{ 5, 240, 230, 30 }, // but28
{ 5, 275, 230, 30 } // but29
};
int TouchIsInArea(int x, int y, int inicio, int fim)
{
for(int i = inicio; i<= fim; i++)
{
if(x >= btnArea[i][0] && x <= btnArea[i][0] + btnArea[i][2]
&& y >= btnArea[i][1] && y <= btnArea[i][1] + btnArea[i][3])
return i;
}
return 0;
}

void showMenuPrincipal()
{
// Principal
but1 = myButtons.addButton(25, 30, 190, 60, "TV");
but2 = myButtons.addButton(25, 120, 190, 60, "MEO");
but3 = myButtons.addButton(25, 210, 190, 60, "FITA LED");
myButtons.drawButtons();
myGLCD.setFont(BigFont);
myGLCD.print("MENU INICIAL",CENTER,1);
}

void menuTV()
{
int x, y;
int pressed_button;
// TV
but4 = myButtons.addButton(25, 30, 190, 50, "LIGA");
but5 = myButtons.addButton(25, 100, 190, 50, "DESLIGA");
but6 = myButtons.addButton(25, 170, 190, 50, "SLEEP 90");
but7 = myButtons.addButton(25, 240, 190, 50, "PRINCIPAL");
myButtons.drawButtons();
myGLCD.setFont(BigFont);
myGLCD.print("MENU TV",CENTER,1);

while(1)
{
pressed_button = myButtons.checkButtons();
if(myTouch.dataAvailable() == true)
{
myTouch.read();
x = myTouch.getX();
y = myTouch.getY();
// but4 - but7
pressed_button = TouchIsInArea(x, y, 4, 7);
switch(pressed_button)
{
case 4:
for(int i = 0; i < 10; i++)
irsend.sendPanasonic(PanasonicAddress,PanasonicPower);
delay(5000);
irsend.sendPanasonic(PanasonicAddress,PanasonicAv);
break;
case 5:
for(int i = 0; i < 10; i++)
irsend.sendPanasonic(PanasonicAddress,PanasonicPower);
break;
case 6:
for(int i = 0; i < 5; i++)
irsend.sendPanasonic(0x4004,0x1004A4B);// menu
delay(500);
irsend.sendPanasonic(0x4004,0x100D2D3); // baixo
delay(500);
irsend.sendPanasonic(0x4004,0x100D2D3); // baixo
delay(500);
irsend.sendPanasonic(0x4004,0x100D2D3); // baixo
delay(500);
irsend.sendPanasonic(0x4004,0x1009293); // OK
delay(500);
irsend.sendPanasonic(0x4004,0x100F2F3); // Esquerda
delay(500);
irsend.sendPanasonic(0x4004,0x100F2F3); // Esquerda
delay(500);
irsend.sendPanasonic(0x4004,0x100F2F3); // Esquerda
delay(500);
irsend.sendPanasonic(0x4004,0x100F2F3); // Esquerda
delay(500);
irsend.sendPanasonic(0x4004,0x100F2F3); // Esquerda
delay(500);
irsend.sendPanasonic(0x4004,0x100F2F3); // Esquerda
delay(500);
irsend.sendPanasonic(0x4004,0x1002B2A); // Return
delay(500);
irsend.sendPanasonic(0x4004,0x1002B2A); // Return
break;
case 7:
myGLCD.clrScr();
myButtons.deleteAllButtons();
showMenuPrincipal();
return;
}
}
}
}

void menuMEO()
{
int x, y;
int pressed_button;
// MEO
but8 = myButtons.addButton(5, 30, 105, 30, "ON");
but9 = myButtons.addButton(130, 30, 105, 30, "OFF");
but10 = myButtons.addButton(5, 65, 105, 30, "CH-");
but11 = myButtons.addButton(130, 65, 105, 30, "CH+");
but12 = myButtons.addButton(5, 100, 105, 30, "VOL-");
but13 = myButtons.addButton(130, 100, 105, 30, "VOL+");
but14 = myButtons.addButton(5, 135, 230, 30, "UP");
but15 = myButtons.addButton(5, 170, 70, 30, "LEFT");
but16 = myButtons.addButton(80, 170, 65, 30, "OK");
but17 = myButtons.addButton(150, 170, 85, 30, "RIGHT");
but18 = myButtons.addButton(5, 205, 230, 30, "DOWN");
but19 = myButtons.addButton(5, 240, 230, 30, "PRINCIPAL");
myButtons.drawButtons();
myGLCD.setFont(BigFont);
myGLCD.print("MENU MEO",CENTER,1);
while(1)
{
pressed_button = myButtons.checkButtons();
if(myTouch.dataAvailable() == true)
{
myTouch.read();
x = myTouch.getX();
y = myTouch.getY();
// but8 - but19
pressed_button = TouchIsInArea(x, y, 8, 19);
switch(pressed_button)
{
case 8:
irsend.sendRC6(0x1270c, 20);
break;
case 9:
irsend.sendRC6(0x1270c, 20);
break;
case 10:
irsend.sendRC6(0x12721, 20);
break;
case 11:
irsend.sendRC6(0x12720, 20);
break;
case 12:
irsend.sendRC6(0x12711, 20);
break;
case 13:
irsend.sendRC6(0x12710, 20);
break;
case 14:
irsend.sendRC6(0x12758, 20);
break;
case 15:
irsend.sendRC6(0x1275a, 20);
break;
case 16:
irsend.sendRC6(0x1275c, 20);
break;
case 17:
irsend.sendRC6(0x1275b, 20);
break;
case 18:
irsend.sendRC6(0x12759, 20);
break;
case 19:
myGLCD.clrScr();
myButtons.deleteAllButtons();
showMenuPrincipal();
return;
}
}
}
}

void menuLED()
{
int x, y;
int pressed_button;
// FITA LED
but20 = myButtons.addButton(5, 30, 105, 30, "ON");
but21 = myButtons.addButton(130, 30, 105, 30, "OFF");
but22 = myButtons.addButton(5, 65, 105, 30, "BR-");
but23 = myButtons.addButton(130, 65, 105, 30, "BR+");
but24 = myButtons.addButton(5, 100, 230, 30, "White");
but25 = myButtons.addButton(5, 135, 230, 30, "Red");
but26 = myButtons.addButton(5, 170, 230, 30, "Green");
but27 = myButtons.addButton(5, 205, 230, 30, "Blue");
but28 = myButtons.addButton(5, 240, 230, 30, "Yellow");
but29 = myButtons.addButton(5, 275, 230, 30, "PRINCIPAL");
myButtons.drawButtons();
myGLCD.setFont(BigFont);
myGLCD.print("MENU LED",CENTER,1);

while(1)
{
pressed_button = myButtons.checkButtons();
if(myTouch.dataAvailable() == true)
{
myTouch.read();
x = myTouch.getX();
y = myTouch.getY();
// but20 - but29
pressed_button = TouchIsInArea(x, y, 20, 29);
switch(pressed_button)
{
case 20:
irsend.sendNEC(0xf7c03f, 32);
break;
case 21:
irsend.sendNEC(0xf740bf, 32);
break;
case 22:
irsend.sendNEC(0xf700ff, 32);
break;
case 23:
irsend.sendNEC(0xf7807f, 32);
break;
case 24:
irsend.sendNEC(0x12711, 32);
break;
case 25:
irsend.sendNEC(0x12710, 32);
break;
case 26:
irsend.sendNEC(0x12758, 32);
break;
case 27:
irsend.sendNEC(0x1275a, 32);
break;
case 28:
irsend.sendNEC(0x1275c, 32);
break;
case 29:
myGLCD.clrScr();
myButtons.deleteAllButtons();
showMenuPrincipal();
return;
}

}
}
}

void setup()
{
myGLCD.InitLCD(PORTRAIT);
myGLCD.clrScr();
myTouch.InitTouch(PORTRAIT);
myTouch.setPrecision(PREC_MEDIUM);
myButtons.setTextFont(BigFont);
showMenuPrincipal();
}

void loop()
{
int x, y;
int pressed_button;
pressed_button = myButtons.checkButtons();
if(myTouch.dataAvailable() == true)
{
myTouch.read();
x = myTouch.getX();
y = myTouch.getY();
// but1 - but3
pressed_button = TouchIsInArea(x, y, 1, 3);
switch(pressed_button)
{
case 1:
myGLCD.clrScr();
myButtons.deleteAllButtons();
menuTV();
break;
case 2:
myGLCD.clrScr();
myButtons.deleteAllButtons();
menuMEO();
break;
case 3:
myGLCD.clrScr();
myButtons.deleteAllButtons();
menuLED();
break;
}
}
}

Obrigado Amigo

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço