Go Down

Topic: estructura de menu en arbol (Read 190 times) previous topic - next topic

JorgeMZ

Mar 22, 2018, 04:28 pm Last Edit: Mar 23, 2018, 12:00 am by JorgeMZ
hola alguien que pueda ayudarme, hice una estructura para un menu en arbol pero no compila soy muy nuevo en esto del codigo asi que cualquier comentario sea de ayuda, estoy usando un touchscreen tft de 2.4" y un arduino uno.

Code: [Select]
#include <Adafruit_GFX.h>     
#include <Adafruit_TFTLCD.h>
#include <TouchScreen.h>     
#include <Fonts/Org_01.h>   
#include <EEPROM.h>         //LIBRERIAS

bool backsensed = false;
bool resetsensed = false;

//pines touch
#define YP A2 
#define XM A1 
#define YM 6   
#define XP 7   

#define TS_MINX 100
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
//crear objeto touchscreen
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300); 

//pines tft
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

#define REDBAR_MINX 80
#define GREENBAR_MINX 130
#define BLUEBAR_MINX 180
#define BAR_MINY 30
#define BAR_HEIGHT 250
#define BAR_WIDTH 30


//crear el objeto tft
Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);


// definir colores tft
#define BLACK   0x0000
int BLUE = tft.color565(50, 50, 255);
#define DARKBLUE 0x0010
#define VIOLET 0x8888
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF
#define GREY   tft.color565(64, 64, 64);
#define GOLD 0xFEA0
#define BROWN 0xA145
#define SILVER 0xC618
#define LIME 0x07E0

int currentpcolour;


//presion maxima y minima del touch
#define MINPRESSURE 10
#define MAXPRESSURE 1000

#define DRAW_LOOP_INTERVAL 50  //intervalo de tiempo para el delay

int currentpage;


//ESTRUCTURA DEL MENU 
void drawHome(){
  tft.fillScreen(BLACK);
  tft.drawRoundRect(0, 0, 319, 240, 8, WHITE);     //Se crea un borde a la pagina

  tft.fillRoundRect(60, 180, 200, 40, 8, RED);
  tft.drawRoundRect(60, 180, 200, 40, 8, WHITE);  //boton 1

  tft.fillRoundRect(60, 130, 200, 40, 8, RED);   //boton 2
  tft.drawRoundRect(60, 130, 200, 40, 8, WHITE);

  tft.fillRoundRect(60, 80, 200, 40, 8, RED);
  tft.drawRoundRect(60, 80, 200, 40, 8, WHITE); // boton 3

  tft.setCursor(60, 20);
  tft.setTextSize(2);
  tft.setFont();
  tft.setTextColor(WHITE);
  tft.print("Seleccionar una opcion");
  tft.setCursor(70, 50);
  tft.setTextSize(2);
  tft.setTextColor(LIME);
  tft.print("-----------------");
  tft.setTextColor(BLACK);
  tft.setCursor(65, 195);
  tft.print("   boton 1");

  tft.setCursor(105, 145);
  tft.print("boton 2");

  tft.setCursor(80, 95);
  tft.print("boton 3");
  //  delay(500);

}


void setup()
{
 
//inicar el tft
  tft.reset();
  tft.begin(tft.readID());

//inicio de la comunicacion serial
  Serial.begin(9600);
  Serial.println();
  Serial.print("reading id...");
  delay(500);
  Serial.println(tft.readID(), HEX);

  tft.fillScreen(BLACK);
  tft.setRotation(1); //seleccionar la orientacion de la pantalla
 
//seleccionar tamano de texto y color
  tft.setTextSize(3);
  tft.setTextColor(WHITE);

  currentpage = 0;

//pagina principal del programa 
  tft.setCursor(50, 140);
  tft.print("Cargando...");

  tft.setTextColor(tft.color565(255, 255, 0));
  tft.setCursor(30, 70);
  tft.print("creado por:");

  tft.setCursor(30, 100);
  tft.print("jmz");

//barra de progreso
  for (int i; i < 250; i++)
  {
    tft.fillRect(BAR_MINY - 10, BLUEBAR_MINX, i, 10, RED);
    delay(0.000001);
  }

//colorear la pantalla color negro
  tft.fillScreen(BLACK);

//dibujar los botones de menu

  drawHome();
}



void loop()
{

  digitalWrite(13, HIGH);
  TSPoint p = ts.getPoint();     // leer entrada de la pantalla
  digitalWrite(13, LOW);

  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);

  if (currentpage == 0)
  {
    if (p.z > 10 && p.z < 1000)
//Revisar si el boton 1 fue seleccionado
    {
      if (p.x > 403 && p.x < 525 && p.y > 271 && p.y < 725)
      {
        Serial.println("boton 1");

        currentpage = 1;

        tft.fillRoundRect(60, 80, 200, 40, 8, WHITE);
        delay(70);

        tft.fillRoundRect(60, 80, 200, 40, 8, RED);
        tft.drawRoundRect(60, 80, 200, 40, 8, WHITE);

        tft.setCursor(80, 95);
        tft.print("boton 1");
        delay(70);

        drawboton1();

      }
    }

  }


//revisa si el boton 2 fue seleccionado
{
      else if (p.x > 563 && p.x < 683 && p.y > 275 && p.y < 750)
      {
        Serial.println("boton 2");

        tft.fillRoundRect(60, 130, 200, 40, 8, WHITE);   //rgb led
        delay(70);

        tft.fillRoundRect(60, 130, 200, 40, 8, RED);   //rgb led
        tft.drawRoundRect(60, 130, 200, 40, 8, WHITE);   //rgb led
        tft.setCursor(105, 145);

        tft.print("boton 2");
        delay(70);

        currentpage = 2; //si se toca el area del boton 2 pasa a la pagina 2
        x = 0;
        y = 0;
        p.z = 0;
        redpos = BAR_MINY + 12;
        greenpos = BAR_MINY + 12;
        bluepos = BAR_MINY + 12;
        oldrpos = redpos;
        oldgpos = greenpos;
        oldbpos = bluepos;

        drawboton2(); //llama a la funcion start
      }
//revisa si el boton 3 fue seleccionado
    {
      if (p.x > 736 && p.x < 855 && p.y > 255 && p.y < 725  && p.z > MINPRESSURE && p.z < MAXPRESSURE)
      {
        Serial.println("boton 3");

        tft.fillRoundRect(60, 180, 200, 40, 8, WHITE);

        delay(70);

        tft.fillRoundRect(60, 180, 200, 40, 8, RED);
        tft.drawRoundRect(60, 180, 200, 40, 8, WHITE);
        tft.setCursor(65, 195);

        tft.println("   boton 3");
        delay(70);

        currentpage = 3;

        nextDrawLoopRunTime = millis() + DRAW_LOOP_INTERVAL;
        crashed = false;
        running = false;
        scrPress = false;

        startboton3();
      }

//pagina de control inicia aqui

if (current page == 1)
{
//control de la opcion 1 aqui
}
if (current page == 2)
{
//control de la opcion 2 aqui
}
if (current page == 3)
{
//control de la opcion 3 aqui
}

_jose_

Si posteas el mensaje de error del compilador sera mas facil ayudarte.

Go Up