Touchscreen while Schleife

Hi zusammen,

ich bin noch recht ne hier, daher vergebt mir wenn ich mich an der ein oder anderen Stelle nicht korrekt ausdrücke.

Ich habe ein 2,8" Touchscreen Display, was ich auch zum laufen gebracht habe.

Zum Aufbau:

Ich habe 4 “touch Buttons”:

min+
sec+
cancel
start

mit min+ und sec+ wird ein Timer eingestellt. Mit cancel alles auf null gesetzt und mit start gehts los.

Für den Countdown habe ich die Countimer.h lib genutzt. Ich bekomme auch der Countdown im seriellen Monitor angezeigt wie er runtertickt aber nicht auf dem Display…und das liegt glaube ich daran, dass ich in der While schleife festhänge…

Hieraus folgt dann auch mein zweites Problem… wenn der Countdown abgelaufen ist kann ich keine eingaben mehr machen außer den Countdown neu zu starten. Vielleicht kann mir jemand nen tip geben.

[code]

#include <UTFT.h>
#include <URTouch.h>
#include <UTFT_Buttons.h>
#include "Countimer.h"
int seconds = 0;
int minutes = 0;
Countimer expTime;

extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];


UTFT          myGLCD(ITDB28,A5,A4,A3,A2);
URTouch        myTouch(A1,A3,A0,8,9);

UTFT_Buttons  myButtons(&myGLCD, &myTouch);

void setup()
{
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_MEDIUM);
  myButtons.setTextFont(BigFont);
}

void loop()

{
  int but1, but2, but3, but4, pressed_button;
  boolean default_colors = true;
  
  but1 = myButtons.addButton( 10,  180, 90,  50, "min +");
  but2 = myButtons.addButton( 110,  180, 90,  50, "sec +");
  but3 = myButtons.addButton( 210, 180, 101,  50, "cancel");
  but4 = myButtons.addButton( 210, 10, 101,  160, "START");


 
  myButtons.drawButtons();

  while(1) 
 {
  myGLCD.setFont(BigFont);
   expTime.run();
   expTime.setInterval(print_time2, 1000);
      myGLCD.print(expTime.getCurrentTime(),0,0);
    if (myTouch.dataAvailable() == true)
    {
      pressed_button = myButtons.checkButtons();
      if (pressed_button==but1){
           minutes ++;
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.printNumI(minutes,40,40,2,'0');
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.printNumI(seconds,114,40,2,'0');
      }
      if (pressed_button==but2)
      {
        seconds ++;
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.printNumI(minutes,40,40,2,'0');
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.printNumI(seconds,114,40,2,'0');
  
      }
      if (pressed_button==but3)
      {
        seconds=0;
       minutes=0;
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.printNumI(minutes,40,40,2,'0');
           myGLCD.setFont(SevenSegNumFont);
           myGLCD.printNumI(seconds,114,40,2,'0');
      }
      if (pressed_button==but4)
      {
      expTime.setCounter(0, minutes, seconds, expTime.COUNT_DOWN, expTimeComplete);
      // Call print_time2() method every 1s.
      expTime.start();
      myGLCD.setFont(BigFont);
      expTime.setInterval(print_time2, 1000);
      myGLCD.print(expTime.getCurrentTime(),0,0);
    
      }
      if (pressed_button==-1)
      {
      }
    }
  }
}

void print_time2()
{
  Serial.begin(9600);
  Serial.print("tDown: ");
  Serial.println(expTime.getCurrentTime());
  //myGLCD.clrScr();
  myGLCD.setFont(BigFont);
  
  myGLCD.print("test",0,0);
}
void expTimeComplete()
{
}

[/code]

TIPP … :slight_smile:

Na ja, der Fehler ist wohl hier:

"
"
"
but4 = myButtons.addButton( 210, 10, 101, 160, “START”);
myButtons.drawButtons();

while(1) <<<<<<<<< while(1) == while(true) == “mache für alle zeiten nur noch dieses…”
{
myGLCD.setFont(BigFont);
expTime.run();
expTime.setInterval(print_time2, 1000);
"
"
"

Nirgends is 'n “break” oder sonst etwas, was dich aus der Schleife heraus leitet…

Zum Beispiel:

if( “bedingung” == “erledigt”)
{ break; }

oder so ähnlich
LG, Rudi