Touchscreen mit UTFT Lib - wie geschmeidige Buttonroutine bauen?

Hallo zusammen,

ich bastel gerade mit nem Touchscreen und der Lib von Henning Karlsen. Buttons malen und lesen ist kein Problem, bis auf das Timing.

Ich möchte das Drücken eines Buttons in den Sketch integrieren, ohne dass dieser gebremst wird. Also Prinzip "Blinkwithoutdelay" :grin:

Mein Gedankenhänger: wie formuliere ich den Code, dass ein Druck unmittelbar registriert aber dann bis zum "Loslassen" ignoriert wird?

Ich komm nicht drauf :confused:

Wer hat 'nen Tipp für mich?

Danke Klaus

Verwendest du auch die UFT_Buttons Addon Library? Damit wird es richtig simpel

Da kann man dann einfach sowas machen:

UTFT_Buttons buttons(&display, &touch);

void check_buttons()
{
  if(touch.dataAvailable())
  {
     int pressed_button = buttons.checkButtons();
     if(pressed_button == -1)
       return;

     if(pressed_button == ....)
        ....
  }
}

Nee, die hab ich erst später entdeckt und wollte nicht von vorne anfangen :blush:

Das muss ja auch irgendwie zu Fuß gehen??

Spart halt auch viel Arbeit und Code.

Aber wenn es darum geht das während des Tastendrucks der Sketch im Hintergrund weiterläuft, dann ist es wieder nichts. UTFT_Buttons blockiert nämlich einfach bis zum loslassen. Bei mir aber kein Problem.

Da müsste man sich aber eigentlich nur den Zustand merken. Also merken dass der Knopf gedrückt wurde, aber dann sofort die Funktion beenden. Und erst beim Loslassen melden dass was gedrückt wurde wenn UTouch sagt dass keine Daten da sind, aber die "Knopf wurde gedrückt" Variable gesetzt ist).

Danke, muss ich mal drüber schlafen und die Woche ausprobieren. Melde mich dann wieder.

Hab jetzt rumprobiert mit Variable und merken und loslassen mitbekommen - alles nicht so wie ich mir das vorstelle :(

Heute Nacht aber eine Eingebung gehabt und mal flott probiert: da ich (mal wieder) nur ein paar Midi-Daten verschicken will hab ich den Part per Timer-Lib gesteuert und lasse den Timer einfach innerhalb der Touch-Routine aktualisieren. Das haut hin und wenn ich dann mal ein paar Ticks danebenliege macht das nix.

Ist ja nur Spielzeug :grinning:

Danke für den Ansatz!