3 timer in un loop [Risolto]

Avrei bisogno di un aiutino per gestire 3 timer con una particolarità:
finito tutti e tre i conteggi, si deve fermare , e riavviarsi se premo un pulsante dal timer B
e qui mi son fermato perchè non riesco a richiamare il punto B.
il codice è questo

#include <LiquidCrystal.h>

int a= 10; //  Timer A 5 minuti sarebbero 300 secondi ma per comodità del test solo 10
int b = 10; // Timer B 10 secondi
int c = 20; // Timer C 20 secondi
int x = 0; // variabile usata dal for
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.setCursor(0,0);
  lcd.print("Timer A");
  lcd.setCursor(7,1);
}
void loop() {
  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):

  // print the number of seconds since reset:
  for (x=a;a>0;a--) // Questo è il punto A, partenza del primo timer da eseguire solo una volta
  {
    lcd.setCursor(7,1);
    lcd.print(a);
    delay (1000);
  }
  lcd.clear();
  for (x=b;b>0;b--) // Questo è il punto B, dove vorrei farci tornare il programma
  {
    lcd.setCursor(0,0);
    lcd.print("Timer B");
    lcd.setCursor(7,1);
    lcd.print(b);
    delay (1000);
  }
for (x=c;c>0;c--)
{
  lcd.setCursor(0,0);
  lcd.print("Timer C"); // Questo è il punto C
  lcd.setCursor(7,1);
  lcd.print(c);
  delay (1000);
}
}

perdonami, perchè non fai un edit al post e sposti il codice dentro [code [/code (ovviamente chiudendo le quadre..)

Pepsi:
Avrei bisogno di un aiutino per gestire 3 timer con una particolarità:
finito tutti e tre i conteggi, si deve fermare , e riavviarsi se premo un pulsante dal timer B

Vediamo se ho capito:

  • hai 3 timer che vengono eseguiti in sequenza: prima il timer A, poi il timer B, poi il timer C
  • se non succede nulla, terminato il timer C, il programma riparte eseguendo il timer A
  • se l'utente preme un tasto SOLO all'interno del timer B, il programma deve ripartire dal timer A

e qui mi son fermato perchè non riesco a richiamare il punto B.

e qual è il "punto B"?

Dovrebbe funzionare cosi :
all'avvio Parte il primo timer, che conterebbe fino a 300 ma per comodità delle prove lo setto a 10 secondi.
Finito il conto alla rovecia del primo timer (A), parte il secondo timer (B), ed è dal secondo timer che vorro' ritornare dopo che ha eseguito anche il terzo conteggio, il timer (c).
Finito tutti e tre i timer, deve apparire un messaggio sul display che è in attesa di premere il pulsante, dopodichè riparte dal timer B e il timer C, e ritorna sempre con quel messaggio all'inizio del timer B
timer A ...........bla bla bla
timer B ............ bla bla bla
timer C.............. bla bla bla
ritorno al timer B. se premo il pulsante esegue Timer B e timer C, e cosi si ripete se non premo niente rimane in attesa .

Scritto "a getto", dovrebbe funzionare. Al max occorrono piccole correzioni

void loop() {
  timerA();
  cicloInfinito();
}

void timerA() {
  for (x=a;a>0;a--) {
    lcd.setCursor(7,1);
    lcd.print(a);
    delay (1000);
  }
  lcd.clear();
}

void cicloInfinito() {
  for (x=b;b>0;b--) {
    lcd.setCursor(0,0);
    lcd.print("Timer B");
    lcd.setCursor(7,1);
    lcd.print(b);
    delay (1000);
  }
  for (x=c;c>0;c--) {
    lcd.setCursor(0,0);
    lcd.print("Timer C"); // Questo è il punto C
    lcd.setCursor(7,1);
    lcd.print(c);
    delay (1000);
  }
  while (digitalRead(PIN_PULSANTE)!=HIGH); {
  // metti un pulsantino con pull-down da 10K
  }
}

Grazie leo, pero' a dire il vero una volta premuto non dice di nuovo Timer B e conteggio, rimane vuoto lcd.. comunque dovrei risolvere. Non pensavo funzionasse dichiarando nuovi loop . Il C è un po' nuovo per me che vengo dal basic..

Io ho imparato a programmare col Commodore BASIC ma qui è una questione di logica, non di linguaggio usato.

PS: le scritte le devi rimettere, devi completare il codice per i messaggi a video, io non li ho messi.

Certo io pure, il commodore è stato il mio primo computer..
diomio che ricordi..
purtoppo non ho mai imparato il C, con il basic , ci arrivavo da solo.. if then gosub ..era gia fatto
Dicevo, riguardo al tuo intervento, le scritte a parte ci ho messo lcd.print("pulsante premuto") che non appare , ma nemmeno ritorna a dire timer B 10- 9- 8 - 7 - 6 - 5..
la parentesi graffa sotto dovrebbe chiudere il ciclo e farlo riportare alla sua "gemella", ma cosi non avviene.

Ho capito il perchè.... B ha gia raggiunto 0...
Infatti ora funziona... Grazie Leo Gentilissimo !