far lampeggiare display 7 segmenti in multiplex

che cosa si potrebbe fare per far lampeggiare metà dei display a 7 segmenti che sono gia pilotati IN MULTIPLEX in determinate condizioni
es: se (if) temperatura <30 gradi 2 display (quelli che segnano la temperatura ) lampeggiano, gli altri invece restano accesi fissi (altri 2 display)

Puoi semplicemente aggiungere un check con millis all'interno della tua routine di visualizzazione in multiplex dove metti ad esempio un controllo per cui ogni 500 ms inverti lo stato di una variabile. Se la variabile è false o 0, il display è spento, se è true o 1 visualizzi (in mutiplex) i dati

leo72:
Puoi semplicemente aggiungere un check con millis all'interno della tua routine di visualizzazione in multiplex dove metti ad esempio un controllo per cui ogni 500 ms inverti lo stato di una variabile. Se la variabile è false o 0, il display è spento, se è true o 1 visualizzi (in mutiplex) i dati

quindi è come avevo pensato, millis è l'unica ( o c'è altro? ) delay non se ne parla neppure
se no blinka tutto :.

Con delay non puoi perché ti blocca il codice per cui durante il delay non puoi multiplexare il display.

Potresti provare ad usare il leOS :stuck_out_tongue_closed_eyes:
Crei 2 task. Il primo task lo imposti per il multiplexing del display, così che visualizzi le info.
Se si attiva l'allarme, crei un secondo task che mette in pausa e riattiva il primo ad intervalli cadenzati. Terminata la situazione di allarme, cancelli il secondo task e lasci andare il primo :wink:

Non so se funziona né se hai altre librerie nel tuo codice che potrebbero usare il timer 2.

leo72:
Con delay non puoi perché ti blocca il codice per cui durante il delay non puoi multiplexare il display.

Potresti provare ad usare il leOS :stuck_out_tongue_closed_eyes:
Crei 2 task. Il primo task lo imposti per il multiplexing del display, così che visualizzi le info.
Se si attiva l'allarme, crei un secondo task che mette in pausa e riattiva il primo ad intervalli cadenzati. Terminata la situazione di allarme, cancelli il secondo task e lasci andare il primo :wink:

Non so se funziona né se hai altre librerie nel tuo codice che potrebbero usare il timer 2.

allora: il miniprogetto deve fare queste cose 2 coppie di cifre una misura la pressione 0-2,5 bar una misura la temperatura da -9 a 99 gradi,
piu 2 led che segnalano 2 elettrovalvole a 12 volt, se sono aperte

se le 2 elettrovalvole sono entrambe aperte e la temperatura e sotto trenta gradi la temperatura deve lampeggiare

se la pressione è a 0',9 o meno la pressione deve lapeggiare
se la pressione è a piu di 2 bar la presiione deve lampeggiare

Ci sono tanti modi per farlo.
Come detto, il più semplice è usare millis e alternare la visualizzazione del display per simulare il lampeggio. L'ho già fatto, è semplicissimo. Si tratta solo di mettere nel codice del multiplex un check su una variabile di controllo: se è 1/true, fai vedere i dati, se è 0/false no.
Nel loop principale metti un check su millis. Dai l'intervallo che piace a te e poi alterni la variabile suddetta. Fine.

Ovviamente il check su millis è attivo se è attiva la condizione di allarme. Una cosa del genere, in blocchi:

  1. controllo stato
  2. lo stato è a posto? Sì, variabile su NoLampeggio e salto a 6)
  3. No, check su millis.
  4. E' passato l'intervallo preposto?
  5. Sì, alterno la variabile tra NoLampeggio e SìLampeggio
  6. chiamo il multiplex
  7. torno a 1)