Problemas Ttp223b y libreria u8g2

Hola a todos, necesito de su ayuda, les cuento compre unos sensores ttp223b que funcionan de maravila, hasta que utilizo la libreria u8g2, cuando realizo un menu con userInterfaceSelectionList,
los sensores no funcionan, alguien sabe que pasa? o como puedo solucionarlo?
Les paso el codigo completo

#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>

#define SensorTouch_A 6
#define SensorTouch_B 7

#define pinA 13
#define pinB 11
#define pinC 10

U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, pinA, pinB, pinC, U8X8_PIN_NONE);
uint8_t current_selection = 0;


void setup() {
  Serial.begin(9600);
  pinMode(SensorTouch_A, INPUT);
  pinMode(SensorTouch_B, INPUT);

  // u8g2.begin(/*Select=*/ 4, /*Right/Next=*/ 2, /*Left/Prev=*/ 3, /*Up=2*/ 2, /*Down=3*/3 , /*Home/Cancel=*/9 );

  u8g2.setFont(u8g2_font_6x10_tf);
u8g2.begin(); 
  u8g2.userInterfaceSelectionList("TITULO", current_selection, "Menu 1\nMenu 2\nMenu 3");
  const char *nameMenu = "P R O G R A M A S";
  select_menu(nameMenu, "Configuracion\Programas\Otros");
}

void loop() {



  if (digitalRead(SensorTouch_A) == HIGH) {
    Serial.println("Tecla A");
    //current_selection = 0;
  } else {
  }
  delay(100);

  if (digitalRead(SensorTouch_B) == HIGH) {
    Serial.println("Tecla B");
    //current_selection = 1;
  } else {
  }
  delay(100);
}

