allora ho fatto la modifica e ho tolto un pulsante
quindi ha solo un pulsante che se se preme accende
e se si preme di nuovo si spegne (a condizione che il timer sia acceso da almeno un secondo)
quindi
si preme il pulsante e si accende,
si regola il tempo col potenziomentro i 2 display a 3 cifre segnano tutti e due lo stesso tempo,
si accende la lampada/led e un display inizia il conto alla rovescia
appena arriva a zero la lampada /led si spegne e dopo 20 secondi si spegne del tutto
e se necessario si preme il pulsantino e si spegne tutto
che dite potrebbe bastare??
float spegnimento;
float ritardominuti;
//float xminuti;
float ritardo;
float ritardo2;
float ritardoautospegnimento;
int C1;
int C2;
int C3;
int ktempo;
int tempo;
int sfarfallio;
int CFR1;
int CFR2;
int CFR3;
float secondi;
int K;
int a;
int b;
int c;
int d;
int E;
int F;
int G;
int H;
void setup () {
//Serial.begin(9600);
pinMode (0, OUTPUT);
pinMode (1, INPUT);
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
pinMode (17, OUTPUT);
pinMode (18, OUTPUT);
pinMode (19, OUTPUT);
digitalWrite (0, HIGH); //pin rele autoaccensione/autospegnimento
digitalWrite (3, HIGH); //seconda cifra
digitalWrite (4, HIGH); //prima cifra
digitalWrite (2, HIGH); //segmento f sinistra,alto
digitalWrite (5, HIGH); //segmento e sinistra,basso
digitalWrite (6, HIGH); //segmento d basso
digitalWrite (7, HIGH); //segmento c destra,basso
digitalWrite (8, HIGH); //segmento b destra,alto
digitalWrite (9, HIGH); //segmento a alto
digitalWrite (10, HIGH); //segmento g centrale
digitalWrite (11, HIGH); //terza cifra
digitalWrite (12, HIGH); //quarta cifra
digitalWrite (18, HIGH); // quinta cifra
digitalWrite (19, HIGH); // quinta cifra
digitalWrite (17, LOW); //USCITA RELE'
digitalWrite (13, HIGH); //USCITA RELE'
}
void loop ()
{
////////////////////////////////////////////////
////////////////////////////////////////////////
ritardo = 9 ; ////// tempo attesa in secondi primma del count down 12
////////////////////////////////////////////////
////////////////////////////////////////////////
////// valori
d = 199; ////// iniziali d = 199 ;
////////////////////////////////////////////////
////////////////////////////////////////////////
////// ritardo in secondi prima di spegnbere i spegnere del tutto il timer
ritardoautospegnimento = 20; ////// dopo che il count down e finito
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
////////////////////////////////////////////////
////// da modificare leggermenre se i display presentano sfarfallio
sfarfallio = 3900; ////// provare ad abbassare/alzare di 100 per volta
////////////////////////////////////////////////
////////////////////////////////////////////////
if (d > 999) d=999 ;
a = 0 ; //fanno farte del map
b = 1023 ; //fanno farte del map
c = 1;
E = a ;
F = b;
G = c;
H = d;
ritardo2=ritardo*1000;
C1 = map(analogRead(A0), a, b, c, d);
C2 = map(analogRead(A0), a, b, c, d);
C3 = map(analogRead(A0), a, b, c, d);
secondi = millis()/1000;
if (analogRead (A1) > 15) secondi = millis()/1000; ; //per avere i tempo in minuti mettere al + il pin A4
if (analogRead (A1) <= 15)secondi = millis()/60000 + ritardo;
if (millis() > ritardo2)(K = secondi - ritardo);
if (digitalRead (13) ==HIGH) C1 = C1 - K;
if (digitalRead (13) ==HIGH) C2 = C2- K;
if (digitalRead (13) ==HIGH) C3 = C3 - K;
if (millis() > ritardo2 && digitalRead (13) ==HIGH) digitalWrite (17, HIGH); /
if (C1 <= 0) digitalWrite (17, LOW); // spegne il rele quando C1=0
if (C1 <= 0) digitalWrite (13, LOW); // spegne il led 13 quando C1=0
if (millis() > 1000 && digitalRead (1) ==LOW){ digitalWrite (0, LOW); delay(1000);} // spegne il rele accensione se 1 va alto tramite
//il pulsante ed e passato almeno un secondo dall'accensione
spegnimento=map(analogRead(A0), a, b, c, d)*1000; // trasforma la lettura del display in millisecondi moltiplicandola per 1000
ritardoautospegnimento = ritardoautospegnimento*1000 + ritardo*1000 ;//
if (analogRead (A3) < 15 && millis() > (spegnimento +ritardoautospegnimento))
{digitalWrite (0, LOW); //pin rele autospegnimento
digitalWrite (1, HIGH); //ingresso segnale spegnimento
digitalWrite (3, HIGH); //seconda cifra
digitalWrite (4, HIGH); //prima cifra
digitalWrite (2, HIGH); //segmento f sinistra,alto
digitalWrite (5, HIGH); //segmento e sinistra,basso
digitalWrite (6, HIGH); //segmento d basso
digitalWrite (7, HIGH); //segmento c destra,basso
digitalWrite (8, HIGH); //segmento b destra,alto
digitalWrite (9, HIGH); //segmento a alto
digitalWrite (10, HIGH); //segmento g centrale
digitalWrite (11, HIGH); //terza cifra
digitalWrite (12, HIGH); //quarta cifra
digitalWrite (18, HIGH); // quinta cifra
digitalWrite (19, HIGH); // sesta cifra
digitalWrite (17, LOW); // red rele