ejecuto para que salga un boton tactil
-que haga lo que sea al pulsarlo
-que luego desaparezca ese boton
El boton hago que desaparezca machancandolo por encima, es decir, lo cubro del color del fondo de la pantalla.
Cual es el problema, que sigue ahi. Si pulso esa zona de la pantalla se ejecuta.
if (cont=1){
tft.fillRect(60,300, 210, 80, WHITE); //borramos cualquir cosa que este en esa zona
buttons[3].initButton(&tft, 160, 330,200, BUTTON_H, ILI9341_WHITE, ILI9341_DARKGREEN, ILI9341_BLACK,"CONTINUAR", 3); buttons[3].drawButton(); //ejecutamos el boton tactil
}
if (buttons[3].justPressed()) {
borradopuerta=1;
}
if (borradopuerta==1){
tft.fillRect(60,300, 210, 80, WHITE); //tapamos el boton tactil
¿Hay algun comando para deshabilitar un boton tactil?
Este es el mismo comando que usas antes de poner el boton.
O sea que no borras el botón sino que borras toda la región.
Cuando el botón es presionado tu respondes a
if (cont=1){
` ``
pero luego esperas que como el boton ya fue presionado justPressed() lo borrse con
borradopuerta = 1 y claro que lo hace pero en el siguiente ciclo
cont sigue siendo = 1 y se vuelve a ejecutar y por eso ves el boton.
Deberías hacer
if (borradopuerta==1){
tft.fillRect(60,300, 210, 80, WHITE); //tapamos el boton tactil
cont = 0;
}
hola:
Entiendo lo que dices, pero si pongo siguiente:
if (cont=1){
tft.fillRect(60,300, 210, 80, WHITE); //borramos cualquir cosa que este en esa zona
buttons[3].initButton(&tft, 160, 330,200, BUTTON_H, ILI9341_WHITE, ILI9341_DARKGREEN, ILI9341_BLACK,"CONTINUAR", 3); buttons[3].drawButton(); //ejecutamos el boton tactil
}
if (buttons[3].justPressed()) {
borradopuerta=1;
cont=0;
}
if (borradopuerta==1){
tft.fillRect(60,300, 210, 80, WHITE); //tapamos el boton tactil
aqui ya le digo que deje de dar la senal (cont=0) para que no aparezca el boton tactil.
No obtante parece que un vez que se ejecuta queda en segundo plano si o si.
Estuve buscando por https://github.com/ pero no encuentro un sitio donde se citen todos los posibles comandos que puedes usar.
Estoy casi seguro que tiene uno para deshabilitar un botón táctil
Hola:
Muchas gracias por contestar.
Pues pruebo con bastantes condicionales para que no se ejecute ese botón táctil, pero una vez ejecutado queda en segundo plano.
Al final conseguí que no se mostrara simplemente machándolo con otro botón táctil igual al anterior pero del mismo color que el fondo de pantalla.
Vuelve a leer mi respuesta post#2 y ahora entenderás que te dije entonces.
Lo que ocurre es que lo borras pero luego al no cambiar el flag o bandera, se vuelve a mostrar.
Y si ahora funciona una posibilidad muy fuerte es que al final luego de mostrarlo, quitarlo y volver a mostrarlo de nuevo lo estes tapando con el color de fondo que mencionas. Ahora como no veo el código completo solo me lo imagino.
Os copio aqui el codigo. No lo puse porque es muy largo.
Os pongo la funcion donde ejecuto el codigo del boton tactil.
Y muchas gracias a los dos
void Alarma(){
//apertura de puerta
puerta=digitalRead(51);
if (puerta==!HIGH){
borradopuerta=0;
cont=1; //ponemos esta señal sino aparece el boton de "continuar" por defecto
tft.fillRect(60,300, 210, 80, ILI9341_DARKGREEN);
tft.setCursor(110,325);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("PUERTA");
// cambiamos el color para el efecto parpadeo
tft.setCursor(110,325);
tft.setTextColor(BLACK);
tft.setTextSize(3);
tft.print("PUERTA");
}
if (puerta == !LOW && puertaAnterior == !HIGH && cont==1){
tft.fillRect(60,300, 210, 80, WHITE);
buttons[3].initButton(&tft, 160, 330,200, BUTTON_H, ILI9341_WHITE, ILI9341_DARKGREEN, ILI9341_BLACK,"CONTINUAR", 3); buttons[3].drawButton();
}
if (buttons[3].justPressed()&&(borradopuerta==0)){
cont=0;
borradopuerta=1;
}
if (borradopuerta==1){
buttons[3].initButton(&tft, 160, 330,200, BUTTON_H, ILI9341_WHITE, ILI9341_WHITE, ILI9341_WHITE,"CONTINUAR", 3); buttons[3].drawButton();//pongo un boton tactil igual al anterior,pero en blanco, para machacar el anterir boton
}
puertaAnterior = puerta;
Serial.println(puerta);
}