Hola!
Estoy trabajando en un proyecto para controlar con un tft los niveles de unos depositos con menus con iconos graficos y demas.
El proyecto lo tengo casi terminado, pero tengo un error y ya no se como solucionarlo, a ver si alguien me puede dar alguna ida
El funcionamiento es el siguiente:
Tengo unos niveles con valor analogico.Estos se lleen sin problemas.
Guardo en la eeprom el valor de "tara" de cada una de las sondas, ya que el nivel maximo, no es el maximo de entrada de analogica.
Para cambiar este valor de tara, para evitar cambiarlo por error, tengo una flag boolean "memoria_cambio_tara" que me desbloque el guardado.
El problema es que declaro esta variable global, la pongo en false al entrar en la pantalla, pero cuando cambio de bloque para dibujar el candado en rojo o verde, resulta que ese valor ya no es 0.
He revisado una y mil veces y esta variable solo se usa en esta parte del codigo, pero al cambiar de segmento se me borra...
ya no se que hacer, el resto de sondas funcionan, uso el mismo codigo en otras pantallas y funciona, pero en esto no...
a ver si alguien ve algo raro!
Muchas gracias
este es el codigo:
void menu_config_sucia() {
聽//Menu de Agua sucia
聽//TAMA脩O TFT 320 X 240
聽tft.setFont(&FreeSerif9pt7b);
聽memoria_cambio_tara = false;
聽//Serial.print(F("memoria cambio tara: "));
聽//Serial.println(memoria_cambio_tara);
聽tft.fillScreen(BLACK);
聽tft.drawRoundRect(20, 20, 280, 30, 5, BLUE);
聽tft.setCursor(45, 40);
聽tft.setTextSize(1);
聽tft.println(F("Calibrado sondas agua sucia"));
聽memoria_tara[3] = 1000;
聽dibuja_tara2();
聽dibuja_sensor2();
聽dibuja_flechas2();
聽//boton regresar
聽tft.drawRoundRect(12, 195, 68, 40, 5, BLUE);
聽tft.drawBitmap(25, 195, flecha_izquierda, 40 , 40, GREEN);
聽base_menu();
}
void configura_botones_sucia() {
聽
聽//Serial.println(memoria_cambio_tara);
聽if ( (xpos > 113 && xpos < 189) && ( ypos > 57 && ypos < 108) && memoria_cambio_tara) {
聽 聽
聽 聽tara3 = valorSensor3;
聽 聽eeAddress = 64;
聽 聽EEPROM.put(eeAddress, tara3);
聽 聽dibuja_tara2();
聽}
聽if ( (xpos > 230 && xpos < 320) && ( ypos > 200 && ypos < 240)) {
聽 memoria_cambio_tara = !memoria_cambio_tara;
聽 dibuja_flechas2();
聽 聽
聽}
聽if ( (xpos > 5 && xpos < 85) && ( ypos > 200 && ypos < 240)) {
聽 聽menu = 6;
聽}
}
void dibuja_tara2() {
聽tft.setFont(&FreeSerif9pt7b);
聽tft.setTextColor(GREEN);
聽tft.setCursor(20, 70);
聽tft.println(F("Tara Nivel 1"));
聽tft.fillRoundRect(15, 75, 95, 35, 5, BLACK);
聽tft.drawRoundRect(20, 75, 90, 30, 5, BLUE);
聽tft.setCursor(45, 95);
聽tft.println(tara3);
}
void dibuja_sensor2() {
聽tft.setFont(&FreeSerif9pt7b);
聽if (valorSensor3 != memoria_tara[3]) {
聽 聽tft.setTextColor(WHITE);
聽 聽tft.fillRoundRect(215, 82, 80, 25, 5, BLACK);
聽 聽tft.drawRoundRect(210, 75, 90, 30, 5, BLUE);
聽 聽tft.setCursor(245, 95);
聽 聽tft.println(valorSensor3);
聽 聽memoria_tara[3] = valorSensor3;
聽}
}
void dibuja_flechas2() {
聽//Serial.print(F("memoria cambio tara(flechas): "));
聽//Serial.println(memoria_cambio_tara);
聽if (memoria_cambio_tara) {
聽 聽tft.drawBitmap(140, 70, flecha_izquierda, 40 , 40, GREEN);
聽 聽tft.fillRect(245, 185, 48, 48, BLACK);
聽 聽tft.drawBitmap(245, 185, candado_abierto, 48, 48, GREEN);
聽}
聽else {
聽 聽tft.drawBitmap(140, 70, flecha_izquierda, 40 , 40, RED);
聽 聽tft.fillRect(245, 185, 48, 48, BLACK);
聽 聽tft.drawBitmap(245, 185, candado_cerrado, 48, 48, RED);
聽}
}