no ma figurati, quale offesa, anzi graize che perdete tempo ad aiutarmi!!
anche percè è proprio così come dici tu!!!
cioè, ho benissimo in testa cosa voglio....mentre il come arrivarci è piuttosto nebuloso 
del diagramma di vittorio non mi torna questo:
vittorio68:
Proviamo a pensare insieme agli stati:
-
Stato ATTESA: se A = 0 non succede nulla; se A = 1 metti C = 1 e passi nello stato TIME90 (90 minuti = 1,5 ore)
-
Stato TIME90: Se A = 0 metti C = 0 e torni nello stato ATTESA; se A = 1 incrementi la variabile secondiTrascorsi; se secondiTrascorsi < 5400 non fai nulla, se secondiTrascorsi >= 5400 metti C = 0 e passi nello stato TIME20
-
Stato TIME20: Se A = 0 metti C = 0 e torni nello stato ATTESA; se A = 1 incrementi la variabile secondiTrascorsi; se secondiTrascorsi < 1200 non fai nulla, se secondiTrascorsi >= 1200 metti C = 1 e passi nello stato TIME30
-
Stato TIME30: Se A = 0 metti C = 0 e torni nello stato ATTESA; se A = 1 incrementi la variabile secondiTrascorsi; se secondiTrascorsi < 1800 non fai nulla, se secondiTrascorsi >= 1800 metti C = 0 e passi nello stato TIME20
Lo stato in cui sei lo gestisci con una variabile (la chiamiamo stato???) che assumerà quattro valori: ATTESA, TIME90, TIME20, TIME30. Per questo puoi usare una enum.
Nella loop userai uno switch per decidere cosa fare ad ogni ciclo in base allo stato in cui sei.
Si tratta solo dell'idea di base, adesso riflettici e prova a buttare giù il codice, poi postalo e lo guardiamo insieme. Se invece hai ancora dubbi chiedi pure.
Ciao.
Vittorio.
-lo stato ATTESA: SE A=0 non succede nulla se A=1 -> C=1 e passo allo stato TIME90 (tutto chiaro e tutto corretto)
- stato TIME90: Se A = 0 metti C = 0 e torni nello stato ATTESA; se A = 1 incrementi la variabile secondiTrascorsi; se secondiTrascorsi < 5400 non fai nulla, se secondiTrascorsi >= 5400 metti C = 0 e passi nello stato TIME20
ecco questo punto mi confonde un pochino....in una macchina a stati, posso fare questa operazione che "scrivo in prosa"? sarebbe: l'uscita è attiva quindi A=1 ok allora accendo C=1....e conto un secondo....poi riverifico...A=1? se si allora conto il un altro secondo (e siamo a 2) e verifico che il totale dei secondi contati sia inferiore a 5400. Siamo a 2 secondi, quidni ok -> rifaccio il controllo A=1? se si...allora conto un altro secondo (e siamo a 3) e verifico ancora che il totale dei secondi (3) sia < 5400....lo è....quindi procedo ancora....
se in una di queste fasi A=0 torno allo stato attesa
se il controllo secondi trascorsi >=5400 allora vado allo stato TIME20
-stato time20: funziona esattamente come lo stato time90 come logica...
stato time30 funziona esattamente come lo stato time20 come logica
e qui l'ultima complicazione che non capisco....ora..che ho finito lo stato time30....controllo nuovamente l'ingresso A=1? se si....devo tornare allo stato TIME20 , poi allo stato TIME30 poi allo stato TIME20 , poi allo stato TIME30, allo stato TIME20 , poi allo stato TIME30, allo stato TIME20 , poi allo stato TIME30.....e così via...controllando sempre che A=1, se in qualsiasi stato A=0 torno allo stato ATTESA
bene, ora, se ho ben compreso quello che ha scritto Vittorio...e se quello che ho scritto in prosa è verificato...ehmmm.....non saprei proprio come scriverlo.. 
mi scuso ancora....per le castronerie e banalità che scrivo...e grazie per il tempo che mi dedicate!