void select_menu(const char *nameMenu, const char *select_menu) {
  u8g2.setFont(u8g2_font_6x12_tf);
  current_selection = 0;
  current_selection = u8g2.userInterfaceSelectionList(
                        nameMenu,
                        current_selection,
                        select_menu);
}```

La librería U8G2 esta probada que consume mucho tiempo. Siempre hay consultas de problemas así.
Algo que no debes usar es delay() para conservar lo que haga falta para que todo trabaje correctamente.
Como primera intención quita los dos delay() a ver que pasa.
Nos dices y continuamos.

Hola, ante todo gracias por ayudarme, te cuento quite los delay y sigue sin funcionar, con respecto a la librería U8G2 tienes razón consume tiempo, pero no encontré otra forma de hacer un menú al estilo userInterfaceSelectionList para mi pantalla ST7920.

avance en algo, por ejemplo hay una forma de configurar botones con u8g2, si pongo solo un sensor en el pin 6 funciona, si quiero utiizar dos sensores, por ejemplo pin 6 para right y pin 7 para left ya no funciona....alguna idea al respecto?

u8g2.begin(/*Select=*/ U8X8_PIN_NONE, /*Right/Next=*/ 6, /*Left/Prev=*/ U8X8_PIN_NONE, /*Up=*/ U8X8_PIN_NONE, /*Down=*/U8X8_PIN_NONE , /*Home/Cancel=*/U8X8_PIN_NONE );

Estas usando un OLED no?
He viste este problema en varios hilos. Usando algo y ponen el OLED y luego se traba todo. La verdad preocupa porque estaba considerando comprar uno y lo tengo bajo sospecha.
En un hilo anterior recuerdo que habia tiempos de 600 a 900 mseg en determinadas acciones.

No es OLED, es display LCD 124x64, me paso algo que realmente ahora si estoy intrigado, independientemente los touch no funcionan, ahora si mantengo pulsado el pulsador A y a su vez pulso el pulsador B funciona y viceversa también, es decir funcionan si tengo un touch pulsado....

@mauricio2021 has leído lo que te escribí antes?

Si algo te detiene la ejecución x 500mseg todo funciona como demorado.
Me acabo de dar cuenta de esto!!

if (digitalRead(SensorTouch_A) == HIGH) {
    Serial.println("Tecla A");
    //current_selection = 0;
  } 
  else {
  }
  delay(100);

Si no presionas introduce un delay interminable. Por favor, quita ese

  else {
  }
  delay(100);

En los dos casos.

Además lo mas importante.
Tu código en el loop esta mal.
Todos los ejemplos de U8g2 tienen una linea de este tipo en el loop

u8g2.firstPage();

y posiblemente otra como esta

 } while( u8g2.nextPage() );

Que acá no veo.
Asi que revisa tu código.

Limpie y modifique el codigo asi:

#include <Arduino.h>
#include <U8g2lib.h>
#include <SPI.h>
#include <Wire.h>
#define SensorTouch_A 6
#define SensorTouch_B 7

#define pinA 13
#define pinB 11
#define pinC 10

U8G2_ST7920_128X64_F_SW_SPI u8g2(U8G2_R0, pinA, pinB, pinC, U8X8_PIN_NONE);
uint8_t current_selection = 0;

void setup() {
  pinMode(SensorTouch_A, INPUT_PULLUP);
  pinMode(SensorTouch_B, INPUT_PULLUP);
  u8g2.begin(/*Select=*/ U8X8_PIN_NONE, /*Right/Next=*/ U8X8_PIN_NONE, /*Left/Prev=*/ U8X8_PIN_NONE, /*Up=*/ SensorTouch_A, /*Down=*/SensorTouch_B , /*Home/Cancel=*/U8X8_PIN_NONE );

}


void loop() {
  u8g2.firstPage();
  do {
    const char *nameMenu = "P R O G R A M A S";
    select_menu(nameMenu, "Configuracion\n Programas\n Otros");
  } while (u8g2.nextPage());

}

void select_menu(const char *nameMenu, const char *select_menu) {
  u8g2.setFont(u8g2_font_6x12_tf);
  current_selection = 0;
  current_selection = u8g2.userInterfaceSelectionList(
                        nameMenu,
                        current_selection,
                        select_menu);
}

Y sigue funcionando igual...

En esto ultimo no veo que leas los touch.

No porque en realidad los leía con digitalRead para ver si funcionan al verlos por el serial, al ver que funcionan lo quite, consulta en la linea

u8g2.begin(/*Select=*/ U8X8_PIN_NONE, /*Right/Next=*/ U8X8_PIN_NONE, /*Left/Prev=*/ U8X8_PIN_NONE, /*Up=*/ SensorTouch_A, /*Down=*/SensorTouch_B , /*Home/Cancel=*/U8X8_PIN_NONE );

los estoy leyendo, pero sigo con el problema que funcionan si pulso uno de los sensores, ante todo gracias por tu tiempo!!

La librería la descargaste del Gestor?

Si del gestor, por?

Para poder reproducirlo.
Por eso siempre pido que se informe de donde se obtienen las librerías.
Tienes un problema y es dificil para nosotros darte ideas si no se reproducen los problemas.

Entiendo, yo sigo buscando en la web ,foros, google, mientras tanto porque me tiene anonadado! hay una referencia en la librería de un evento u8g2reference · olikraus/u8g2 Wiki · GitHub pero no hay un ejemplo claro, entiendo que es para utilizar en comando del tipo joystick si no mal interpreto

Investigando tu display veo que debería volar de rápido. Asi que hay que ver que esta mal.
Se comunica por SPI y eso generalmente es lo mas veloz que le sigue a una conexión paralelo.

Buen dia, ayer hice otra prueba, volvi a poner el codigo para ver por el serial e ir paso por paso anulando sentencias

if (digitalRead(SensorTouch_A) == HIGH) {
     Serial.println("Tecla A");

     //current_selection = 0;
    } else {

    }

me di cuenta que los sensores funcionan perfecto, pero cuando utilizo u8g2.userInterfaceSelectionList ahi deja de funcionar bien, y en el monitor serie ya no imprime nada

Debe ser que se queda esperando algo. Hay que mirar la documentación de este procedimiento.
Mirando la documentación encuentro que es una función y devuelve 1 a N dependiendo de la opción aceptada. 0 si has presionado home/cancel.

  • Returns: 1 to n for if one of the buttons had been selected. 0 if the user has pressed the home/cancel button.

Por lo tanto hay teclas que debes tener y que no veo en tu código. Si dichas teclas son los touch entonces debes asignarlas para que cumplan las funciones que el u8g2 espera.
Ahi esta el problema!!

COMPLEMENTO:
U8g2 can also detect key press events. Up to six buttons can be observed. The Arduino pin number can be assigned here.
U8g2 tmb detecta eventos de teclas presionadas. Hasta 6 botones pueden ser monitoreados. El pin de Arduino debe asignarse aquí.

En tu definición de .begin tienes U8X8_PIN_NONE que le dice que no hay botones pero si no hay botones no puedes tener un
u8g2.userInterfaceSelectionList() porque es un contrasentido.
Esta función requiere pines asociados para elegir la opción deseada.

A ver si entendi, es decir que no puedo utilizar solo 2 touch , si no que debo asignar los demas touch, para que la funcion devuelva 1 , interprete mal entonces, porque pense que al tener U8X8_PIN_NONE ,solo bastaba 2 botones para que la funcion u8g2.userInterfaceSelectionList() funcione correctamente, ya lo estoy probando!

No has comprendido pero yo estaba editando mientras respondías, asi que lee mi post anterior de nuevo.
Si puedes tener esos 2 touch abocados a una tarea cualquiera. Pero además debes tener pines dedicados a la selección del display. Si los touch son esos pines entonces asignalos como lo indica la documentación.

Si perdon no sabia que estabas justo editando