Contador con 3 variables

Hola, estoy tratando de desarrollar un contador con una pantalla nextion 4.3". El contador cuenta de tres tiempos. El tiempo t1 que seria la base, el t2 y t3. La idea es que haga el countdown pero pause cuando llega a t2 y t3. El asunto es que no se me ocurre como hacer para que use solo un botón (START) que me sirva para pausarlo manualmente o para continuar cada vez que hace las pausas en t2 y t3.

Alguna sugerencia?

Saludos

Este es el código que tengo hasta el momento:

/*

© Mauricio Araya
mjaraya@gmail.com

rev 0.1.0

*/

#include <SoftwareSerial.h>
#include <Nextion.h>

SoftwareSerial nextion(2, 3);// Nextion TX to pin 2 and RX to pin 3 of Arduino
Nextion myNextion(nextion, 9600); //create a Nextion object named myNextion using the nextion serial port @ 9600bps

const int BEEP = 12; //Pin definition Piezo Speaker
const int STARTBUTTON = 8; //Pin definition for Start push button
const int LIGHT = 13; //Pin definition for the light

boolean bFocusState; //to store the Focus button state for toggle
float baseExp; //base exposure calculation
float initBaseExp = 3.0; //initial base exposure in steps
float fStopInc = 0.3333; //initial fstop increment
float fTime;

//function to show the Fstop Increment
void showFincrement(float BE) {
char buffer[10];
dtostrf(BE, 5, 1, buffer); // Prints "baseExp"
myNextion.setComponentText("tBE", buffer);
Serial.print("baseExposition: ");
Serial.println(BE);
}

//function to show the base exposure (seconds)
float showFtime (float BE) {
fTime = pow(2,BE); //0.1 is added because the arduino rounding function
char buffer[10];
dtostrf(fTime, 5, 1, buffer); // Prints "baseExp"
myNextion.setComponentText("tfStopTime", buffer);
Serial.print("fStopTime: ");
Serial.println(fTime, 1);
}

//function to show the base exposure (seconds) countdown
float showFtimeCount (float FT) {
char buffer[10];
dtostrf(FT, 5, 1, buffer); // Prints "baseExp"
myNextion.setComponentText("tfStopTime", buffer);
Serial.print("fStopTime: ");
Serial.println(FT, 1);
}

//function to convert the int to char and show the base exposure
void showBaseExp(float BE) {
char buffer[10];
dtostrf(BE, 5, 1, buffer); // Prints "baseExp"
myNextion.setComponentText("tBE", buffer);
Serial.print("baseExposition: ");
Serial.println(BE);
}

void setup() {

Serial.begin(9600);
myNextion.init();

//pin asignment
pinMode(STARTBUTTON, INPUT);
pinMode(BEEP, OUTPUT);
pinMode(LIGHT, OUTPUT);

//initial values on screen
myNextion.setComponentValue("nDecimas", 10);
myNextion.setComponentText("t4", "1/3");

baseExp = initBaseExp;
showBaseExp(initBaseExp);
showFtime(initBaseExp);

}

void loop() {

//check for message
String message = myNextion.listen();
//Serial.println(message);

//Increase or decrease the Base Expo
if (message == "65 0 4 0 ffff ffff ffff") { //+ button
baseExp += fStopInc;
showBaseExp(baseExp);
showFtime(baseExp);
} else if (message == "65 0 5 0 ffff ffff ffff") { //- button
baseExp -= fStopInc;
showBaseExp(baseExp);
showFtime(baseExp);
}

//Increase or decrease Fstop Increment
if (message == "65 0 6 0 ffff ffff ffff") { //+ button

} else if (message == "65 0 7 0 ffff ffff ffff") { //- button

}

//Start runing countdown:
if ((message == "65 0 1 0 ffff ffff ffff") || digitalRead(8) == HIGH) { //if Start button is pressed
//myNextion.buttonToggle(bStartState, "bFocus", 0, 2);
for (float i=fTime; i>0; i) {
message = myNextion.listen();
if (message == "65 0 1 0 ffff ffff ffff") {
/for (int j=1; j=0; j){
Serial.println(fTime, 1);
message = myNextion.listen();
if (message == "65 0 1 0 ffff ffff ffff") {
//myNextion.buttonToggle(bStartState, "bFocus", 0, 2);
j--;
}//if
}//for
/
Serial.println("boton");
}//if

Serial.println(fTime, 1);
digitalWrite(LIGHT, HIGH);
showFtimeCount(fTime);
delay(55);
i=i-0.1;
fTime = fTime - .1;

}//for
digitalWrite(LIGHT, LOW);
showFtime(baseExp);
}//if

//Turn on and off Focus:
if (message == "65 0 25 0 ffff ffff ffff" ) {
myNextion.buttonToggle(bFocusState, "bFocus", 0, 2); //Toggle focus button
if (bFocusState == HIGH) {
//Turn Relay on:
digitalWrite(LIGHT, HIGH);
} else {
//Turn Relay off:
digitalWrite(LIGHT, LOW);
}
}
}

Faltan datos para ello, no explicas bien algunas cosas.

¿El contador empieza en un tiempo determinado?
¿Que ocurre cuando das al botón la 1ª vez, la 2ª, la 3ª, etc...?
¿Que dato tiene que presentar?

Creo que una mejor explicación ayudaría, por cierto, si haces un contador con FOR, acuerdate que i sería i-- para realizar una cuenta atrás.

Tampoco dices que pasa con ese código, las salidas serie, las capturas de pantalla.....

Primero edita tu código usando la etiqueta que corresponde. Asi no se puede leer ni seguir.
Lee las normas como te explico por privado.

Segundo. No tenemos Nextion de modo que modifca tu código con etiquetas para el monitor serie para que podamos seguirlo.
Lo que presentas esta muy verde aún, falta código, no compila, hay if vacios.

Plantea las cosas de modo genérico y luego lo ajustas a tu problema particular.

Ejemplo de lo que digo:
quieres que un boton STARTBUTTON controle la secuencia pero en lo que muestras solo lo defines y no lo usas nunca, entonces como quieres que te ayudemos?

Veamos.
Tu quieres que un contador inicie una secuencia countdown. Okay.

Supongamos que tiene un valor de 1000 y no importa la unidad.
T1 empieza en 1000 y comienza a descender..

lo arrancas con STARTBUTTON okay?
al llegar a T2, se debe detener y hacer que? suena el buzzer?
Luego reinicias otra vez con startbutton
y vuelve a descender hasta T3 y suena de nuevo?
Reinicias x 2da vez hasta que llegue a cero y suena por 3ra vez?

Soy un poco nuevo en esto.

surbyte,
Si eso exactamente es lo que necesito. Es un contador que controla el ON y OFF de una ampliadora fotográfica. yo le doy un tiempo inicial al cual debe correr hasta que llegue al t2 y hace una pausa, luego yo le doy START de nuevo y sigue hasta el t3 y hace otra pausa, luego hasta el final del conteo.
Yo no se mucho de reglas de escritura de código lo admito pero hasta el momento esto es lo que tengo. Ya logre que al pulsar START comience y haga la pausa. me falta añadir los demás tiempos.