Vai al contenuto
PLC Forum


Arduino: un pulsante che richiama tre temporizzazioni


Fabri82

Messaggi consigliati

Ciao a tutti e scusate se "rompo" con i miei dilemmi 🤯😁.

Mi sto avvicinando al mondo Arduino e al linguaggio C++. Qualcosina riesco a fare ma limitandomi a leggere valori in ingresso e facendo piccole elaborazioni di tali dati.

Oltre ad un controllo sulla temperatura della mia caldaia (mio post precedente) sto cercando di implementare un'altro progettino che riguarda l'irrigazione del mio orto.

In poche parole ho tre pulsanti che comandano 3 uscite digitali ognuna delle quali mi abilita un relè per un determinato tempo.

Quindi:

Pulsante 1 --> Attiva Relè 1 per 5 minuti

Pulsante 2 --> Attiva Relè 2 per 10 minuti

Pulsante 3 --> Attiva Relè 3 per 4 minuti

 

Queste operazioni banali le ho scritte utilizzando un semplice delay per ciascuna uscita/relè. Tutto bene.

 

Vorrei utilizzare un quarto pulsante che mi faccia la serie di tutti e tre gli stati. Ovvero che una volta premuto mi faccia partire il Relè1 per 5 min, poi il Relè 2 per 10min per concludere poi con il Relè 3 per 4 minuti. Vorrei in pratica che venga eseguita la sequenza delle tre uscite (termina la prima si passa alla seconda e così via).

Con i delay non risulta difficile ma mi sembra una soluzione che spreca righe di programma.

Pensavo ad un ciclo FOR ma non riesco a elaborarlo in termini di istruzioni...

Sarebbe perfetto, forse, definire i tre tempi (T1, T2 e T3) in funzioni distinte ed eseguirle in serie quando premo il Pulsante 4.

 

Riuscireste a indicarmi un mini Sketch?

 

Perdonate l'ignoranza....so che in fin dei conti è una scemata ma sinceramente mi sono incartato!

Grazie sin d'ora.

 

 

Link al commento
Condividi su altri siti


8 ore fa, Fabri82 ha scritto:

le ho scritte utilizzando un semplice delay per ciascuna uscita/relè.

 

Non bene. L'istruzione delay è bloccante, va usata con estrema parsimonia, insomma ...quasi mai.

Meglio usare i timer o l'istruzione millis(), che ritorna un long contenente il tempo, in millisecondi, dall'avvio del programma.

 

 

9 ore fa, Fabri82 ha scritto:

Riuscireste a indicarmi un mini Sketch?

 

Ti do un'idea.

Quando riconosci il quarto pulsante premuto alzi un flag, ovvero metti HIGH una variabile booleana.

Avrai anche assegnato altri 3 flags ai tre relè; ad esempio: flg_rl1, flg_rl2, flg_rl3

Con questo flag alto tesi lo stato dei 3 flag dei 3 relè se sono tutti LOW alzi flg_rl1 e fai partire il tempo del relè 1 ed alzi l'uscita corrispondente.

A tempo scaduto, abbassi uscita e flag, alzi flag e uscita del relè 2 poi, a tempo esaurito, abbassi il due e alzi il 3. Al termine del tempo per il 3 abbassi uscita del relè, flag ed il flag legato al pulsante.

 

Non ti scrivo le istruzioni perchè altrimenti non c'è didattica.

Se vuoi comincia a scrivere un programma e, se hai dei dubbi o delle difficoltà, vediamo di risolverle assieme.

Link al commento
Condividi su altri siti

2 ore fa, Livio Orsini ha scritto:

Non ti scrivo le istruzioni perchè altrimenti non c'è didattica.

Ciao Livio e grazie mille per le dritte. Vedo di provare a metterle in pratica 👍.

In effetti hai ragione...meglio arrivarci da solo altrimenti rischio non imparare mai 😅.

 

Ti aggiorno sui miei sviluppi!!

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...